<?xml version="1.0"?>
<feed xmlns="http://www.w3.org/2005/Atom" xml:lang="en">
	<id>https://wiki.hoodedhorse.com/Heroes_of_Might_and_Magic_Olden_Era/api.php?action=feedcontributions&amp;feedformat=atom&amp;user=76561198048502585</id>
	<title>Heroes of Might and Magic: Olden Era Official Wiki - User contributions [en]</title>
	<link rel="self" type="application/atom+xml" href="https://wiki.hoodedhorse.com/Heroes_of_Might_and_Magic_Olden_Era/api.php?action=feedcontributions&amp;feedformat=atom&amp;user=76561198048502585"/>
	<link rel="alternate" type="text/html" href="https://wiki.hoodedhorse.com/Heroes_of_Might_and_Magic_Olden_Era/Special:Contributions/76561198048502585"/>
	<updated>2026-10-19T20:43:09Z</updated>
	<subtitle>User contributions</subtitle>
	<generator>MediaWiki 1.44.5</generator>
	<entry>
		<id>https://wiki.hoodedhorse.com/Heroes_of_Might_and_Magic_Olden_Era/index.php?title=Patches/v0.80.34_auto&amp;diff=41575</id>
		<title>Patches/v0.80.34 auto</title>
		<link rel="alternate" type="text/html" href="https://wiki.hoodedhorse.com/Heroes_of_Might_and_Magic_Olden_Era/index.php?title=Patches/v0.80.34_auto&amp;diff=41575"/>
		<updated>2026-10-14T08:51:48Z</updated>

		<summary type="html">&lt;p&gt;76561198048502585: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{Patch | version=0.80.34}}&lt;br /&gt;
&lt;br /&gt;
[[Category:Patch Display]]&lt;/div&gt;</summary>
		<author><name>76561198048502585</name></author>
	</entry>
	<entry>
		<id>https://wiki.hoodedhorse.com/Heroes_of_Might_and_Magic_Olden_Era/index.php?title=Patches/v0.81.02_auto&amp;diff=41574</id>
		<title>Patches/v0.81.02 auto</title>
		<link rel="alternate" type="text/html" href="https://wiki.hoodedhorse.com/Heroes_of_Might_and_Magic_Olden_Era/index.php?title=Patches/v0.81.02_auto&amp;diff=41574"/>
		<updated>2026-10-14T08:51:47Z</updated>

		<summary type="html">&lt;p&gt;76561198048502585: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{Patch | version=0.81.02}}&lt;br /&gt;
&lt;br /&gt;
[[Category:Patch Display]]&lt;/div&gt;</summary>
		<author><name>76561198048502585</name></author>
	</entry>
	<entry>
		<id>https://wiki.hoodedhorse.com/Heroes_of_Might_and_Magic_Olden_Era/index.php?title=Template:Patch&amp;diff=41573</id>
		<title>Template:Patch</title>
		<link rel="alternate" type="text/html" href="https://wiki.hoodedhorse.com/Heroes_of_Might_and_Magic_Olden_Era/index.php?title=Template:Patch&amp;diff=41573"/>
		<updated>2026-10-14T08:51:47Z</updated>

		<summary type="html">&lt;p&gt;76561198048502585: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&amp;lt;includeonly&amp;gt;&amp;lt;!--&lt;br /&gt;
--&amp;gt;&amp;lt;templatestyles src=&amp;quot;Template:Patch/styles.css&amp;quot; /&amp;gt;&amp;lt;!--&lt;br /&gt;
--&amp;gt;Patch {{b|v{{{version}}}}} was released on {{PatchDate|{{{version}}}}}.&lt;br /&gt;
&lt;br /&gt;
The changes below were detected automatically. For the official release notes, see [[Patches/v{{{version}}}]].&lt;br /&gt;
&lt;br /&gt;
== Automated Patch Notes ==&lt;br /&gt;
&lt;br /&gt;
&amp;lt;table class=&#039;patch-table wikitable sortable&#039;&amp;gt;&lt;br /&gt;
&amp;lt;!--======== HEADER ==========================================================--&amp;gt;&lt;br /&gt;
&amp;lt;!-- TODO: move the following code to a separate template --&amp;gt;&lt;br /&gt;
    &amp;lt;tr&amp;gt;&lt;br /&gt;
        &amp;lt;th&amp;gt;Target&amp;lt;/th&amp;gt;&lt;br /&gt;
        &amp;lt;th&amp;gt;Note&amp;lt;/th&amp;gt;&lt;br /&gt;
    &amp;lt;/tr&amp;gt;&lt;br /&gt;
    {{#cargo_query:&lt;br /&gt;
        tables = PatchNote = N&lt;br /&gt;
        | where =&lt;br /&gt;
            N.patch = &amp;quot;{{{version}}}&amp;quot;&lt;br /&gt;
            AND (N.lang = &amp;quot;{{{lang|en}}}&amp;quot; OR N.lang IS NULL)&lt;br /&gt;
        | fields =&lt;br /&gt;
            N.id = id,&lt;br /&gt;
            N.field = field,&lt;br /&gt;
            N.summary = summary,&lt;br /&gt;
            CONCAT(&amp;quot;{{{lang|en}}}&amp;quot;) = lang,&lt;br /&gt;
        | format = template&lt;br /&gt;
        | template = Patch/row&lt;br /&gt;
        | named args = yes&lt;br /&gt;
        | default = Cannot find patch &amp;quot;{{{id}}}&amp;quot;.&lt;br /&gt;
    }}&lt;br /&gt;
&amp;lt;/table&amp;gt;&lt;br /&gt;
Source: [[Data:Patches/v{{{version}}}]]&lt;br /&gt;
&lt;br /&gt;
    &amp;lt;!--&lt;br /&gt;
--&amp;gt;&amp;lt;/includeonly&amp;gt;&amp;lt;!--&lt;br /&gt;
################################################################################&lt;br /&gt;
--&amp;gt;&amp;lt;noinclude&amp;gt;&lt;br /&gt;
Finds the patch notes for a particular patch version.&lt;br /&gt;
&lt;br /&gt;
{{Color|yellow|Input:}}&lt;br /&gt;
&amp;lt;code&amp;gt;&amp;lt;nowiki&amp;gt;{{Patch | version=0.80.34}}&amp;lt;/nowiki&amp;gt;&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
{{Color|lime|Output:}}&lt;br /&gt;
{{Patch | version=0.80.34}}&lt;br /&gt;
&lt;br /&gt;
__NOTOC__&lt;br /&gt;
&amp;lt;/noinclude&amp;gt;&lt;/div&gt;</summary>
		<author><name>76561198048502585</name></author>
	</entry>
	<entry>
		<id>https://wiki.hoodedhorse.com/Heroes_of_Might_and_Magic_Olden_Era/index.php?title=Patches/v0.80.34&amp;diff=41572</id>
		<title>Patches/v0.80.34</title>
		<link rel="alternate" type="text/html" href="https://wiki.hoodedhorse.com/Heroes_of_Might_and_Magic_Olden_Era/index.php?title=Patches/v0.80.34&amp;diff=41572"/>
		<updated>2026-10-14T08:51:46Z</updated>

		<summary type="html">&lt;p&gt;76561198048502585: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{DISPLAYTITLE:Patch v0.80.34 (Patch #12: Bug Fixes &amp;amp; Improvements)}}&lt;br /&gt;
Patch {{b|0.80.34}} was released on {{PatchDate|0.80.34}}.&lt;br /&gt;
&lt;br /&gt;
For automatically detected differences, see [[Patches/v0.80.34_auto]].&lt;br /&gt;
&lt;br /&gt;
== Dev Notes ==&lt;br /&gt;
Following Patch #11, we&#039;ve put together a smaller follow-up patch addressing bugs and rough edges that surfaced after its release. No sweeping changes this time — just a focused round of fixes to make sure everything introduced in Patch #11 is working as intended.&lt;br /&gt;
&lt;br /&gt;
Full patch notes are below. Good luck on the battlefield!&lt;br /&gt;
&lt;br /&gt;
== Bug Fixes ==&lt;br /&gt;
* Jebus Tournament: The absence of a player’s starting hero at the beginning of a tournament battle no longer crashes the game.&lt;br /&gt;
* Fixed the hotkey for &amp;quot;Heroic Strike&amp;quot;.&lt;br /&gt;
* Fixed a bug where the match timer incorrectly continued running for both players while simultaneous turns were stopped.&lt;br /&gt;
* An enemy hero executing a strike while under the effect of &amp;quot;Mirage&amp;quot; no longer crashes the game.&lt;br /&gt;
* An opponent leaving Arena Mode while selecting a target for an ability no longer crashes the game.&lt;br /&gt;
&lt;br /&gt;
== Balance ==&lt;br /&gt;
* Balance adjustments from the previous patch over-nerfed Magic heroes in Arena Mode; as a result, we are decreasing the starting unit counts offered during the draft phase.&lt;br /&gt;
* &amp;quot;Sorcery&amp;quot;: Magic Damage bonus increased: 10/20/30% → 20/30/40%.&lt;br /&gt;
* Magic Damage specialists (Sorcery specialists) have been adjusted: they now gain a 15% + 5% bonus per 3 hero levels (previously 10% + 1% per 1 hero level).&lt;br /&gt;
* &amp;quot;Stables&amp;quot; have been completely blocked from generating on Sprint template (for good this time, good riddance).&lt;br /&gt;
* The size of the player starting areas on Jebus Tournament template has been slightly reduced. Guard strength for both standard guards and central area gatekeepers has been slightly decreased.&lt;br /&gt;
* &amp;quot;Point of Balance&amp;quot; objects can no longer generate in players&#039; side areas on Helltide.&lt;br /&gt;
&lt;br /&gt;
== Localization ==&lt;br /&gt;
* Fixed a translation memory error where the Chinese localization for Angels (and Archangels) was accidentally reverted to 光明者. The correct official term (天使) has been fully restored.&lt;br /&gt;
&lt;br /&gt;
== External Links ==&lt;br /&gt;
* [https://steamcommunity.com/games/3105440/announcements/detail/668369251018481275 Official Post]&lt;br /&gt;
&lt;br /&gt;
__NOTOC__&lt;br /&gt;
[[Category:Patch Notes]]&lt;/div&gt;</summary>
		<author><name>76561198048502585</name></author>
	</entry>
	<entry>
		<id>https://wiki.hoodedhorse.com/Heroes_of_Might_and_Magic_Olden_Era/index.php?title=Module:Patch&amp;diff=41571</id>
		<title>Module:Patch</title>
		<link rel="alternate" type="text/html" href="https://wiki.hoodedhorse.com/Heroes_of_Might_and_Magic_Olden_Era/index.php?title=Module:Patch&amp;diff=41571"/>
		<updated>2026-10-14T08:13:18Z</updated>

		<summary type="html">&lt;p&gt;76561198048502585: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;-- Usage: see Module:Patch/doc&lt;br /&gt;
local p = {}&lt;br /&gt;
&lt;br /&gt;
-- Displays a variable&lt;br /&gt;
------------------------------------------------------------------------------------------------------------------------&lt;br /&gt;
local function dump(target)&lt;br /&gt;
    return &#039;&amp;lt;pre&amp;gt;&#039; .. mw.dumpObject(target) .. &#039;&amp;lt;/pre&amp;gt;&#039;&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
--&lt;br /&gt;
------------------------------------------------------------------------------------------------------------------------&lt;br /&gt;
local function renderSkillLink(id, lang, field, frame)&lt;br /&gt;
    local template = &#039;{{Skill&#039;&lt;br /&gt;
        .. &#039;| id=&#039; .. id&lt;br /&gt;
        .. &#039;| level=&#039; .. (field:match(&amp;quot;level_(%d+)&amp;quot;) or &#039;&#039;)&lt;br /&gt;
        .. &#039;| lang=&#039; .. lang&lt;br /&gt;
        .. &#039;}}&#039;&lt;br /&gt;
    return frame:preprocess(template)&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
--&lt;br /&gt;
------------------------------------------------------------------------------------------------------------------------&lt;br /&gt;
local function renderHeroLink(id, lang, frame)&lt;br /&gt;
    local template = &#039;{{LinkIcon&#039;&lt;br /&gt;
        .. &#039;| id=&#039; .. id&lt;br /&gt;
        .. &#039;| type=hero&#039;&lt;br /&gt;
        .. &#039;| filename=1&#039;&lt;br /&gt;
        .. &#039;| lang=&#039; .. lang&lt;br /&gt;
        .. &#039;}}&#039;&lt;br /&gt;
    return frame:preprocess(template)&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
--&lt;br /&gt;
------------------------------------------------------------------------------------------------------------------------&lt;br /&gt;
local function renderArtifactLink(id, lang, frame)&lt;br /&gt;
    local template = &#039;{{LinkIcon&#039;&lt;br /&gt;
        .. &#039;| id=&#039; .. id&lt;br /&gt;
        .. &#039;| type=artifact&#039;&lt;br /&gt;
        .. &#039;| lang=&#039; .. lang&lt;br /&gt;
        .. &#039;}} (Artifact)&#039;&lt;br /&gt;
    return frame:preprocess(template)&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
--&lt;br /&gt;
------------------------------------------------------------------------------------------------------------------------&lt;br /&gt;
local function renderSpellLink(id, lang, frame)&lt;br /&gt;
    local template = &#039;{{Spell&#039;&lt;br /&gt;
        .. &#039;| id=&#039; .. id&lt;br /&gt;
        .. &#039;| lang=&#039; .. lang&lt;br /&gt;
        .. &#039;}}&#039;&lt;br /&gt;
    return frame:preprocess(template)&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
--&lt;br /&gt;
------------------------------------------------------------------------------------------------------------------------&lt;br /&gt;
local function renderGeneric(id, lang, frame)&lt;br /&gt;
    local template = &#039;{{LinkIcon&#039;&lt;br /&gt;
        .. &#039;| id=&#039; .. id&lt;br /&gt;
        .. &#039;| lang=&#039; .. lang&lt;br /&gt;
        .. &#039;}}&#039;&lt;br /&gt;
    return frame:preprocess(template)&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
--&lt;br /&gt;
------------------------------------------------------------------------------------------------------------------------&lt;br /&gt;
function p.renderLink(frame)&lt;br /&gt;
    local args = frame.args&lt;br /&gt;
    local id = args.id or &#039;&#039;&lt;br /&gt;
    local lang = args.lang or &#039;&#039;&lt;br /&gt;
    local field = args.field or &#039;&#039;&lt;br /&gt;
&lt;br /&gt;
    if id:match(&#039;skill_&#039;) then&lt;br /&gt;
        if id:match(&#039;_sub_&#039;) then&lt;br /&gt;
            id = id:gsub(&#039;_sub_&#039;, &#039;&#039;)&lt;br /&gt;
            id = id:gsub(&#039;_%d&#039;, &#039;&#039;)&lt;br /&gt;
        end&lt;br /&gt;
        return renderSkillLink(id, lang, field, frame)&lt;br /&gt;
    end&lt;br /&gt;
&lt;br /&gt;
    if id:match(&#039;_hero_&#039;) then&lt;br /&gt;
        if id:match(&#039;_specialization&#039;) then&lt;br /&gt;
            id = id:gsub(&#039;_specialization&#039;, &#039;&#039;)&lt;br /&gt;
        end&lt;br /&gt;
        return renderHeroLink(id, lang, frame)&lt;br /&gt;
    end&lt;br /&gt;
&lt;br /&gt;
    if id:match(&#039;_artifact&#039;) then&lt;br /&gt;
        return renderArtifactLink(id, lang, frame)&lt;br /&gt;
    end&lt;br /&gt;
&lt;br /&gt;
    if id:match(&#039;_magic_&#039;) then&lt;br /&gt;
        return renderSpellLink(id, lang, frame)&lt;br /&gt;
    end&lt;br /&gt;
&lt;br /&gt;
    --return renderGeneric(id, lang, frame)&lt;br /&gt;
    return id&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
--&lt;br /&gt;
------------------------------------------------------------------------------------------------------------------------&lt;br /&gt;
local function replaceMarkers(text)&lt;br /&gt;
    return text:gsub(&amp;quot;❮(.-)▸(.-)❯&amp;quot;, &amp;quot;&amp;lt;del&amp;gt;%1&amp;lt;/del&amp;gt;&amp;lt;ins&amp;gt;%2&amp;lt;/ins&amp;gt;&amp;quot;)&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
--&lt;br /&gt;
------------------------------------------------------------------------------------------------------------------------&lt;br /&gt;
local function getOld(text)&lt;br /&gt;
    return text:gsub(&amp;quot;❮(.-)▸(.-)❯&amp;quot;, &amp;quot;%1&amp;quot;)&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
--&lt;br /&gt;
------------------------------------------------------------------------------------------------------------------------&lt;br /&gt;
local function getNew(text)&lt;br /&gt;
    return text:gsub(&amp;quot;❮(.-)▸(.-)❯&amp;quot;, &amp;quot;%2&amp;quot;)&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
--&lt;br /&gt;
------------------------------------------------------------------------------------------------------------------------&lt;br /&gt;
function p.renderText(frame)&lt;br /&gt;
    local args = frame.args&lt;br /&gt;
    local field = args.field or &#039;&#039;&lt;br /&gt;
    local summary = args.summary or &#039;&#039;&lt;br /&gt;
&lt;br /&gt;
    local prefix = field:match(&#039;description&#039;) and &#039;&#039; or (field .. &#039;: &#039;)&lt;br /&gt;
    local replaced = replaceMarkers(summary)&lt;br /&gt;
&lt;br /&gt;
    local collapse = &#039;&amp;lt;div class=&amp;quot;mw-collapsible mw-collapsed&amp;quot;&amp;gt;&#039;&lt;br /&gt;
    collapse = collapse .. &#039;&amp;lt;span class=&amp;quot;mw-collapsible-toggle&amp;quot;&amp;gt;🔽&amp;lt;/span&amp;gt;&#039;&lt;br /&gt;
    collapse = collapse .. &#039;&amp;lt;div class=&amp;quot;mw-collapsible-content&amp;quot;&amp;gt;&#039;&lt;br /&gt;
    collapse = collapse .. &#039;&amp;lt;div&amp;gt;❌ &#039; .. getOld(summary) .. &#039;&amp;lt;/div&amp;gt;&#039;&lt;br /&gt;
    collapse = collapse .. &#039;&amp;lt;div&amp;gt;✅ &#039; .. getNew(summary) .. &#039;&amp;lt;/div&amp;gt;&#039;&lt;br /&gt;
    collapse = collapse .. &#039;&amp;lt;/div&amp;gt;&#039;&lt;br /&gt;
&lt;br /&gt;
    return prefix .. replaced .. collapse&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
return p&lt;/div&gt;</summary>
		<author><name>76561198048502585</name></author>
	</entry>
	<entry>
		<id>https://wiki.hoodedhorse.com/Heroes_of_Might_and_Magic_Olden_Era/index.php?title=Module:Patch&amp;diff=41570</id>
		<title>Module:Patch</title>
		<link rel="alternate" type="text/html" href="https://wiki.hoodedhorse.com/Heroes_of_Might_and_Magic_Olden_Era/index.php?title=Module:Patch&amp;diff=41570"/>
		<updated>2026-10-14T08:10:22Z</updated>

		<summary type="html">&lt;p&gt;76561198048502585: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;-- Usage: see Module:Patch/doc&lt;br /&gt;
local p = {}&lt;br /&gt;
&lt;br /&gt;
-- Displays a variable&lt;br /&gt;
------------------------------------------------------------------------------------------------------------------------&lt;br /&gt;
local function dump(target)&lt;br /&gt;
    return &#039;&amp;lt;pre&amp;gt;&#039; .. mw.dumpObject(target) .. &#039;&amp;lt;/pre&amp;gt;&#039;&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
--&lt;br /&gt;
------------------------------------------------------------------------------------------------------------------------&lt;br /&gt;
local function renderSkillLink(id, lang, field, frame)&lt;br /&gt;
    local template = &#039;{{Skill&#039;&lt;br /&gt;
        .. &#039;| id=&#039; .. id&lt;br /&gt;
        .. &#039;| level=&#039; .. (field:match(&amp;quot;level_(%d+)&amp;quot;) or &#039;&#039;)&lt;br /&gt;
        .. &#039;| lang=&#039; .. lang&lt;br /&gt;
        .. &#039;}}&#039;&lt;br /&gt;
    return frame:preprocess(template)&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
--&lt;br /&gt;
------------------------------------------------------------------------------------------------------------------------&lt;br /&gt;
local function renderHeroLink(id, lang, frame)&lt;br /&gt;
    local template = &#039;{{LinkIcon&#039;&lt;br /&gt;
        .. &#039;| id=&#039; .. id&lt;br /&gt;
        .. &#039;| type=hero&#039;&lt;br /&gt;
        .. &#039;| filename=1&#039;&lt;br /&gt;
        .. &#039;| lang=&#039; .. lang&lt;br /&gt;
        .. &#039;}}&#039;&lt;br /&gt;
    return frame:preprocess(template)&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
--&lt;br /&gt;
------------------------------------------------------------------------------------------------------------------------&lt;br /&gt;
local function renderArtifactLink(id, lang, frame)&lt;br /&gt;
    local template = &#039;{{LinkIcon&#039;&lt;br /&gt;
        .. &#039;| id=&#039; .. id&lt;br /&gt;
        .. &#039;| type=artifact&#039;&lt;br /&gt;
        .. &#039;| lang=&#039; .. lang&lt;br /&gt;
        .. &#039;}}&#039;&lt;br /&gt;
    return frame:preprocess(template)&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
--&lt;br /&gt;
------------------------------------------------------------------------------------------------------------------------&lt;br /&gt;
local function renderGeneric(id, lang, frame)&lt;br /&gt;
    local template = &#039;{{LinkIcon&#039;&lt;br /&gt;
        .. &#039;| id=&#039; .. id&lt;br /&gt;
        .. &#039;| lang=&#039; .. lang&lt;br /&gt;
        .. &#039;}}&#039;&lt;br /&gt;
    return frame:preprocess(template)&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
--&lt;br /&gt;
------------------------------------------------------------------------------------------------------------------------&lt;br /&gt;
function p.renderLink(frame)&lt;br /&gt;
    local args = frame.args&lt;br /&gt;
    local id = args.id or &#039;&#039;&lt;br /&gt;
    local lang = args.lang or &#039;&#039;&lt;br /&gt;
    local field = args.field or &#039;&#039;&lt;br /&gt;
&lt;br /&gt;
    if id:match(&#039;skill_&#039;) then&lt;br /&gt;
        if id:match(&#039;_sub_&#039;) then&lt;br /&gt;
            id = id:gsub(&#039;_sub_&#039;, &#039;&#039;)&lt;br /&gt;
            id = id:gsub(&#039;_%d&#039;, &#039;&#039;)&lt;br /&gt;
        end&lt;br /&gt;
        return renderSkillLink(id, lang, field, frame)&lt;br /&gt;
    end&lt;br /&gt;
&lt;br /&gt;
    if id:match(&#039;_hero_&#039;) then&lt;br /&gt;
        if id:match(&#039;_specialization&#039;) then&lt;br /&gt;
            id = id:gsub(&#039;_specialization&#039;, &#039;&#039;)&lt;br /&gt;
        end&lt;br /&gt;
        return renderHeroLink(id, lang, frame)&lt;br /&gt;
    end&lt;br /&gt;
&lt;br /&gt;
    if id:match(&#039;_artifact&#039;) then&lt;br /&gt;
        return renderArtifactLink(id, lang, frame)&lt;br /&gt;
    end&lt;br /&gt;
&lt;br /&gt;
    --return renderGeneric(id, lang, frame)&lt;br /&gt;
    return id&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
--&lt;br /&gt;
------------------------------------------------------------------------------------------------------------------------&lt;br /&gt;
local function replaceMarkers(text)&lt;br /&gt;
    return text:gsub(&amp;quot;❮(.-)▸(.-)❯&amp;quot;, &amp;quot;&amp;lt;del&amp;gt;%1&amp;lt;/del&amp;gt;&amp;lt;ins&amp;gt;%2&amp;lt;/ins&amp;gt;&amp;quot;)&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
--&lt;br /&gt;
------------------------------------------------------------------------------------------------------------------------&lt;br /&gt;
local function getOld(text)&lt;br /&gt;
    return text:gsub(&amp;quot;❮(.-)▸(.-)❯&amp;quot;, &amp;quot;%1&amp;quot;)&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
--&lt;br /&gt;
------------------------------------------------------------------------------------------------------------------------&lt;br /&gt;
local function getNew(text)&lt;br /&gt;
    return text:gsub(&amp;quot;❮(.-)▸(.-)❯&amp;quot;, &amp;quot;%2&amp;quot;)&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
--&lt;br /&gt;
------------------------------------------------------------------------------------------------------------------------&lt;br /&gt;
function p.renderText(frame)&lt;br /&gt;
    local args = frame.args&lt;br /&gt;
    local field = args.field or &#039;&#039;&lt;br /&gt;
    local summary = args.summary or &#039;&#039;&lt;br /&gt;
&lt;br /&gt;
    local prefix = field:match(&#039;description&#039;) and &#039;&#039; or (field .. &#039;: &#039;)&lt;br /&gt;
    local replaced = replaceMarkers(summary)&lt;br /&gt;
&lt;br /&gt;
    local collapse = &#039;&amp;lt;div class=&amp;quot;mw-collapsible mw-collapsed&amp;quot;&amp;gt;&#039;&lt;br /&gt;
    collapse = collapse .. &#039;&amp;lt;span class=&amp;quot;mw-collapsible-toggle&amp;quot;&amp;gt;🔽&amp;lt;/span&amp;gt;&#039;&lt;br /&gt;
    collapse = collapse .. &#039;&amp;lt;div class=&amp;quot;mw-collapsible-content&amp;quot;&amp;gt;&#039;&lt;br /&gt;
    collapse = collapse .. &#039;&amp;lt;div&amp;gt;❌ &#039; .. getOld(summary) .. &#039;&amp;lt;/div&amp;gt;&#039;&lt;br /&gt;
    collapse = collapse .. &#039;&amp;lt;div&amp;gt;✅ &#039; .. getNew(summary) .. &#039;&amp;lt;/div&amp;gt;&#039;&lt;br /&gt;
    collapse = collapse .. &#039;&amp;lt;/div&amp;gt;&#039;&lt;br /&gt;
&lt;br /&gt;
    return prefix .. replaced .. collapse&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
return p&lt;/div&gt;</summary>
		<author><name>76561198048502585</name></author>
	</entry>
	<entry>
		<id>https://wiki.hoodedhorse.com/Heroes_of_Might_and_Magic_Olden_Era/index.php?title=Module:Patch&amp;diff=41569</id>
		<title>Module:Patch</title>
		<link rel="alternate" type="text/html" href="https://wiki.hoodedhorse.com/Heroes_of_Might_and_Magic_Olden_Era/index.php?title=Module:Patch&amp;diff=41569"/>
		<updated>2026-10-14T08:10:09Z</updated>

		<summary type="html">&lt;p&gt;76561198048502585: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;-- Usage: see Module:Patch/doc&lt;br /&gt;
local p = {}&lt;br /&gt;
&lt;br /&gt;
-- Displays a variable&lt;br /&gt;
------------------------------------------------------------------------------------------------------------------------&lt;br /&gt;
local function dump(target)&lt;br /&gt;
    return &#039;&amp;lt;pre&amp;gt;&#039; .. mw.dumpObject(target) .. &#039;&amp;lt;/pre&amp;gt;&#039;&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
--&lt;br /&gt;
------------------------------------------------------------------------------------------------------------------------&lt;br /&gt;
local function renderSkillLink(id, lang, field, frame)&lt;br /&gt;
    local template = &#039;{{Skill&#039;&lt;br /&gt;
        .. &#039;| id=&#039; .. id&lt;br /&gt;
        .. &#039;| level=&#039; .. (field:match(&amp;quot;level_(%d+)&amp;quot;) or &#039;&#039;)&lt;br /&gt;
        .. &#039;| lang=&#039; .. lang&lt;br /&gt;
        .. &#039;}}&#039;&lt;br /&gt;
    return frame:preprocess(template)&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
--&lt;br /&gt;
------------------------------------------------------------------------------------------------------------------------&lt;br /&gt;
local function renderHeroLink(id, lang, frame)&lt;br /&gt;
    local template = &#039;{{LinkIcon&#039;&lt;br /&gt;
        .. &#039;| id=&#039; .. id&lt;br /&gt;
        .. &#039;| type=hero&#039;&lt;br /&gt;
        .. &#039;| filename=1&#039;&lt;br /&gt;
        .. &#039;| lang=&#039; .. lang&lt;br /&gt;
        .. &#039;}}&#039;&lt;br /&gt;
    return frame:preprocess(template)&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
--&lt;br /&gt;
------------------------------------------------------------------------------------------------------------------------&lt;br /&gt;
local function renderArtifactLink(id, lang, frame)&lt;br /&gt;
    local template = &#039;{{LinkIcon&#039;&lt;br /&gt;
        .. &#039;| id=&#039; .. id&lt;br /&gt;
        .. &#039;| type=artifact&#039;&lt;br /&gt;
        .. &#039;| filename=1&#039;&lt;br /&gt;
        .. &#039;| lang=&#039; .. lang&lt;br /&gt;
        .. &#039;}}&#039;&lt;br /&gt;
    return frame:preprocess(template)&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
--&lt;br /&gt;
------------------------------------------------------------------------------------------------------------------------&lt;br /&gt;
local function renderGeneric(id, lang, frame)&lt;br /&gt;
    local template = &#039;{{LinkIcon&#039;&lt;br /&gt;
        .. &#039;| id=&#039; .. id&lt;br /&gt;
        .. &#039;| lang=&#039; .. lang&lt;br /&gt;
        .. &#039;}}&#039;&lt;br /&gt;
    return frame:preprocess(template)&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
--&lt;br /&gt;
------------------------------------------------------------------------------------------------------------------------&lt;br /&gt;
function p.renderLink(frame)&lt;br /&gt;
    local args = frame.args&lt;br /&gt;
    local id = args.id or &#039;&#039;&lt;br /&gt;
    local lang = args.lang or &#039;&#039;&lt;br /&gt;
    local field = args.field or &#039;&#039;&lt;br /&gt;
&lt;br /&gt;
    if id:match(&#039;skill_&#039;) then&lt;br /&gt;
        if id:match(&#039;_sub_&#039;) then&lt;br /&gt;
            id = id:gsub(&#039;_sub_&#039;, &#039;&#039;)&lt;br /&gt;
            id = id:gsub(&#039;_%d&#039;, &#039;&#039;)&lt;br /&gt;
        end&lt;br /&gt;
        return renderSkillLink(id, lang, field, frame)&lt;br /&gt;
    end&lt;br /&gt;
&lt;br /&gt;
    if id:match(&#039;_hero_&#039;) then&lt;br /&gt;
        if id:match(&#039;_specialization&#039;) then&lt;br /&gt;
            id = id:gsub(&#039;_specialization&#039;, &#039;&#039;)&lt;br /&gt;
        end&lt;br /&gt;
        return renderHeroLink(id, lang, frame)&lt;br /&gt;
    end&lt;br /&gt;
&lt;br /&gt;
    if id:match(&#039;_artifact&#039;) then&lt;br /&gt;
        return renderArtifactLink(id, lang, frame)&lt;br /&gt;
    end&lt;br /&gt;
&lt;br /&gt;
    --return renderGeneric(id, lang, frame)&lt;br /&gt;
    return id&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
--&lt;br /&gt;
------------------------------------------------------------------------------------------------------------------------&lt;br /&gt;
local function replaceMarkers(text)&lt;br /&gt;
    return text:gsub(&amp;quot;❮(.-)▸(.-)❯&amp;quot;, &amp;quot;&amp;lt;del&amp;gt;%1&amp;lt;/del&amp;gt;&amp;lt;ins&amp;gt;%2&amp;lt;/ins&amp;gt;&amp;quot;)&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
--&lt;br /&gt;
------------------------------------------------------------------------------------------------------------------------&lt;br /&gt;
local function getOld(text)&lt;br /&gt;
    return text:gsub(&amp;quot;❮(.-)▸(.-)❯&amp;quot;, &amp;quot;%1&amp;quot;)&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
--&lt;br /&gt;
------------------------------------------------------------------------------------------------------------------------&lt;br /&gt;
local function getNew(text)&lt;br /&gt;
    return text:gsub(&amp;quot;❮(.-)▸(.-)❯&amp;quot;, &amp;quot;%2&amp;quot;)&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
--&lt;br /&gt;
------------------------------------------------------------------------------------------------------------------------&lt;br /&gt;
function p.renderText(frame)&lt;br /&gt;
    local args = frame.args&lt;br /&gt;
    local field = args.field or &#039;&#039;&lt;br /&gt;
    local summary = args.summary or &#039;&#039;&lt;br /&gt;
&lt;br /&gt;
    local prefix = field:match(&#039;description&#039;) and &#039;&#039; or (field .. &#039;: &#039;)&lt;br /&gt;
    local replaced = replaceMarkers(summary)&lt;br /&gt;
&lt;br /&gt;
    local collapse = &#039;&amp;lt;div class=&amp;quot;mw-collapsible mw-collapsed&amp;quot;&amp;gt;&#039;&lt;br /&gt;
    collapse = collapse .. &#039;&amp;lt;span class=&amp;quot;mw-collapsible-toggle&amp;quot;&amp;gt;🔽&amp;lt;/span&amp;gt;&#039;&lt;br /&gt;
    collapse = collapse .. &#039;&amp;lt;div class=&amp;quot;mw-collapsible-content&amp;quot;&amp;gt;&#039;&lt;br /&gt;
    collapse = collapse .. &#039;&amp;lt;div&amp;gt;❌ &#039; .. getOld(summary) .. &#039;&amp;lt;/div&amp;gt;&#039;&lt;br /&gt;
    collapse = collapse .. &#039;&amp;lt;div&amp;gt;✅ &#039; .. getNew(summary) .. &#039;&amp;lt;/div&amp;gt;&#039;&lt;br /&gt;
    collapse = collapse .. &#039;&amp;lt;/div&amp;gt;&#039;&lt;br /&gt;
&lt;br /&gt;
    return prefix .. replaced .. collapse&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
return p&lt;/div&gt;</summary>
		<author><name>76561198048502585</name></author>
	</entry>
	<entry>
		<id>https://wiki.hoodedhorse.com/Heroes_of_Might_and_Magic_Olden_Era/index.php?title=Module:Patch&amp;diff=41568</id>
		<title>Module:Patch</title>
		<link rel="alternate" type="text/html" href="https://wiki.hoodedhorse.com/Heroes_of_Might_and_Magic_Olden_Era/index.php?title=Module:Patch&amp;diff=41568"/>
		<updated>2026-10-14T08:06:48Z</updated>

		<summary type="html">&lt;p&gt;76561198048502585: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;-- Usage: see Module:Patch/doc&lt;br /&gt;
local p = {}&lt;br /&gt;
&lt;br /&gt;
-- Displays a variable&lt;br /&gt;
------------------------------------------------------------------------------------------------------------------------&lt;br /&gt;
local function dump(target)&lt;br /&gt;
    return &#039;&amp;lt;pre&amp;gt;&#039; .. mw.dumpObject(target) .. &#039;&amp;lt;/pre&amp;gt;&#039;&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
--&lt;br /&gt;
------------------------------------------------------------------------------------------------------------------------&lt;br /&gt;
local function renderSkillLink(id, lang, field, frame)&lt;br /&gt;
    local template = &#039;{{Skill&#039;&lt;br /&gt;
        .. &#039;| id=&#039; .. id&lt;br /&gt;
        .. &#039;| level=&#039; .. (field:match(&amp;quot;level_(%d+)&amp;quot;) or &#039;&#039;)&lt;br /&gt;
        .. &#039;| lang=&#039; .. lang&lt;br /&gt;
        .. &#039;}}&#039;&lt;br /&gt;
    return frame:preprocess(template)&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
--&lt;br /&gt;
------------------------------------------------------------------------------------------------------------------------&lt;br /&gt;
local function renderHeroLink(id, lang, frame)&lt;br /&gt;
    local template = &#039;{{LinkIcon&#039;&lt;br /&gt;
        .. &#039;| id=&#039; .. id&lt;br /&gt;
        .. &#039;| type=hero&#039;&lt;br /&gt;
        .. &#039;| filename=1&#039;&lt;br /&gt;
        .. &#039;| lang=&#039; .. lang&lt;br /&gt;
        .. &#039;}}&#039;&lt;br /&gt;
    return frame:preprocess(template)&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
--&lt;br /&gt;
------------------------------------------------------------------------------------------------------------------------&lt;br /&gt;
local function renderGeneric(id, lang, frame)&lt;br /&gt;
    local template = &#039;{{LinkIcon&#039;&lt;br /&gt;
        .. &#039;| id=&#039; .. id&lt;br /&gt;
        .. &#039;| lang=&#039; .. lang&lt;br /&gt;
        .. &#039;}}&#039;&lt;br /&gt;
    return frame:preprocess(template)&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
--&lt;br /&gt;
------------------------------------------------------------------------------------------------------------------------&lt;br /&gt;
function p.renderLink(frame)&lt;br /&gt;
    local args = frame.args&lt;br /&gt;
    local id = args.id or &#039;&#039;&lt;br /&gt;
    local lang = args.lang or &#039;&#039;&lt;br /&gt;
    local field = args.field or &#039;&#039;&lt;br /&gt;
&lt;br /&gt;
    if id:match(&#039;skill_&#039;) then&lt;br /&gt;
        if id:match(&#039;_sub_&#039;) then&lt;br /&gt;
            id = id:gsub(&#039;_sub_&#039;, &#039;&#039;)&lt;br /&gt;
            id = id:gsub(&#039;_%d&#039;, &#039;&#039;)&lt;br /&gt;
        end&lt;br /&gt;
        return renderSkillLink(id, lang, field, frame)&lt;br /&gt;
    end&lt;br /&gt;
&lt;br /&gt;
    if id:match(&#039;_hero_&#039;) then&lt;br /&gt;
        if id:match(&#039;_specialization&#039;) then&lt;br /&gt;
            id = id:gsub(&#039;_specialization&#039;, &#039;&#039;)&lt;br /&gt;
        end&lt;br /&gt;
        return renderHeroLink(id, lang, frame)&lt;br /&gt;
    end&lt;br /&gt;
&lt;br /&gt;
    --return renderGeneric(id, lang, frame)&lt;br /&gt;
    return id&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
--&lt;br /&gt;
------------------------------------------------------------------------------------------------------------------------&lt;br /&gt;
local function replaceMarkers(text)&lt;br /&gt;
    return text:gsub(&amp;quot;❮(.-)▸(.-)❯&amp;quot;, &amp;quot;&amp;lt;del&amp;gt;%1&amp;lt;/del&amp;gt;&amp;lt;ins&amp;gt;%2&amp;lt;/ins&amp;gt;&amp;quot;)&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
--&lt;br /&gt;
------------------------------------------------------------------------------------------------------------------------&lt;br /&gt;
local function getOld(text)&lt;br /&gt;
    return text:gsub(&amp;quot;❮(.-)▸(.-)❯&amp;quot;, &amp;quot;%1&amp;quot;)&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
--&lt;br /&gt;
------------------------------------------------------------------------------------------------------------------------&lt;br /&gt;
local function getNew(text)&lt;br /&gt;
    return text:gsub(&amp;quot;❮(.-)▸(.-)❯&amp;quot;, &amp;quot;%2&amp;quot;)&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
--&lt;br /&gt;
------------------------------------------------------------------------------------------------------------------------&lt;br /&gt;
function p.renderText(frame)&lt;br /&gt;
    local args = frame.args&lt;br /&gt;
    local field = args.field or &#039;&#039;&lt;br /&gt;
    local summary = args.summary or &#039;&#039;&lt;br /&gt;
&lt;br /&gt;
    local prefix = field:match(&#039;description&#039;) and &#039;&#039; or (field .. &#039;: &#039;)&lt;br /&gt;
    local replaced = replaceMarkers(summary)&lt;br /&gt;
&lt;br /&gt;
    local collapse = &#039;&amp;lt;div class=&amp;quot;mw-collapsible mw-collapsed&amp;quot;&amp;gt;&#039;&lt;br /&gt;
    collapse = collapse .. &#039;&amp;lt;span class=&amp;quot;mw-collapsible-toggle&amp;quot;&amp;gt;🔽&amp;lt;/span&amp;gt;&#039;&lt;br /&gt;
    collapse = collapse .. &#039;&amp;lt;div class=&amp;quot;mw-collapsible-content&amp;quot;&amp;gt;&#039;&lt;br /&gt;
    collapse = collapse .. &#039;&amp;lt;div&amp;gt;❌ &#039; .. getOld(summary) .. &#039;&amp;lt;/div&amp;gt;&#039;&lt;br /&gt;
    collapse = collapse .. &#039;&amp;lt;div&amp;gt;✅ &#039; .. getNew(summary) .. &#039;&amp;lt;/div&amp;gt;&#039;&lt;br /&gt;
    collapse = collapse .. &#039;&amp;lt;/div&amp;gt;&#039;&lt;br /&gt;
&lt;br /&gt;
    return prefix .. replaced .. collapse&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
return p&lt;/div&gt;</summary>
		<author><name>76561198048502585</name></author>
	</entry>
	<entry>
		<id>https://wiki.hoodedhorse.com/Heroes_of_Might_and_Magic_Olden_Era/index.php?title=Module:Patch&amp;diff=41567</id>
		<title>Module:Patch</title>
		<link rel="alternate" type="text/html" href="https://wiki.hoodedhorse.com/Heroes_of_Might_and_Magic_Olden_Era/index.php?title=Module:Patch&amp;diff=41567"/>
		<updated>2026-10-14T07:59:22Z</updated>

		<summary type="html">&lt;p&gt;76561198048502585: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;-- Usage: see Module:Patch/doc&lt;br /&gt;
local p = {}&lt;br /&gt;
&lt;br /&gt;
-- Displays a variable&lt;br /&gt;
------------------------------------------------------------------------------------------------------------------------&lt;br /&gt;
local function dump(target)&lt;br /&gt;
    return &#039;&amp;lt;pre&amp;gt;&#039; .. mw.dumpObject(target) .. &#039;&amp;lt;/pre&amp;gt;&#039;&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
--&lt;br /&gt;
------------------------------------------------------------------------------------------------------------------------&lt;br /&gt;
local function renderSkillLink(id, lang, field, frame)&lt;br /&gt;
    local template = &#039;{{Skill&#039;&lt;br /&gt;
        .. &#039;| id=&#039; .. id&lt;br /&gt;
        .. &#039;| level=&#039; .. (field:match(&amp;quot;level_(%d+)&amp;quot;) or &#039;&#039;)&lt;br /&gt;
        .. &#039;| lang=&#039; .. lang&lt;br /&gt;
        .. &#039;}}&#039;&lt;br /&gt;
    return frame:preprocess(template)&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
--&lt;br /&gt;
------------------------------------------------------------------------------------------------------------------------&lt;br /&gt;
local function renderHeroLink(id, lang, frame)&lt;br /&gt;
    local template = &#039;{{LinkIcon&#039;&lt;br /&gt;
        .. &#039;| id=&#039; .. id&lt;br /&gt;
        .. &#039;| type=hero&#039;&lt;br /&gt;
        .. &#039;| filename=1&#039;&lt;br /&gt;
        .. &#039;| lang=&#039; .. lang&lt;br /&gt;
        .. &#039;}}&#039;&lt;br /&gt;
    return frame:preprocess(template)&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
--&lt;br /&gt;
------------------------------------------------------------------------------------------------------------------------&lt;br /&gt;
local function renderGeneric(id, lang, frame)&lt;br /&gt;
    local template = &#039;{{LinkIcon&#039;&lt;br /&gt;
        .. &#039;| id=&#039; .. id&lt;br /&gt;
        .. &#039;| lang=&#039; .. lang&lt;br /&gt;
        .. &#039;}}&#039;&lt;br /&gt;
    return frame:preprocess(template)&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
--&lt;br /&gt;
------------------------------------------------------------------------------------------------------------------------&lt;br /&gt;
function p.renderLink(frame)&lt;br /&gt;
    local args = frame.args&lt;br /&gt;
    local id = args.id or &#039;&#039;&lt;br /&gt;
    local lang = args.lang or &#039;&#039;&lt;br /&gt;
    local field = args.field or &#039;&#039;&lt;br /&gt;
&lt;br /&gt;
    if id:match(&#039;skill_&#039;) then&lt;br /&gt;
        if id:match(&#039;_sub_&#039;) then&lt;br /&gt;
            id = id:gsub(&#039;_sub_&#039;, &#039;&#039;)&lt;br /&gt;
            id = id:gsub(&#039;_%d&#039;, &#039;&#039;)&lt;br /&gt;
        end&lt;br /&gt;
        return renderSkillLink(id, lang, field, frame)&lt;br /&gt;
    end&lt;br /&gt;
&lt;br /&gt;
    if id:match(&#039;_hero_&#039;) then&lt;br /&gt;
        if id:match(&#039;_specialization&#039;) then&lt;br /&gt;
            id = id:gsub(&#039;_specialization&#039;, &#039;&#039;)&lt;br /&gt;
        end&lt;br /&gt;
        return renderHeroLink(id, lang, frame)&lt;br /&gt;
    end&lt;br /&gt;
&lt;br /&gt;
    return renderGeneric(id, lang, frame)&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
--&lt;br /&gt;
------------------------------------------------------------------------------------------------------------------------&lt;br /&gt;
local function replaceMarkers(text)&lt;br /&gt;
    return text:gsub(&amp;quot;❮(.-)▸(.-)❯&amp;quot;, &amp;quot;&amp;lt;del&amp;gt;%1&amp;lt;/del&amp;gt;&amp;lt;ins&amp;gt;%2&amp;lt;/ins&amp;gt;&amp;quot;)&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
--&lt;br /&gt;
------------------------------------------------------------------------------------------------------------------------&lt;br /&gt;
local function getOld(text)&lt;br /&gt;
    return text:gsub(&amp;quot;❮(.-)▸(.-)❯&amp;quot;, &amp;quot;%1&amp;quot;)&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
--&lt;br /&gt;
------------------------------------------------------------------------------------------------------------------------&lt;br /&gt;
local function getNew(text)&lt;br /&gt;
    return text:gsub(&amp;quot;❮(.-)▸(.-)❯&amp;quot;, &amp;quot;%2&amp;quot;)&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
--&lt;br /&gt;
------------------------------------------------------------------------------------------------------------------------&lt;br /&gt;
function p.renderText(frame)&lt;br /&gt;
    local args = frame.args&lt;br /&gt;
    local field = args.field or &#039;&#039;&lt;br /&gt;
    local summary = args.summary or &#039;&#039;&lt;br /&gt;
&lt;br /&gt;
    local prefix = field:match(&#039;description&#039;) and &#039;&#039; or (field .. &#039;: &#039;)&lt;br /&gt;
    local replaced = replaceMarkers(summary)&lt;br /&gt;
&lt;br /&gt;
    local collapse = &#039;&amp;lt;div class=&amp;quot;mw-collapsible mw-collapsed&amp;quot;&amp;gt;&#039;&lt;br /&gt;
    collapse = collapse .. &#039;&amp;lt;span class=&amp;quot;mw-collapsible-toggle&amp;quot;&amp;gt;🔽&amp;lt;/span&amp;gt;&#039;&lt;br /&gt;
    collapse = collapse .. &#039;&amp;lt;div class=&amp;quot;mw-collapsible-content&amp;quot;&amp;gt;&#039;&lt;br /&gt;
    collapse = collapse .. &#039;&amp;lt;div&amp;gt;❌ &#039; .. getOld(summary) .. &#039;&amp;lt;/div&amp;gt;&#039;&lt;br /&gt;
    collapse = collapse .. &#039;&amp;lt;div&amp;gt;✅ &#039; .. getNew(summary) .. &#039;&amp;lt;/div&amp;gt;&#039;&lt;br /&gt;
    collapse = collapse .. &#039;&amp;lt;/div&amp;gt;&#039;&lt;br /&gt;
&lt;br /&gt;
    return prefix .. replaced .. collapse&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
return p&lt;/div&gt;</summary>
		<author><name>76561198048502585</name></author>
	</entry>
	<entry>
		<id>https://wiki.hoodedhorse.com/Heroes_of_Might_and_Magic_Olden_Era/index.php?title=Module:Patch&amp;diff=41566</id>
		<title>Module:Patch</title>
		<link rel="alternate" type="text/html" href="https://wiki.hoodedhorse.com/Heroes_of_Might_and_Magic_Olden_Era/index.php?title=Module:Patch&amp;diff=41566"/>
		<updated>2026-10-14T07:31:57Z</updated>

		<summary type="html">&lt;p&gt;76561198048502585: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;-- Usage: see Module:Patch/doc&lt;br /&gt;
local p = {}&lt;br /&gt;
&lt;br /&gt;
-- Displays a variable&lt;br /&gt;
------------------------------------------------------------------------------------------------------------------------&lt;br /&gt;
local function dump(target)&lt;br /&gt;
    return &#039;&amp;lt;pre&amp;gt;&#039; .. mw.dumpObject(target) .. &#039;&amp;lt;/pre&amp;gt;&#039;&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
--&lt;br /&gt;
------------------------------------------------------------------------------------------------------------------------&lt;br /&gt;
local function renderSkillLink(id, lang, field, frame)&lt;br /&gt;
    local template = &#039;{{Skill&#039;&lt;br /&gt;
        .. &#039;| id=&#039; .. id&lt;br /&gt;
        .. &#039;| level=&#039; .. (field:match(&amp;quot;level_(%d+)&amp;quot;) or &#039;&#039;)&lt;br /&gt;
        .. &#039;| lang=&#039; .. lang&lt;br /&gt;
        .. &#039;}}&#039;&lt;br /&gt;
    return frame:preprocess(template)&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
--&lt;br /&gt;
------------------------------------------------------------------------------------------------------------------------&lt;br /&gt;
local function renderHeroLink(id, lang, frame)&lt;br /&gt;
    local template = &#039;{{LinkIcon&#039;&lt;br /&gt;
        .. &#039;| id=&#039; .. id&lt;br /&gt;
        .. &#039;| type=hero&#039;&lt;br /&gt;
        .. &#039;| filename=1&#039;&lt;br /&gt;
        .. &#039;| lang=&#039; .. lang&lt;br /&gt;
        .. &#039;}}&#039;&lt;br /&gt;
    return frame:preprocess(template)&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
--&lt;br /&gt;
------------------------------------------------------------------------------------------------------------------------&lt;br /&gt;
local function renderGeneric(id, lang, frame)&lt;br /&gt;
    local template = &#039;{{LinkIcon&#039;&lt;br /&gt;
        .. &#039;| id=&#039; .. id&lt;br /&gt;
        .. &#039;| lang=&#039; .. lang&lt;br /&gt;
        .. &#039;}}&#039;&lt;br /&gt;
    return frame:preprocess(template)&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
--&lt;br /&gt;
------------------------------------------------------------------------------------------------------------------------&lt;br /&gt;
function p.renderLink(frame)&lt;br /&gt;
    local args = frame.args&lt;br /&gt;
    local id = args.id or &#039;&#039;&lt;br /&gt;
    local lang = args.lang or &#039;&#039;&lt;br /&gt;
    local field = args.field or &#039;&#039;&lt;br /&gt;
&lt;br /&gt;
    if id:match(&#039;skill_&#039;) then&lt;br /&gt;
        return renderSkillLink(id, lang, field, frame)&lt;br /&gt;
    end&lt;br /&gt;
&lt;br /&gt;
    if id:match(&#039;_hero_&#039;) then&lt;br /&gt;
        return renderHeroLink(id, lang, frame)&lt;br /&gt;
    end&lt;br /&gt;
&lt;br /&gt;
    return renderGeneric(id, lang, frame)&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
--&lt;br /&gt;
------------------------------------------------------------------------------------------------------------------------&lt;br /&gt;
local function replaceMarkers(text)&lt;br /&gt;
    return text:gsub(&amp;quot;❮(.-)▸(.-)❯&amp;quot;, &amp;quot;&amp;lt;del&amp;gt;%1&amp;lt;/del&amp;gt;&amp;lt;ins&amp;gt;%2&amp;lt;/ins&amp;gt;&amp;quot;)&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
--&lt;br /&gt;
------------------------------------------------------------------------------------------------------------------------&lt;br /&gt;
local function getOld(text)&lt;br /&gt;
    return text:gsub(&amp;quot;❮(.-)▸(.-)❯&amp;quot;, &amp;quot;%1&amp;quot;)&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
--&lt;br /&gt;
------------------------------------------------------------------------------------------------------------------------&lt;br /&gt;
local function getNew(text)&lt;br /&gt;
    return text:gsub(&amp;quot;❮(.-)▸(.-)❯&amp;quot;, &amp;quot;%2&amp;quot;)&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
--&lt;br /&gt;
------------------------------------------------------------------------------------------------------------------------&lt;br /&gt;
function p.renderText(frame)&lt;br /&gt;
    local args = frame.args&lt;br /&gt;
    local field = args.field or &#039;&#039;&lt;br /&gt;
    local summary = args.summary or &#039;&#039;&lt;br /&gt;
&lt;br /&gt;
    local prefix = field:match(&#039;description&#039;) and &#039;&#039; or (field .. &#039;: &#039;)&lt;br /&gt;
    local replaced = replaceMarkers(summary)&lt;br /&gt;
&lt;br /&gt;
    local collapse = &#039;&amp;lt;div class=&amp;quot;mw-collapsible mw-collapsed&amp;quot;&amp;gt;&#039;&lt;br /&gt;
    collapse = collapse .. &#039;&amp;lt;span class=&amp;quot;mw-collapsible-toggle&amp;quot;&amp;gt;🔽&amp;lt;/span&amp;gt;&#039;&lt;br /&gt;
    collapse = collapse .. &#039;&amp;lt;div class=&amp;quot;mw-collapsible-content&amp;quot;&amp;gt;&#039;&lt;br /&gt;
    collapse = collapse .. &#039;&amp;lt;div&amp;gt;❌ &#039; .. getOld(summary) .. &#039;&amp;lt;/div&amp;gt;&#039;&lt;br /&gt;
    collapse = collapse .. &#039;&amp;lt;div&amp;gt;✅ &#039; .. getNew(summary) .. &#039;&amp;lt;/div&amp;gt;&#039;&lt;br /&gt;
    collapse = collapse .. &#039;&amp;lt;/div&amp;gt;&#039;&lt;br /&gt;
&lt;br /&gt;
    return prefix .. replaced .. collapse&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
return p&lt;/div&gt;</summary>
		<author><name>76561198048502585</name></author>
	</entry>
	<entry>
		<id>https://wiki.hoodedhorse.com/Heroes_of_Might_and_Magic_Olden_Era/index.php?title=Template:LinkIcon&amp;diff=41565</id>
		<title>Template:LinkIcon</title>
		<link rel="alternate" type="text/html" href="https://wiki.hoodedhorse.com/Heroes_of_Might_and_Magic_Olden_Era/index.php?title=Template:LinkIcon&amp;diff=41565"/>
		<updated>2026-10-14T07:28:33Z</updated>

		<summary type="html">&lt;p&gt;76561198048502585: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&amp;lt;includeonly&amp;gt;&amp;lt;!--&lt;br /&gt;
--&amp;gt;{{#cargo_query:&lt;br /&gt;
tables =&lt;br /&gt;
    Translation = E,&lt;br /&gt;
    Translation = T&lt;br /&gt;
|join on =&lt;br /&gt;
    E.target_id = T.target_id&lt;br /&gt;
|where =&lt;br /&gt;
    E.target_id = &#039;{{{id}}}&#039;&lt;br /&gt;
    {{#if:{{{type|}}} | AND E.type = &#039;{{{type}}}&#039; }}&lt;br /&gt;
    {{#if:{{{variant|}}} | AND E.variant = &#039;{{{variant}}}&#039; }}&lt;br /&gt;
    AND E.language = &#039;en&#039;&lt;br /&gt;
    &amp;lt;!-- foreign language --&amp;gt;&lt;br /&gt;
    {{#if:{{{type|}}} | AND T.type = &#039;{{{type}}}&#039; }}&lt;br /&gt;
    {{#if:{{{variant|}}} | AND T.variant = &#039;{{{variant}}}&#039; }}&lt;br /&gt;
    {{#if:{{{lang|}}} | AND T.language = &#039;{{{lang}}}&#039; | AND T.language = &#039;en&#039; }}&lt;br /&gt;
|fields =&lt;br /&gt;
    &amp;lt;!-- filename --&amp;gt;&lt;br /&gt;
    {{#switch: {{{filename|}}}&lt;br /&gt;
        |=CONCAT(E.target_id, &amp;quot;{{#if:{{{suffix|}}}|{{{suffix}}}|.png}}&amp;quot;)=filename, &amp;lt;!-- automatic behavior --&amp;gt;&lt;br /&gt;
        |0=&amp;lt;!-- omitted filename --&amp;gt;&lt;br /&gt;
        |1=CONCAT(E.name, &amp;quot;{{#if:{{{suffix|}}}|{{{suffix}}}|.png}}&amp;quot;)=filename,&amp;lt;!-- forced English filename --&amp;gt;&lt;br /&gt;
        |#default=CONCAT(&amp;quot;{{{filename}}}&amp;quot;)=filename, &amp;lt;!-- overridden filename --&amp;gt;&lt;br /&gt;
    }}&lt;br /&gt;
    &amp;lt;!-- link --&amp;gt;&lt;br /&gt;
    {{#switch: {{{link|}}}&lt;br /&gt;
        |=&amp;lt;!-- automatic behavior --&amp;gt;&amp;lt;!--&lt;br /&gt;
            --&amp;gt;{{#switch: {{{id|}}}+{{{type|}}}&lt;br /&gt;
                &amp;lt;!-- overrides --&amp;gt;&lt;br /&gt;
                |wasp_upg_alt+unit=CONCAT(&amp;quot;Stinger_(unit)&amp;quot;)&lt;br /&gt;
                |bonus_magic_astral_summon_1+spell=CONCAT(&amp;quot;Summon_Avatar_(Spell)&amp;quot;)&lt;br /&gt;
                |skill_summoner+&amp;lt;!--fall--&amp;gt;&lt;br /&gt;
                |skill_summoner+skill_level&amp;lt;!--fall--&amp;gt;&lt;br /&gt;
                |skill_summoner+skill=CONCAT(&amp;quot;Summon_Avatar_(Skill)&amp;quot;)&lt;br /&gt;
                &amp;lt;!-- normal, no link specified: --&amp;gt;&lt;br /&gt;
                |#default={{#if:{{{link_id|}}}&lt;br /&gt;
                    |CONCAT(&amp;quot;{{#invoke:Translation|get|{{{link_id}}}|en}}&amp;quot;)&lt;br /&gt;
                    |E.name &amp;lt;!-- normal, use the English name --&amp;gt;&lt;br /&gt;
                }}&lt;br /&gt;
           }}=link,&lt;br /&gt;
        |0=&amp;lt;!-- intentionally empty parameter, omit the link --&amp;gt;&lt;br /&gt;
        |#default=CONCAT(&amp;quot;{{{link}}}&amp;quot;)=link, &amp;lt;!-- overridden link --&amp;gt;&lt;br /&gt;
    }}&lt;br /&gt;
    &amp;lt;!-- text --&amp;gt;&lt;br /&gt;
    {{#switch: {{{text|}}}&lt;br /&gt;
        |=T.name=text, &amp;lt;!-- automatic behavior --&amp;gt;&lt;br /&gt;
        |0=&amp;lt;!-- intentionally empty parameter, omit the name --&amp;gt;&lt;br /&gt;
        |#default=CONCAT(&amp;quot;{{{text}}}&amp;quot;)=text, &amp;lt;!-- overridden name --&amp;gt;&lt;br /&gt;
    }}&lt;br /&gt;
    {{#if:{{{size|}}} | CONCAT(&amp;quot;{{{size}}}&amp;quot;) = size,}}&lt;br /&gt;
    {{#if:{{{color|}}} | CONCAT(&amp;quot;{{{color}}}&amp;quot;) = color,}}&lt;br /&gt;
    {{#if:{{{wrap|}}} | CONCAT(&amp;quot;{{{wrap}}}&amp;quot;) = wrap,}}&lt;br /&gt;
    {{#if:{{{width|}}} | CONCAT(&amp;quot;{{{width}}}&amp;quot;) = width,}}&lt;br /&gt;
    T.language = lang&lt;br /&gt;
|format =&lt;br /&gt;
    template&lt;br /&gt;
|template =&lt;br /&gt;
    {{#switch: {{{stack|}}}&lt;br /&gt;
        |1=Link/stack&lt;br /&gt;
        |#default=Link/render&lt;br /&gt;
    }}&lt;br /&gt;
|named args =&lt;br /&gt;
    yes&lt;br /&gt;
|limit =&lt;br /&gt;
    1&lt;br /&gt;
|more results text =&lt;br /&gt;
|default = {{{id}}}💬&lt;br /&gt;
}}&amp;lt;!--&lt;br /&gt;
################################################################################&lt;br /&gt;
--&amp;gt;&amp;lt;/includeonly&amp;gt;&amp;lt;noinclude&amp;gt;&lt;br /&gt;
&lt;br /&gt;
This template is meant to handle the linking of articles in a way that is language-agnostic, meaning that it can be used in language-aware infoboxes and other contexts which need to be able to handle multiple languages. This template only works with concepts which have their translation managed by Cargo.&lt;br /&gt;
&lt;br /&gt;
The default assumption for the icon&#039;s file name is that it is identical to the {{b|id}}, plus the &amp;lt;code&amp;gt;.png&amp;lt;/code&amp;gt; extension. This can be further configured with the {{b|suffix}} parameter, or be completely overridden by the {{b|filename}} parameter.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==1. Basic:==&lt;br /&gt;
(rarely used, as you usually need to specify {{b|type}} and {{b|suffix}})&lt;br /&gt;
&lt;br /&gt;
{{Color|yellow|Input:}} &amp;lt;code&amp;gt;&amp;lt;nowiki&amp;gt;{{LinkIcon | id=magic_demon}}&amp;lt;/nowiki&amp;gt;&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
{{Color|lime|Output:}} {{LinkIcon | id=magic_demon}}&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==2. With {{b|type}}:==&lt;br /&gt;
&lt;br /&gt;
{{Color|yellow|Input:}} &amp;lt;code&amp;gt;&amp;lt;nowiki&amp;gt;{{LinkIcon | id=skill_assault | type=skill}}&amp;lt;/nowiki&amp;gt;&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
{{Color|lime|Output:}} {{LinkIcon | id=skill_assault | type=skill}}&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==3. With {{b|suffix}}:==&lt;br /&gt;
(to override the default &amp;lt;code&amp;gt;.png&amp;lt;/code&amp;gt;)&lt;br /&gt;
&lt;br /&gt;
{{Color|yellow|Input:}} &amp;lt;code&amp;gt;&amp;lt;nowiki&amp;gt;{{LinkIcon | id=angel | suffix=_icon.png}}&amp;lt;/nowiki&amp;gt;&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
{{Color|lime|Output:}} {{LinkIcon | id=angel | suffix=_icon.png}}&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==4. With {{b|lang}}:==&lt;br /&gt;
(to override the default &amp;lt;code&amp;gt;en&amp;lt;/code&amp;gt;)&lt;br /&gt;
&lt;br /&gt;
{{Color|yellow|Input:}} &amp;lt;code&amp;gt;&amp;lt;nowiki&amp;gt;{{LinkIcon | id=magic_demon || lang=ja}}&amp;lt;/nowiki&amp;gt;&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
{{Color|lime|Output:}} {{LinkIcon | id=magic_demon || lang=ja}}&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==5. With {{b|size}}:==&lt;br /&gt;
(to override the default &amp;lt;code&amp;gt;32px&amp;lt;/code&amp;gt;)&lt;br /&gt;
&lt;br /&gt;
{{Color|yellow|Input:}} &amp;lt;code&amp;gt;&amp;lt;nowiki&amp;gt;{{LinkIcon | id=magic_demon | size=64px}}&amp;lt;/nowiki&amp;gt;&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
{{Color|lime|Output:}} {{LinkIcon | id=magic_demon | size=64px}}&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==6. With {{b|filename}}:==&lt;br /&gt;
(to override the automated file path)&lt;br /&gt;
&lt;br /&gt;
{{Color|yellow|Input:}} &amp;lt;code&amp;gt;&amp;lt;nowiki&amp;gt;{{LinkIcon | id=human_hero_1 | type=hero | filename=Ister.png}}&amp;lt;/nowiki&amp;gt;&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
{{Color|lime|Output:}} {{LinkIcon | id=human_hero_1 | type=hero | filename=Ister.png}}&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==7. With {{b|zero filename}}:==&lt;br /&gt;
(to disable the icon)&lt;br /&gt;
&lt;br /&gt;
{{Color|yellow|Input:}} &amp;lt;code&amp;gt;&amp;lt;nowiki&amp;gt;{{LinkIcon | id=magic_demon | filename=0}}&amp;lt;/nowiki&amp;gt;&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
{{Color|lime|Output:}} {{LinkIcon | id=magic_demon | filename=0}}&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==8. With {{b|text}}:==&lt;br /&gt;
(to override the automated text)&lt;br /&gt;
&lt;br /&gt;
{{Color|yellow|Input:}} &amp;lt;code&amp;gt;&amp;lt;nowiki&amp;gt;{{LinkIcon | id=magic_demon | text=Hello}}&amp;lt;/nowiki&amp;gt;&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
{{Color|lime|Output:}} {{LinkIcon | id=magic_demon | text=Hello}}&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==9. With {{b|zero text}}:==&lt;br /&gt;
(to disable the text)&lt;br /&gt;
&lt;br /&gt;
{{Color|yellow|Input:}} &amp;lt;code&amp;gt;&amp;lt;nowiki&amp;gt;{{LinkIcon | id=magic_demon | text=0}}&amp;lt;/nowiki&amp;gt;&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
{{Color|lime|Output:}} {{LinkIcon | id=magic_demon | text=0}}&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==10. With {{b|link}}:==&lt;br /&gt;
(to override the automated link)&lt;br /&gt;
&lt;br /&gt;
{{Color|yellow|Input:}} &amp;lt;code&amp;gt;&amp;lt;nowiki&amp;gt;{{LinkIcon | id=magic_demon | link=Foobar}}&amp;lt;/nowiki&amp;gt;&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
{{Color|lime|Output:}} {{LinkIcon | id=magic_demon | link=Foobar}}&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==11. With {{b|zero link}}:==&lt;br /&gt;
(to disable the link)&lt;br /&gt;
&lt;br /&gt;
{{Color|yellow|Input:}} &amp;lt;code&amp;gt;&amp;lt;nowiki&amp;gt;{{LinkIcon | id=magic_demon | link=0}}&amp;lt;/nowiki&amp;gt;&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
{{Color|lime|Output:}} {{LinkIcon | id=magic_demon | link=0}}&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==12. With {{b|color}}:==&lt;br /&gt;
&lt;br /&gt;
{{Color|yellow|Input:}} &amp;lt;code&amp;gt;&amp;lt;nowiki&amp;gt;{{LinkIcon | id=magic_demon | color=magenta}}&amp;lt;/nowiki&amp;gt;&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
{{Color|lime|Output:}} {{LinkIcon | id=magic_demon | color=magenta}}&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==13. With {{b|stack{{=}}1}}:==&lt;br /&gt;
(to switch to a vertical layout)&lt;br /&gt;
&lt;br /&gt;
{{Color|yellow|Input:}} &amp;lt;code&amp;gt;&amp;lt;nowiki&amp;gt;{{LinkIcon | id=magic_demon | stack=1}}&amp;lt;/nowiki&amp;gt;&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
{{Color|lime|Output:}} {{LinkIcon | id=magic_demon | stack=1}}&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==14. With {{b|wrap{{=}}1}}:==&lt;br /&gt;
(to allow the resulting link to wrap; useful if used without icons)&lt;br /&gt;
&lt;br /&gt;
{{Color|yellow|Input:}}&lt;br /&gt;
&amp;lt;pre&amp;gt;&amp;lt;nowiki&amp;gt;&lt;br /&gt;
{|class=wikitable&lt;br /&gt;
|style=&amp;quot;width:100px;&amp;quot;|{{LinkIcon|id=might_undead|suffix=_icon.png|wrap=1}}&lt;br /&gt;
|}&lt;br /&gt;
&amp;lt;/nowiki&amp;gt;&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
{{Color|lime|Output:}}&lt;br /&gt;
{|class=wikitable&lt;br /&gt;
|style=&amp;quot;width:100px;&amp;quot;|{{LinkIcon|id=might_undead|suffix=_icon.png|wrap=1}}&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==15. With {{b|filename{{=}}1}}:==&lt;br /&gt;
(to use the English name as filename)&lt;br /&gt;
&lt;br /&gt;
{{Color|yellow|Input:}} &amp;lt;code&amp;gt;&amp;lt;nowiki&amp;gt;{{LinkIcon | id=human_hero_1 | type=hero | filename=1}}&amp;lt;/nowiki&amp;gt;&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
{{Color|lime|Output:}} {{LinkIcon | id=human_hero_1 | type=hero | filename=1}}&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==16. {{b|Stinger}} conflict:==&lt;br /&gt;
&lt;br /&gt;
{{Color|yellow|Input:}}&lt;br /&gt;
&amp;lt;pre&amp;gt;&amp;lt;nowiki&amp;gt;&lt;br /&gt;
{{LinkIcon&lt;br /&gt;
    | id = wasp_upg_alt&lt;br /&gt;
    | type = unit&lt;br /&gt;
    | filename = 1&lt;br /&gt;
    | suffix = _icon.png&lt;br /&gt;
}}&lt;br /&gt;
{{LinkIcon&lt;br /&gt;
    | id = dungeon_hero_3&lt;br /&gt;
    | type = hero&lt;br /&gt;
    | filename = 1&lt;br /&gt;
}}&lt;br /&gt;
&amp;lt;/nowiki&amp;gt;&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
{{Color|lime|Output:}}&lt;br /&gt;
{{LinkIcon&lt;br /&gt;
    | id = wasp_upg_alt&lt;br /&gt;
    | type = unit&lt;br /&gt;
    | filename = 1&lt;br /&gt;
    | suffix = _icon.png&lt;br /&gt;
}}&lt;br /&gt;
{{LinkIcon&lt;br /&gt;
    | id = dungeon_hero_3&lt;br /&gt;
    | type = hero&lt;br /&gt;
    | filename = 1&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
==17. {{b|Summon Avatar}} conflict:==&lt;br /&gt;
&lt;br /&gt;
{{Color|yellow|Input:}}&lt;br /&gt;
&amp;lt;pre&amp;gt;&amp;lt;nowiki&amp;gt;&lt;br /&gt;
{{LinkIcon&lt;br /&gt;
    | id = bonus_magic_astral_summon_1&lt;br /&gt;
    | type = spell&lt;br /&gt;
}}&lt;br /&gt;
{{LinkIcon&lt;br /&gt;
    | id = skill_summoner&lt;br /&gt;
    | type = skill&lt;br /&gt;
}}&lt;br /&gt;
&amp;lt;/nowiki&amp;gt;&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
{{Color|lime|Output:}}&lt;br /&gt;
{{LinkIcon&lt;br /&gt;
    | id = bonus_magic_astral_summon_1&lt;br /&gt;
    | type = spell&lt;br /&gt;
}}&lt;br /&gt;
{{LinkIcon&lt;br /&gt;
    | id = skill_summoner&lt;br /&gt;
    | type = skill&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
==18. Proper linking of Skill levels:==&lt;br /&gt;
&lt;br /&gt;
{{Color|yellow|Input:}}&lt;br /&gt;
&amp;lt;pre&amp;gt;&amp;lt;nowiki&amp;gt;&lt;br /&gt;
{{LinkIcon&lt;br /&gt;
    | id = skill_assault&lt;br /&gt;
    | type = skill_level&lt;br /&gt;
    | variant = 3&lt;br /&gt;
}}&lt;br /&gt;
&amp;lt;/nowiki&amp;gt;&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
{{Color|lime|Output:}}&lt;br /&gt;
{{LinkIcon&lt;br /&gt;
    | id = skill_assault&lt;br /&gt;
    | type = skill_level&lt;br /&gt;
    | variant = 3&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
==19. With {{b|link_id}} to hijack the url:==&lt;br /&gt;
&lt;br /&gt;
{{Color|yellow|Input:}}&lt;br /&gt;
&amp;lt;pre&amp;gt;&amp;lt;nowiki&amp;gt;&lt;br /&gt;
{{LinkIcon&lt;br /&gt;
    | id = sub_class_demons_magic_2&lt;br /&gt;
    | suffix=_icon.png&lt;br /&gt;
    | link_id = magic_demon&lt;br /&gt;
}}&lt;br /&gt;
&amp;lt;/nowiki&amp;gt;&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
{{Color|lime|Output:}}&lt;br /&gt;
{{LinkIcon&lt;br /&gt;
    | id = sub_class_demons_magic_2&lt;br /&gt;
    | suffix=_icon.png&lt;br /&gt;
    | link_id = magic_demon&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
__NOTOC__&lt;br /&gt;
&amp;lt;/noinclude&amp;gt;&lt;/div&gt;</summary>
		<author><name>76561198048502585</name></author>
	</entry>
	<entry>
		<id>https://wiki.hoodedhorse.com/Heroes_of_Might_and_Magic_Olden_Era/index.php?title=Template:Patch/styles.css&amp;diff=41564</id>
		<title>Template:Patch/styles.css</title>
		<link rel="alternate" type="text/html" href="https://wiki.hoodedhorse.com/Heroes_of_Might_and_Magic_Olden_Era/index.php?title=Template:Patch/styles.css&amp;diff=41564"/>
		<updated>2026-10-14T07:20:45Z</updated>

		<summary type="html">&lt;p&gt;76561198048502585: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;.patch-table th {&lt;br /&gt;
    text-align: left;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
.patch-table .mw-collapsible {&lt;br /&gt;
    display: inline;&lt;br /&gt;
    margin-left: 4px;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
.patch-table .mw-collapsible-toggle {&lt;br /&gt;
    float: none;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
.patch-table .mw-collapsible-content {&lt;br /&gt;
    margin-top: 8px;&lt;br /&gt;
    padding: 8px;&lt;br /&gt;
    border-top: solid 1px rgba(255, 255, 255, 0.5);&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
.patch-table .mw-collapsible-content &amp;gt; div:first-child {&lt;br /&gt;
    margin-bottom: 8px;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
.patch-table del {&lt;br /&gt;
    opacity: 0.3;&lt;br /&gt;
    text-decoration: none;&lt;br /&gt;
    font-size: smaller;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
.patch-table ins {&lt;br /&gt;
    color: peru;&lt;br /&gt;
    text-decoration: none;&lt;br /&gt;
    font-weight: bold;&lt;br /&gt;
}&lt;/div&gt;</summary>
		<author><name>76561198048502585</name></author>
	</entry>
	<entry>
		<id>https://wiki.hoodedhorse.com/Heroes_of_Might_and_Magic_Olden_Era/index.php?title=Module:Patch&amp;diff=41563</id>
		<title>Module:Patch</title>
		<link rel="alternate" type="text/html" href="https://wiki.hoodedhorse.com/Heroes_of_Might_and_Magic_Olden_Era/index.php?title=Module:Patch&amp;diff=41563"/>
		<updated>2026-10-14T07:20:43Z</updated>

		<summary type="html">&lt;p&gt;76561198048502585: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;-- Usage: see Module:Patch/doc&lt;br /&gt;
local p = {}&lt;br /&gt;
&lt;br /&gt;
-- Displays a variable&lt;br /&gt;
------------------------------------------------------------------------------------------------------------------------&lt;br /&gt;
local function dump(target)&lt;br /&gt;
    return &#039;&amp;lt;pre&amp;gt;&#039; .. mw.dumpObject(target) .. &#039;&amp;lt;/pre&amp;gt;&#039;&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
--&lt;br /&gt;
------------------------------------------------------------------------------------------------------------------------&lt;br /&gt;
local function renderSkillLink(id, lang, field, frame)&lt;br /&gt;
    local template = &#039;{{Skill&#039;&lt;br /&gt;
        .. &#039;| id=&#039; .. id&lt;br /&gt;
        .. &#039;| level=&#039; .. (field:match(&amp;quot;level_(%d+)&amp;quot;) or &#039;&#039;)&lt;br /&gt;
        .. &#039;| lang=&#039; .. lang&lt;br /&gt;
        .. &#039;}}&#039;&lt;br /&gt;
    return frame:preprocess(template)&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
--&lt;br /&gt;
------------------------------------------------------------------------------------------------------------------------&lt;br /&gt;
local function renderHeroLink(id, lang, frame)&lt;br /&gt;
    local template = &#039;{{LinkIcon&#039;&lt;br /&gt;
        .. &#039;| id=&#039; .. id&lt;br /&gt;
        .. &#039;| type=hero&#039;&lt;br /&gt;
        .. &#039;| filename=1&#039;&lt;br /&gt;
        .. &#039;| lang=&#039; .. lang&lt;br /&gt;
        .. &#039;}}&#039;&lt;br /&gt;
    return frame:preprocess(template)&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
--&lt;br /&gt;
------------------------------------------------------------------------------------------------------------------------&lt;br /&gt;
function p.renderLink(frame)&lt;br /&gt;
    local args = frame.args&lt;br /&gt;
    local id = args.id or &#039;&#039;&lt;br /&gt;
    local lang = args.lang or &#039;&#039;&lt;br /&gt;
    local field = args.field or &#039;&#039;&lt;br /&gt;
&lt;br /&gt;
    if id:match(&#039;skill_&#039;) then&lt;br /&gt;
        return renderSkillLink(id, lang, field, frame)&lt;br /&gt;
    end&lt;br /&gt;
&lt;br /&gt;
    if id:match(&#039;_hero_&#039;) then&lt;br /&gt;
        return renderHeroLink(id, lang, frame)&lt;br /&gt;
    end&lt;br /&gt;
&lt;br /&gt;
    return id&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
--&lt;br /&gt;
------------------------------------------------------------------------------------------------------------------------&lt;br /&gt;
local function replaceMarkers(text)&lt;br /&gt;
    return text:gsub(&amp;quot;❮(.-)▸(.-)❯&amp;quot;, &amp;quot;&amp;lt;del&amp;gt;%1&amp;lt;/del&amp;gt;&amp;lt;ins&amp;gt;%2&amp;lt;/ins&amp;gt;&amp;quot;)&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
--&lt;br /&gt;
------------------------------------------------------------------------------------------------------------------------&lt;br /&gt;
local function getOld(text)&lt;br /&gt;
    return text:gsub(&amp;quot;❮(.-)▸(.-)❯&amp;quot;, &amp;quot;%1&amp;quot;)&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
--&lt;br /&gt;
------------------------------------------------------------------------------------------------------------------------&lt;br /&gt;
local function getNew(text)&lt;br /&gt;
    return text:gsub(&amp;quot;❮(.-)▸(.-)❯&amp;quot;, &amp;quot;%2&amp;quot;)&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
--&lt;br /&gt;
------------------------------------------------------------------------------------------------------------------------&lt;br /&gt;
function p.renderText(frame)&lt;br /&gt;
    local args = frame.args&lt;br /&gt;
    local field = args.field or &#039;&#039;&lt;br /&gt;
    local summary = args.summary or &#039;&#039;&lt;br /&gt;
&lt;br /&gt;
    local prefix = field:match(&#039;description&#039;) and &#039;&#039; or (field .. &#039;: &#039;)&lt;br /&gt;
    local replaced = replaceMarkers(summary)&lt;br /&gt;
&lt;br /&gt;
    local collapse = &#039;&amp;lt;div class=&amp;quot;mw-collapsible mw-collapsed&amp;quot;&amp;gt;&#039;&lt;br /&gt;
    collapse = collapse .. &#039;&amp;lt;span class=&amp;quot;mw-collapsible-toggle&amp;quot;&amp;gt;🔽&amp;lt;/span&amp;gt;&#039;&lt;br /&gt;
    collapse = collapse .. &#039;&amp;lt;div class=&amp;quot;mw-collapsible-content&amp;quot;&amp;gt;&#039;&lt;br /&gt;
    collapse = collapse .. &#039;&amp;lt;div&amp;gt;❌ &#039; .. getOld(summary) .. &#039;&amp;lt;/div&amp;gt;&#039;&lt;br /&gt;
    collapse = collapse .. &#039;&amp;lt;div&amp;gt;✅ &#039; .. getNew(summary) .. &#039;&amp;lt;/div&amp;gt;&#039;&lt;br /&gt;
    collapse = collapse .. &#039;&amp;lt;/div&amp;gt;&#039;&lt;br /&gt;
&lt;br /&gt;
    return prefix .. replaced .. collapse&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
return p&lt;/div&gt;</summary>
		<author><name>76561198048502585</name></author>
	</entry>
	<entry>
		<id>https://wiki.hoodedhorse.com/Heroes_of_Might_and_Magic_Olden_Era/index.php?title=Template:Patch/styles.css&amp;diff=41562</id>
		<title>Template:Patch/styles.css</title>
		<link rel="alternate" type="text/html" href="https://wiki.hoodedhorse.com/Heroes_of_Might_and_Magic_Olden_Era/index.php?title=Template:Patch/styles.css&amp;diff=41562"/>
		<updated>2026-10-14T07:18:38Z</updated>

		<summary type="html">&lt;p&gt;76561198048502585: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;.patch-table th {&lt;br /&gt;
    text-align: left;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
.patch-table .mw-collapsible {&lt;br /&gt;
    display: inline;&lt;br /&gt;
    margin-left: 4px;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
.patch-table .mw-collapsible-toggle {&lt;br /&gt;
    float: none;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
.patch-table .mw-collapsible-content {&lt;br /&gt;
    margin-top: 8px;&lt;br /&gt;
    padding: 8px;&lt;br /&gt;
    border-top: solid 1px rgba(255, 255, 255, 0.5)&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
.patch-table del {&lt;br /&gt;
    opacity: 0.3;&lt;br /&gt;
    text-decoration: none;&lt;br /&gt;
    font-size: smaller;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
.patch-table ins {&lt;br /&gt;
    color: peru;&lt;br /&gt;
    text-decoration: none;&lt;br /&gt;
    font-weight: bold;&lt;br /&gt;
}&lt;/div&gt;</summary>
		<author><name>76561198048502585</name></author>
	</entry>
	<entry>
		<id>https://wiki.hoodedhorse.com/Heroes_of_Might_and_Magic_Olden_Era/index.php?title=Module:Patch&amp;diff=41561</id>
		<title>Module:Patch</title>
		<link rel="alternate" type="text/html" href="https://wiki.hoodedhorse.com/Heroes_of_Might_and_Magic_Olden_Era/index.php?title=Module:Patch&amp;diff=41561"/>
		<updated>2026-10-14T07:18:38Z</updated>

		<summary type="html">&lt;p&gt;76561198048502585: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;-- Usage: see Module:Patch/doc&lt;br /&gt;
local p = {}&lt;br /&gt;
&lt;br /&gt;
-- Displays a variable&lt;br /&gt;
------------------------------------------------------------------------------------------------------------------------&lt;br /&gt;
local function dump(target)&lt;br /&gt;
    return &#039;&amp;lt;pre&amp;gt;&#039; .. mw.dumpObject(target) .. &#039;&amp;lt;/pre&amp;gt;&#039;&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
--&lt;br /&gt;
------------------------------------------------------------------------------------------------------------------------&lt;br /&gt;
local function renderSkillLink(id, lang, field, frame)&lt;br /&gt;
    local template = &#039;{{Skill&#039;&lt;br /&gt;
        .. &#039;| id=&#039; .. id&lt;br /&gt;
        .. &#039;| level=&#039; .. (field:match(&amp;quot;level_(%d+)&amp;quot;) or &#039;&#039;)&lt;br /&gt;
        .. &#039;| lang=&#039; .. lang&lt;br /&gt;
        .. &#039;}}&#039;&lt;br /&gt;
    return frame:preprocess(template)&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
--&lt;br /&gt;
------------------------------------------------------------------------------------------------------------------------&lt;br /&gt;
local function renderHeroLink(id, lang, frame)&lt;br /&gt;
    local template = &#039;{{LinkIcon&#039;&lt;br /&gt;
        .. &#039;| id=&#039; .. id&lt;br /&gt;
        .. &#039;| type=hero&#039;&lt;br /&gt;
        .. &#039;| filename=1&#039;&lt;br /&gt;
        .. &#039;| lang=&#039; .. lang&lt;br /&gt;
        .. &#039;}}&#039;&lt;br /&gt;
    return frame:preprocess(template)&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
--&lt;br /&gt;
------------------------------------------------------------------------------------------------------------------------&lt;br /&gt;
function p.renderLink(frame)&lt;br /&gt;
    local args = frame.args&lt;br /&gt;
    local id = args.id or &#039;&#039;&lt;br /&gt;
    local lang = args.lang or &#039;&#039;&lt;br /&gt;
    local field = args.field or &#039;&#039;&lt;br /&gt;
&lt;br /&gt;
    if id:match(&#039;skill_&#039;) then&lt;br /&gt;
        return renderSkillLink(id, lang, field, frame)&lt;br /&gt;
    end&lt;br /&gt;
&lt;br /&gt;
    if id:match(&#039;_hero_&#039;) then&lt;br /&gt;
        return renderHeroLink(id, lang, frame)&lt;br /&gt;
    end&lt;br /&gt;
&lt;br /&gt;
    return id&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
--&lt;br /&gt;
------------------------------------------------------------------------------------------------------------------------&lt;br /&gt;
local function replaceMarkers(text)&lt;br /&gt;
    return text:gsub(&amp;quot;❮(.-)▸(.-)❯&amp;quot;, &amp;quot;&amp;lt;del&amp;gt;%1&amp;lt;/del&amp;gt;&amp;lt;ins&amp;gt;%2&amp;lt;/ins&amp;gt;&amp;quot;)&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
--&lt;br /&gt;
------------------------------------------------------------------------------------------------------------------------&lt;br /&gt;
local function getOld(text)&lt;br /&gt;
    return text:gsub(&amp;quot;❮(.-)▸(.-)❯&amp;quot;, &amp;quot;%1&amp;quot;)&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
--&lt;br /&gt;
------------------------------------------------------------------------------------------------------------------------&lt;br /&gt;
local function getNew(text)&lt;br /&gt;
    return text:gsub(&amp;quot;❮(.-)▸(.-)❯&amp;quot;, &amp;quot;%2&amp;quot;)&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
--&lt;br /&gt;
------------------------------------------------------------------------------------------------------------------------&lt;br /&gt;
function p.renderText(frame)&lt;br /&gt;
    local args = frame.args&lt;br /&gt;
    local field = args.field or &#039;&#039;&lt;br /&gt;
    local summary = args.summary or &#039;&#039;&lt;br /&gt;
&lt;br /&gt;
    local prefix = field:match(&#039;description&#039;) and &#039;&#039; or (field .. &#039;: &#039;)&lt;br /&gt;
    local replaced = replaceMarkers(summary)&lt;br /&gt;
&lt;br /&gt;
    local collapse = &#039;&amp;lt;div class=&amp;quot;mw-collapsible mw-collapsed&amp;quot;&amp;gt;&#039;&lt;br /&gt;
    collapse = collapse .. &#039;&amp;lt;span class=&amp;quot;mw-collapsible-toggle&amp;quot;&amp;gt;🔽&amp;lt;/span&amp;gt;&#039;&lt;br /&gt;
    collapse = collapse .. &#039;&amp;lt;div class=&amp;quot;mw-collapsible-content&amp;quot;&amp;gt;&#039;&lt;br /&gt;
    collapse = collapse .. &#039;❌ &#039; .. getOld(summary)&lt;br /&gt;
    collapse = collapse .. &#039;&amp;lt;br/&amp;gt;&#039;&lt;br /&gt;
    collapse = collapse .. &#039;✅ &#039; .. getNew(summary)&lt;br /&gt;
    collapse = collapse .. &#039;&amp;lt;/div&amp;gt;&#039;&lt;br /&gt;
    collapse = collapse .. &#039;&amp;lt;/div&amp;gt;&#039;&lt;br /&gt;
&lt;br /&gt;
    return prefix .. replaced .. collapse&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
return p&lt;/div&gt;</summary>
		<author><name>76561198048502585</name></author>
	</entry>
	<entry>
		<id>https://wiki.hoodedhorse.com/Heroes_of_Might_and_Magic_Olden_Era/index.php?title=Template:Patch/styles.css&amp;diff=41560</id>
		<title>Template:Patch/styles.css</title>
		<link rel="alternate" type="text/html" href="https://wiki.hoodedhorse.com/Heroes_of_Might_and_Magic_Olden_Era/index.php?title=Template:Patch/styles.css&amp;diff=41560"/>
		<updated>2026-10-14T07:16:59Z</updated>

		<summary type="html">&lt;p&gt;76561198048502585: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;.patch-table th {&lt;br /&gt;
    text-align: left;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
.patch-table .mw-collapsible {&lt;br /&gt;
    display: inline;&lt;br /&gt;
    margin-left: 4px;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
.patch-table .mw-collapsible-toggle {&lt;br /&gt;
    float: none;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
.patch-table .mw-collapsible-content {&lt;br /&gt;
    border: solid 1px rgba(255, 255, 255, 0.5)&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
.patch-table del {&lt;br /&gt;
    opacity: 0.3;&lt;br /&gt;
    text-decoration: none;&lt;br /&gt;
    font-size: smaller;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
.patch-table ins {&lt;br /&gt;
    color: peru;&lt;br /&gt;
    text-decoration: none;&lt;br /&gt;
    font-weight: bold;&lt;br /&gt;
}&lt;/div&gt;</summary>
		<author><name>76561198048502585</name></author>
	</entry>
	<entry>
		<id>https://wiki.hoodedhorse.com/Heroes_of_Might_and_Magic_Olden_Era/index.php?title=Module:Patch&amp;diff=41559</id>
		<title>Module:Patch</title>
		<link rel="alternate" type="text/html" href="https://wiki.hoodedhorse.com/Heroes_of_Might_and_Magic_Olden_Era/index.php?title=Module:Patch&amp;diff=41559"/>
		<updated>2026-10-14T07:16:58Z</updated>

		<summary type="html">&lt;p&gt;76561198048502585: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;-- Usage: see Module:Patch/doc&lt;br /&gt;
local p = {}&lt;br /&gt;
&lt;br /&gt;
-- Displays a variable&lt;br /&gt;
------------------------------------------------------------------------------------------------------------------------&lt;br /&gt;
local function dump(target)&lt;br /&gt;
    return &#039;&amp;lt;pre&amp;gt;&#039; .. mw.dumpObject(target) .. &#039;&amp;lt;/pre&amp;gt;&#039;&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
--&lt;br /&gt;
------------------------------------------------------------------------------------------------------------------------&lt;br /&gt;
local function renderSkillLink(id, lang, field, frame)&lt;br /&gt;
    local template = &#039;{{Skill&#039;&lt;br /&gt;
        .. &#039;| id=&#039; .. id&lt;br /&gt;
        .. &#039;| level=&#039; .. (field:match(&amp;quot;level_(%d+)&amp;quot;) or &#039;&#039;)&lt;br /&gt;
        .. &#039;| lang=&#039; .. lang&lt;br /&gt;
        .. &#039;}}&#039;&lt;br /&gt;
    return frame:preprocess(template)&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
--&lt;br /&gt;
------------------------------------------------------------------------------------------------------------------------&lt;br /&gt;
local function renderHeroLink(id, lang, frame)&lt;br /&gt;
    local template = &#039;{{LinkIcon&#039;&lt;br /&gt;
        .. &#039;| id=&#039; .. id&lt;br /&gt;
        .. &#039;| type=hero&#039;&lt;br /&gt;
        .. &#039;| filename=1&#039;&lt;br /&gt;
        .. &#039;| lang=&#039; .. lang&lt;br /&gt;
        .. &#039;}}&#039;&lt;br /&gt;
    return frame:preprocess(template)&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
--&lt;br /&gt;
------------------------------------------------------------------------------------------------------------------------&lt;br /&gt;
function p.renderLink(frame)&lt;br /&gt;
    local args = frame.args&lt;br /&gt;
    local id = args.id or &#039;&#039;&lt;br /&gt;
    local lang = args.lang or &#039;&#039;&lt;br /&gt;
    local field = args.field or &#039;&#039;&lt;br /&gt;
&lt;br /&gt;
    if id:match(&#039;skill_&#039;) then&lt;br /&gt;
        return renderSkillLink(id, lang, field, frame)&lt;br /&gt;
    end&lt;br /&gt;
&lt;br /&gt;
    if id:match(&#039;_hero_&#039;) then&lt;br /&gt;
        return renderHeroLink(id, lang, frame)&lt;br /&gt;
    end&lt;br /&gt;
&lt;br /&gt;
    return id&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
--&lt;br /&gt;
------------------------------------------------------------------------------------------------------------------------&lt;br /&gt;
local function replaceMarkers(text)&lt;br /&gt;
    return text:gsub(&amp;quot;❮(.-)▸(.-)❯&amp;quot;, &amp;quot;&amp;lt;del&amp;gt;%1&amp;lt;/del&amp;gt;&amp;lt;ins&amp;gt;%2&amp;lt;/ins&amp;gt;&amp;quot;)&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
--&lt;br /&gt;
------------------------------------------------------------------------------------------------------------------------&lt;br /&gt;
local function getOld(text)&lt;br /&gt;
    return text:gsub(&amp;quot;❮([^▸]*)▸([^❯]*)❯&amp;quot;, &amp;quot;%1&amp;quot;)&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
--&lt;br /&gt;
------------------------------------------------------------------------------------------------------------------------&lt;br /&gt;
local function getNew(text)&lt;br /&gt;
    return text:gsub(&amp;quot;❮([^▸]*)▸([^❯]*)❯&amp;quot;, &amp;quot;%2&amp;quot;)&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
--&lt;br /&gt;
------------------------------------------------------------------------------------------------------------------------&lt;br /&gt;
function p.renderText(frame)&lt;br /&gt;
    local args = frame.args&lt;br /&gt;
    local field = args.field or &#039;&#039;&lt;br /&gt;
    local summary = args.summary or &#039;&#039;&lt;br /&gt;
&lt;br /&gt;
    local prefix = field:match(&#039;description&#039;) and &#039;&#039; or (field .. &#039;: &#039;)&lt;br /&gt;
    local replaced = replaceMarkers(summary)&lt;br /&gt;
&lt;br /&gt;
    local collapse = &#039;&amp;lt;div class=&amp;quot;mw-collapsible mw-collapsed&amp;quot;&amp;gt;&#039;&lt;br /&gt;
    collapse = collapse .. &#039;&amp;lt;span class=&amp;quot;mw-collapsible-toggle&amp;quot;&amp;gt;🔽&amp;lt;/span&amp;gt;&#039;&lt;br /&gt;
    collapse = collapse .. &#039;&amp;lt;div class=&amp;quot;mw-collapsible-content&amp;quot;&amp;gt;&#039;&lt;br /&gt;
    collapse = collapse .. &#039;❌ &#039; .. getOld(summary)&lt;br /&gt;
    collapse = collapse .. &#039;&amp;lt;br/&amp;gt;&#039;&lt;br /&gt;
    collapse = collapse .. &#039;✅ &#039; .. getNew(summary)&lt;br /&gt;
    collapse = collapse .. &#039;&amp;lt;/div&amp;gt;&#039;&lt;br /&gt;
    collapse = collapse .. &#039;&amp;lt;/div&amp;gt;&#039;&lt;br /&gt;
&lt;br /&gt;
    return prefix .. replaced .. collapse&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
return p&lt;/div&gt;</summary>
		<author><name>76561198048502585</name></author>
	</entry>
	<entry>
		<id>https://wiki.hoodedhorse.com/Heroes_of_Might_and_Magic_Olden_Era/index.php?title=Module:Patch&amp;diff=41558</id>
		<title>Module:Patch</title>
		<link rel="alternate" type="text/html" href="https://wiki.hoodedhorse.com/Heroes_of_Might_and_Magic_Olden_Era/index.php?title=Module:Patch&amp;diff=41558"/>
		<updated>2026-10-14T07:13:52Z</updated>

		<summary type="html">&lt;p&gt;76561198048502585: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;-- Usage: see Module:Patch/doc&lt;br /&gt;
local p = {}&lt;br /&gt;
&lt;br /&gt;
-- Displays a variable&lt;br /&gt;
------------------------------------------------------------------------------------------------------------------------&lt;br /&gt;
local function dump(target)&lt;br /&gt;
    return &#039;&amp;lt;pre&amp;gt;&#039; .. mw.dumpObject(target) .. &#039;&amp;lt;/pre&amp;gt;&#039;&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
--&lt;br /&gt;
------------------------------------------------------------------------------------------------------------------------&lt;br /&gt;
local function renderSkillLink(id, lang, field, frame)&lt;br /&gt;
    local template = &#039;{{Skill&#039;&lt;br /&gt;
        .. &#039;| id=&#039; .. id&lt;br /&gt;
        .. &#039;| level=&#039; .. (field:match(&amp;quot;level_(%d+)&amp;quot;) or &#039;&#039;)&lt;br /&gt;
        .. &#039;| lang=&#039; .. lang&lt;br /&gt;
        .. &#039;}}&#039;&lt;br /&gt;
    return frame:preprocess(template)&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
--&lt;br /&gt;
------------------------------------------------------------------------------------------------------------------------&lt;br /&gt;
local function renderHeroLink(id, lang, frame)&lt;br /&gt;
    local template = &#039;{{LinkIcon&#039;&lt;br /&gt;
        .. &#039;| id=&#039; .. id&lt;br /&gt;
        .. &#039;| type=hero&#039;&lt;br /&gt;
        .. &#039;| filename=1&#039;&lt;br /&gt;
        .. &#039;| lang=&#039; .. lang&lt;br /&gt;
        .. &#039;}}&#039;&lt;br /&gt;
    return frame:preprocess(template)&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
--&lt;br /&gt;
------------------------------------------------------------------------------------------------------------------------&lt;br /&gt;
function p.renderLink(frame)&lt;br /&gt;
    local args = frame.args&lt;br /&gt;
    local id = args.id or &#039;&#039;&lt;br /&gt;
    local lang = args.lang or &#039;&#039;&lt;br /&gt;
    local field = args.field or &#039;&#039;&lt;br /&gt;
&lt;br /&gt;
    if id:match(&#039;skill_&#039;) then&lt;br /&gt;
        return renderSkillLink(id, lang, field, frame)&lt;br /&gt;
    end&lt;br /&gt;
&lt;br /&gt;
    if id:match(&#039;_hero_&#039;) then&lt;br /&gt;
        return renderHeroLink(id, lang, frame)&lt;br /&gt;
    end&lt;br /&gt;
&lt;br /&gt;
    return id&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
--&lt;br /&gt;
------------------------------------------------------------------------------------------------------------------------&lt;br /&gt;
local function replaceMarkers(text)&lt;br /&gt;
    return text:gsub(&amp;quot;❮(.-)▸(.-)❯&amp;quot;, &amp;quot;&amp;lt;del&amp;gt;%1&amp;lt;/del&amp;gt;&amp;lt;ins&amp;gt;%2&amp;lt;/ins&amp;gt;&amp;quot;)&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
--&lt;br /&gt;
------------------------------------------------------------------------------------------------------------------------&lt;br /&gt;
local function getOld(text)&lt;br /&gt;
    return text:gsub(&amp;quot;❮([^▸]*)▸([^❯]*)❯&amp;quot;, &amp;quot;%1&amp;quot;)&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
--&lt;br /&gt;
------------------------------------------------------------------------------------------------------------------------&lt;br /&gt;
local function getNew(text)&lt;br /&gt;
    return text:gsub(&amp;quot;❮([^▸]*)▸([^❯]*)❯&amp;quot;, &amp;quot;%2&amp;quot;)&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
--&lt;br /&gt;
------------------------------------------------------------------------------------------------------------------------&lt;br /&gt;
local function generateCollapse(old, new)&lt;br /&gt;
    local container = mw.html.create(&#039;div&#039;)&lt;br /&gt;
    :addClass(&#039;mw-collapsible mw-collapsed&#039;)&lt;br /&gt;
&lt;br /&gt;
    container:tag(&#039;span&#039;)&lt;br /&gt;
        :addClass(&#039;mw-collapsible-toggle&#039;)&lt;br /&gt;
        :wikitext(&#039;🔽&#039;)&lt;br /&gt;
&lt;br /&gt;
    container:tag(&#039;div&#039;)&lt;br /&gt;
        :addClass(&#039;mw-collapsible-content&#039;)&lt;br /&gt;
        :wikitext(&#039;Your dynamic Lua content here&#039;)&lt;br /&gt;
    return container;&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
--&lt;br /&gt;
------------------------------------------------------------------------------------------------------------------------&lt;br /&gt;
function p.renderText(frame)&lt;br /&gt;
    local args = frame.args&lt;br /&gt;
    local field = args.field or &#039;&#039;&lt;br /&gt;
    local summary = args.summary or &#039;&#039;&lt;br /&gt;
&lt;br /&gt;
    local prefix = field:match(&#039;description&#039;) and &#039;&#039; or (field .. &#039;: &#039;)&lt;br /&gt;
    local replaced = replaceMarkers(summary)&lt;br /&gt;
&lt;br /&gt;
    local collapse = &#039;&amp;lt;div class=&amp;quot;mw-collapsible mw-collapsed&amp;quot;&amp;gt;&#039;&lt;br /&gt;
    collapse = collapse .. &#039;&amp;lt;span class=&amp;quot;mw-collapsible-toggle&amp;quot;&amp;gt;🔽&amp;lt;/span&amp;gt;&#039;&lt;br /&gt;
    collapse = collapse .. &#039;&amp;lt;div class=&amp;quot;mw-collapsible-content&amp;quot;&amp;gt;&#039;&lt;br /&gt;
    collapse = collapse .. &#039;❌ &#039; .. getOld(summary)&lt;br /&gt;
    collapse = collapse .. &#039;&amp;lt;br/&amp;gt;&#039;&lt;br /&gt;
    collapse = collapse .. &#039;✅ &#039; .. getNew(summary)&lt;br /&gt;
    collapse = collapse .. &#039;&amp;lt;/div&amp;gt;&#039;&lt;br /&gt;
    collapse = collapse .. &#039;&amp;lt;/div&amp;gt;&#039;&lt;br /&gt;
&lt;br /&gt;
    return prefix .. replaced .. collapse&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
return p&lt;/div&gt;</summary>
		<author><name>76561198048502585</name></author>
	</entry>
	<entry>
		<id>https://wiki.hoodedhorse.com/Heroes_of_Might_and_Magic_Olden_Era/index.php?title=Module:Patch&amp;diff=41557</id>
		<title>Module:Patch</title>
		<link rel="alternate" type="text/html" href="https://wiki.hoodedhorse.com/Heroes_of_Might_and_Magic_Olden_Era/index.php?title=Module:Patch&amp;diff=41557"/>
		<updated>2026-10-14T07:06:33Z</updated>

		<summary type="html">&lt;p&gt;76561198048502585: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;-- Usage: see Module:Patch/doc&lt;br /&gt;
local p = {}&lt;br /&gt;
&lt;br /&gt;
-- Displays a variable&lt;br /&gt;
------------------------------------------------------------------------------------------------------------------------&lt;br /&gt;
local function dump(target)&lt;br /&gt;
    return &#039;&amp;lt;pre&amp;gt;&#039; .. mw.dumpObject(target) .. &#039;&amp;lt;/pre&amp;gt;&#039;&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
--&lt;br /&gt;
------------------------------------------------------------------------------------------------------------------------&lt;br /&gt;
local function renderSkillLink(id, lang, field, frame)&lt;br /&gt;
    local template = &#039;{{Skill&#039;&lt;br /&gt;
        .. &#039;| id=&#039; .. id&lt;br /&gt;
        .. &#039;| level=&#039; .. (field:match(&amp;quot;level_(%d+)&amp;quot;) or &#039;&#039;)&lt;br /&gt;
        .. &#039;| lang=&#039; .. lang&lt;br /&gt;
        .. &#039;}}&#039;&lt;br /&gt;
    return frame:preprocess(template)&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
--&lt;br /&gt;
------------------------------------------------------------------------------------------------------------------------&lt;br /&gt;
local function renderHeroLink(id, lang, frame)&lt;br /&gt;
    local template = &#039;{{LinkIcon&#039;&lt;br /&gt;
        .. &#039;| id=&#039; .. id&lt;br /&gt;
        .. &#039;| type=hero&#039;&lt;br /&gt;
        .. &#039;| filename=1&#039;&lt;br /&gt;
        .. &#039;| lang=&#039; .. lang&lt;br /&gt;
        .. &#039;}}&#039;&lt;br /&gt;
    return frame:preprocess(template)&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
--&lt;br /&gt;
------------------------------------------------------------------------------------------------------------------------&lt;br /&gt;
function p.renderLink(frame)&lt;br /&gt;
    local args = frame.args&lt;br /&gt;
    local id = args.id or &#039;&#039;&lt;br /&gt;
    local lang = args.lang or &#039;&#039;&lt;br /&gt;
    local field = args.field or &#039;&#039;&lt;br /&gt;
&lt;br /&gt;
    if id:match(&#039;skill_&#039;) then&lt;br /&gt;
        return renderSkillLink(id, lang, field, frame)&lt;br /&gt;
    end&lt;br /&gt;
&lt;br /&gt;
    if id:match(&#039;_hero_&#039;) then&lt;br /&gt;
        return renderHeroLink(id, lang, frame)&lt;br /&gt;
    end&lt;br /&gt;
&lt;br /&gt;
    return id&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
--&lt;br /&gt;
------------------------------------------------------------------------------------------------------------------------&lt;br /&gt;
local function replaceMarkers(text)&lt;br /&gt;
    return text:gsub(&amp;quot;❮([^▸]*)▸([^❯]*)❯&amp;quot;, &amp;quot;&amp;lt;del&amp;gt;%1&amp;lt;/del&amp;gt;&amp;lt;ins&amp;gt;%2&amp;lt;/ins&amp;gt;&amp;quot;)&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
--&lt;br /&gt;
------------------------------------------------------------------------------------------------------------------------&lt;br /&gt;
local function getOld(text)&lt;br /&gt;
    return text:gsub(&amp;quot;❮([^▸]*)▸([^❯]*)❯&amp;quot;, &amp;quot;%1&amp;quot;)&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
--&lt;br /&gt;
------------------------------------------------------------------------------------------------------------------------&lt;br /&gt;
local function getNew(text)&lt;br /&gt;
    return text:gsub(&amp;quot;❮([^▸]*)▸([^❯]*)❯&amp;quot;, &amp;quot;%2&amp;quot;)&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
--&lt;br /&gt;
------------------------------------------------------------------------------------------------------------------------&lt;br /&gt;
local function generateCollapse(old, new)&lt;br /&gt;
    local container = mw.html.create(&#039;div&#039;)&lt;br /&gt;
    :addClass(&#039;mw-collapsible mw-collapsed&#039;)&lt;br /&gt;
&lt;br /&gt;
    container:tag(&#039;span&#039;)&lt;br /&gt;
        :addClass(&#039;mw-collapsible-toggle&#039;)&lt;br /&gt;
        :wikitext(&#039;🔽&#039;)&lt;br /&gt;
&lt;br /&gt;
    container:tag(&#039;div&#039;)&lt;br /&gt;
        :addClass(&#039;mw-collapsible-content&#039;)&lt;br /&gt;
        :wikitext(&#039;Your dynamic Lua content here&#039;)&lt;br /&gt;
    return container;&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
--&lt;br /&gt;
------------------------------------------------------------------------------------------------------------------------&lt;br /&gt;
function p.renderText(frame)&lt;br /&gt;
    local args = frame.args&lt;br /&gt;
    local field = args.field or &#039;&#039;&lt;br /&gt;
    local summary = args.summary or &#039;&#039;&lt;br /&gt;
&lt;br /&gt;
    local prefix = field:match(&#039;description&#039;) and &#039;&#039; or (field .. &#039;: &#039;)&lt;br /&gt;
    local replaced = replaceMarkers(summary)&lt;br /&gt;
&lt;br /&gt;
    local collapse = &#039;&amp;lt;span class=&amp;quot;mw-customtoggle-myBox&amp;quot;&amp;gt;🔽&amp;lt;/span&amp;gt;&#039;&lt;br /&gt;
    collapse = collapse .. &#039;&amp;lt;div class=&amp;quot;mw-collapsible mw-collapsed&amp;quot; id=&amp;quot;mw-customcollapsible-myBox&amp;quot;&amp;gt;&#039;&lt;br /&gt;
    collapse = collapse .. &#039;❌ &#039; .. getOld(summary)&lt;br /&gt;
    collapse = collapse .. &#039;&amp;lt;br/&amp;gt;&#039;&lt;br /&gt;
    collapse = collapse .. &#039;✅ &#039; .. getNew(summary)&lt;br /&gt;
    collapse = collapse .. &#039;&amp;lt;/div&amp;gt;&#039;&lt;br /&gt;
&lt;br /&gt;
    return prefix .. replaced .. tostring(generateCollapse(old, new))&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
return p&lt;/div&gt;</summary>
		<author><name>76561198048502585</name></author>
	</entry>
	<entry>
		<id>https://wiki.hoodedhorse.com/Heroes_of_Might_and_Magic_Olden_Era/index.php?title=Module:Patch&amp;diff=41556</id>
		<title>Module:Patch</title>
		<link rel="alternate" type="text/html" href="https://wiki.hoodedhorse.com/Heroes_of_Might_and_Magic_Olden_Era/index.php?title=Module:Patch&amp;diff=41556"/>
		<updated>2026-10-14T07:05:29Z</updated>

		<summary type="html">&lt;p&gt;76561198048502585: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;-- Usage: see Module:Patch/doc&lt;br /&gt;
local p = {}&lt;br /&gt;
&lt;br /&gt;
-- Displays a variable&lt;br /&gt;
------------------------------------------------------------------------------------------------------------------------&lt;br /&gt;
local function dump(target)&lt;br /&gt;
    return &#039;&amp;lt;pre&amp;gt;&#039; .. mw.dumpObject(target) .. &#039;&amp;lt;/pre&amp;gt;&#039;&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
--&lt;br /&gt;
------------------------------------------------------------------------------------------------------------------------&lt;br /&gt;
local function renderSkillLink(id, lang, field, frame)&lt;br /&gt;
    local template = &#039;{{Skill&#039;&lt;br /&gt;
        .. &#039;| id=&#039; .. id&lt;br /&gt;
        .. &#039;| level=&#039; .. (field:match(&amp;quot;level_(%d+)&amp;quot;) or &#039;&#039;)&lt;br /&gt;
        .. &#039;| lang=&#039; .. lang&lt;br /&gt;
        .. &#039;}}&#039;&lt;br /&gt;
    return frame:preprocess(template)&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
--&lt;br /&gt;
------------------------------------------------------------------------------------------------------------------------&lt;br /&gt;
local function renderHeroLink(id, lang, frame)&lt;br /&gt;
    local template = &#039;{{LinkIcon&#039;&lt;br /&gt;
        .. &#039;| id=&#039; .. id&lt;br /&gt;
        .. &#039;| type=hero&#039;&lt;br /&gt;
        .. &#039;| filename=1&#039;&lt;br /&gt;
        .. &#039;| lang=&#039; .. lang&lt;br /&gt;
        .. &#039;}}&#039;&lt;br /&gt;
    return frame:preprocess(template)&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
--&lt;br /&gt;
------------------------------------------------------------------------------------------------------------------------&lt;br /&gt;
function p.renderLink(frame)&lt;br /&gt;
    local args = frame.args&lt;br /&gt;
    local id = args.id or &#039;&#039;&lt;br /&gt;
    local lang = args.lang or &#039;&#039;&lt;br /&gt;
    local field = args.field or &#039;&#039;&lt;br /&gt;
&lt;br /&gt;
    if id:match(&#039;skill_&#039;) then&lt;br /&gt;
        return renderSkillLink(id, lang, field, frame)&lt;br /&gt;
    end&lt;br /&gt;
&lt;br /&gt;
    if id:match(&#039;_hero_&#039;) then&lt;br /&gt;
        return renderHeroLink(id, lang, frame)&lt;br /&gt;
    end&lt;br /&gt;
&lt;br /&gt;
    return id&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
--&lt;br /&gt;
------------------------------------------------------------------------------------------------------------------------&lt;br /&gt;
local function replaceMarkers(text)&lt;br /&gt;
    return text:gsub(&amp;quot;❮([^▸]*)▸([^❯]*)❯&amp;quot;, &amp;quot;&amp;lt;del&amp;gt;%1&amp;lt;/del&amp;gt;&amp;lt;ins&amp;gt;%2&amp;lt;/ins&amp;gt;&amp;quot;)&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
--&lt;br /&gt;
------------------------------------------------------------------------------------------------------------------------&lt;br /&gt;
local function getOld(text)&lt;br /&gt;
    return text:gsub(&amp;quot;❮([^▸]*)▸([^❯]*)❯&amp;quot;, &amp;quot;%1&amp;quot;)&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
--&lt;br /&gt;
------------------------------------------------------------------------------------------------------------------------&lt;br /&gt;
local function getNew(text)&lt;br /&gt;
    return text:gsub(&amp;quot;❮([^▸]*)▸([^❯]*)❯&amp;quot;, &amp;quot;%2&amp;quot;)&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
--&lt;br /&gt;
------------------------------------------------------------------------------------------------------------------------&lt;br /&gt;
local function generateCollapse(old, new)&lt;br /&gt;
    local container = mw.html.create(&#039;div&#039;)&lt;br /&gt;
    :addClass(&#039;mw-collapsible mw-collapsed&#039;)&lt;br /&gt;
&lt;br /&gt;
    container:tag(&#039;span&#039;)&lt;br /&gt;
        :addClass(&#039;mw-collapsible-toggle&#039;)&lt;br /&gt;
        :wikitext(&#039;🔽&#039;)&lt;br /&gt;
&lt;br /&gt;
    container:tag(&#039;div&#039;)&lt;br /&gt;
        :addClass(&#039;mw-collapsible-content&#039;)&lt;br /&gt;
        :wikitext(&#039;Your dynamic Lua content here&#039;)&lt;br /&gt;
    return container;&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
--&lt;br /&gt;
------------------------------------------------------------------------------------------------------------------------&lt;br /&gt;
function p.renderText(frame)&lt;br /&gt;
    local args = frame.args&lt;br /&gt;
    local field = args.field or &#039;&#039;&lt;br /&gt;
    local summary = args.summary or &#039;&#039;&lt;br /&gt;
&lt;br /&gt;
    local prefix = field:match(&#039;description&#039;) and &#039;&#039; or (field .. &#039;: &#039;)&lt;br /&gt;
    local replaced = replaceMarkers(summary)&lt;br /&gt;
&lt;br /&gt;
    local collapse = &#039;&amp;lt;span class=&amp;quot;mw-customtoggle-myBox&amp;quot;&amp;gt;🔽&amp;lt;/span&amp;gt;&#039;&lt;br /&gt;
    collapse = collapse .. &#039;&amp;lt;div class=&amp;quot;mw-collapsible mw-collapsed&amp;quot; id=&amp;quot;mw-customcollapsible-myBox&amp;quot;&amp;gt;&#039;&lt;br /&gt;
    collapse = collapse .. &#039;❌ &#039; .. getOld(summary)&lt;br /&gt;
    collapse = collapse .. &#039;&amp;lt;br/&amp;gt;&#039;&lt;br /&gt;
    collapse = collapse .. &#039;✅ &#039; .. getNew(summary)&lt;br /&gt;
    collapse = collapse .. &#039;&amp;lt;/div&amp;gt;&#039;&lt;br /&gt;
&lt;br /&gt;
    return prefix .. replaced .. generateCollapse(old, new)&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
return p&lt;/div&gt;</summary>
		<author><name>76561198048502585</name></author>
	</entry>
	<entry>
		<id>https://wiki.hoodedhorse.com/Heroes_of_Might_and_Magic_Olden_Era/index.php?title=Module:Patch&amp;diff=41555</id>
		<title>Module:Patch</title>
		<link rel="alternate" type="text/html" href="https://wiki.hoodedhorse.com/Heroes_of_Might_and_Magic_Olden_Era/index.php?title=Module:Patch&amp;diff=41555"/>
		<updated>2026-10-14T06:50:23Z</updated>

		<summary type="html">&lt;p&gt;76561198048502585: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;-- Usage: see Module:Patch/doc&lt;br /&gt;
local p = {}&lt;br /&gt;
&lt;br /&gt;
-- Displays a variable&lt;br /&gt;
------------------------------------------------------------------------------------------------------------------------&lt;br /&gt;
local function dump(target)&lt;br /&gt;
    return &#039;&amp;lt;pre&amp;gt;&#039; .. mw.dumpObject(target) .. &#039;&amp;lt;/pre&amp;gt;&#039;&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
--&lt;br /&gt;
------------------------------------------------------------------------------------------------------------------------&lt;br /&gt;
local function renderSkillLink(id, lang, field, frame)&lt;br /&gt;
    local template = &#039;{{Skill&#039;&lt;br /&gt;
        .. &#039;| id=&#039; .. id&lt;br /&gt;
        .. &#039;| level=&#039; .. (field:match(&amp;quot;level_(%d+)&amp;quot;) or &#039;&#039;)&lt;br /&gt;
        .. &#039;| lang=&#039; .. lang&lt;br /&gt;
        .. &#039;}}&#039;&lt;br /&gt;
    return frame:preprocess(template)&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
--&lt;br /&gt;
------------------------------------------------------------------------------------------------------------------------&lt;br /&gt;
local function renderHeroLink(id, lang, frame)&lt;br /&gt;
    local template = &#039;{{LinkIcon&#039;&lt;br /&gt;
        .. &#039;| id=&#039; .. id&lt;br /&gt;
        .. &#039;| type=hero&#039;&lt;br /&gt;
        .. &#039;| filename=1&#039;&lt;br /&gt;
        .. &#039;| lang=&#039; .. lang&lt;br /&gt;
        .. &#039;}}&#039;&lt;br /&gt;
    return frame:preprocess(template)&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
--&lt;br /&gt;
------------------------------------------------------------------------------------------------------------------------&lt;br /&gt;
function p.renderLink(frame)&lt;br /&gt;
    local args = frame.args&lt;br /&gt;
    local id = args.id or &#039;&#039;&lt;br /&gt;
    local lang = args.lang or &#039;&#039;&lt;br /&gt;
    local field = args.field or &#039;&#039;&lt;br /&gt;
&lt;br /&gt;
    if id:match(&#039;skill_&#039;) then&lt;br /&gt;
        return renderSkillLink(id, lang, field, frame)&lt;br /&gt;
    end&lt;br /&gt;
&lt;br /&gt;
    if id:match(&#039;_hero_&#039;) then&lt;br /&gt;
        return renderHeroLink(id, lang, frame)&lt;br /&gt;
    end&lt;br /&gt;
&lt;br /&gt;
    return id&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
--&lt;br /&gt;
------------------------------------------------------------------------------------------------------------------------&lt;br /&gt;
local function replaceMarkers(text)&lt;br /&gt;
    return text:gsub(&amp;quot;❮([^▸]*)▸([^❯]*)❯&amp;quot;, &amp;quot;&amp;lt;del&amp;gt;%1&amp;lt;/del&amp;gt;&amp;lt;ins&amp;gt;%2&amp;lt;/ins&amp;gt;&amp;quot;)&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
--&lt;br /&gt;
------------------------------------------------------------------------------------------------------------------------&lt;br /&gt;
local function getOld(text)&lt;br /&gt;
    return text:gsub(&amp;quot;❮([^▸]*)▸([^❯]*)❯&amp;quot;, &amp;quot;%1&amp;quot;)&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
--&lt;br /&gt;
------------------------------------------------------------------------------------------------------------------------&lt;br /&gt;
local function getNew(text)&lt;br /&gt;
    return text:gsub(&amp;quot;❮([^▸]*)▸([^❯]*)❯&amp;quot;, &amp;quot;%2&amp;quot;)&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
--&lt;br /&gt;
------------------------------------------------------------------------------------------------------------------------&lt;br /&gt;
function p.renderText(frame)&lt;br /&gt;
    local args = frame.args&lt;br /&gt;
    local field = args.field or &#039;&#039;&lt;br /&gt;
    local summary = args.summary or &#039;&#039;&lt;br /&gt;
&lt;br /&gt;
    local prefix = field:match(&#039;description&#039;) and &#039;&#039; or (field .. &#039;: &#039;)&lt;br /&gt;
    local replaced = replaceMarkers(summary)&lt;br /&gt;
&lt;br /&gt;
    local old = getOld(summary)&lt;br /&gt;
    local new = getNew(summary)&lt;br /&gt;
    local hint = &amp;quot;{{Hint|&amp;quot; .. replaced .. &amp;quot;|❌: &amp;quot; .. new .. &amp;quot;&amp;lt;br/&amp;gt;✅: &amp;quot; .. old .. &amp;quot;}}&amp;quot;&lt;br /&gt;
    return prefix .. frame:preprocess(hint)&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
return p&lt;/div&gt;</summary>
		<author><name>76561198048502585</name></author>
	</entry>
	<entry>
		<id>https://wiki.hoodedhorse.com/Heroes_of_Might_and_Magic_Olden_Era/index.php?title=Template:PatchNoteDef&amp;diff=41554</id>
		<title>Template:PatchNoteDef</title>
		<link rel="alternate" type="text/html" href="https://wiki.hoodedhorse.com/Heroes_of_Might_and_Magic_Olden_Era/index.php?title=Template:PatchNoteDef&amp;diff=41554"/>
		<updated>2026-10-14T06:41:02Z</updated>

		<summary type="html">&lt;p&gt;76561198048502585: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&amp;lt;includeonly&amp;gt;&amp;lt;!--&lt;br /&gt;
--&amp;gt;{{#cargo_store:_table=PatchNote&lt;br /&gt;
    | patch   = {{{patch|}}}&lt;br /&gt;
    | id      = {{{id|}}}&lt;br /&gt;
    | field   = {{{field|}}}&lt;br /&gt;
    | summary = {{{summary|}}}&lt;br /&gt;
    | lang    = {{{lang|}}}&lt;br /&gt;
}}&lt;br /&gt;
Created &amp;lt;code&amp;gt;PatchNote&amp;lt;/code&amp;gt; entry:&lt;br /&gt;
&amp;lt;code&amp;gt;{{{patch|}}}: {{{id|}}}.{{{field|}}}&amp;lt;/code&amp;gt;&amp;lt;!--&lt;br /&gt;
--&amp;gt;&amp;lt;/includeonly&amp;gt;&amp;lt;!--&lt;br /&gt;
################################################################################&lt;br /&gt;
--&amp;gt;&amp;lt;noinclude&amp;gt;&lt;br /&gt;
== Schema ==&lt;br /&gt;
{{#cargo_declare:_table=PatchNote&lt;br /&gt;
    | patch   = String&lt;br /&gt;
    | id      = String&lt;br /&gt;
    | field   = String&lt;br /&gt;
    | summary = Wikitext&lt;br /&gt;
    | lang    = String&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
== Example ==&lt;br /&gt;
&amp;lt;pre&amp;gt;&amp;lt;nowiki&amp;gt;&lt;br /&gt;
{{PatchNote&lt;br /&gt;
    | patch   = 0.81.02&lt;br /&gt;
    | id      = fraction_law_demon_22&lt;br /&gt;
    | field   = description&lt;br /&gt;
    | summary = Your @[~Hive ]heroes deal +@[10%~20%] Magic Damage @[in combat~].&lt;br /&gt;
    | lang    = en&lt;br /&gt;
}}&lt;br /&gt;
&amp;lt;/nowiki&amp;gt;&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
[[Category:Cargo Definitions]]&lt;br /&gt;
&amp;lt;/noinclude&amp;gt;&lt;/div&gt;</summary>
		<author><name>76561198048502585</name></author>
	</entry>
	<entry>
		<id>https://wiki.hoodedhorse.com/Heroes_of_Might_and_Magic_Olden_Era/index.php?title=Template:Patch/row&amp;diff=41553</id>
		<title>Template:Patch/row</title>
		<link rel="alternate" type="text/html" href="https://wiki.hoodedhorse.com/Heroes_of_Might_and_Magic_Olden_Era/index.php?title=Template:Patch/row&amp;diff=41553"/>
		<updated>2026-10-14T06:34:42Z</updated>

		<summary type="html">&lt;p&gt;76561198048502585: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&amp;lt;includeonly&amp;gt;&amp;lt;!--&lt;br /&gt;
--&amp;gt;&amp;lt;tr&amp;gt;&lt;br /&gt;
    &amp;lt;td&amp;gt;{{#invoke:Patch|renderLink&lt;br /&gt;
        | id = {{{id|}}}&lt;br /&gt;
        | lang = {{{lang|}}}&lt;br /&gt;
        | field = {{{field|}}}&lt;br /&gt;
    }}&amp;lt;/td&amp;gt;&lt;br /&gt;
    &amp;lt;td&amp;gt;{{#invoke:Patch|renderText&lt;br /&gt;
        | field = {{{field|}}}&lt;br /&gt;
        | summary = {{{summary|}}}&lt;br /&gt;
    }}&amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;/tr&amp;gt;&amp;lt;!--&lt;br /&gt;
--&amp;gt;&amp;lt;/includeonly&amp;gt;&amp;lt;!--&lt;br /&gt;
################################################################################&lt;br /&gt;
--&amp;gt;&amp;lt;noinclude&amp;gt;&lt;br /&gt;
Renders one patch note. For more examples, see [[Module:Patch/doc]].&lt;br /&gt;
&lt;br /&gt;
==1. Normal:==&lt;br /&gt;
{{Color|yellow|Input:}}&lt;br /&gt;
&amp;lt;pre&amp;gt;&amp;lt;nowiki&amp;gt;&lt;br /&gt;
{{Patch/row&lt;br /&gt;
    | id = skill_sorcery&lt;br /&gt;
    | field = skill_description&lt;br /&gt;
    | summary=+❮10▸20❯% Magic Damage&amp;lt;br/&amp;gt;dealt.&lt;br /&gt;
    | lang = en&lt;br /&gt;
}}&amp;lt;/nowiki&amp;gt;&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
{{Color|lime|Output:}}&lt;br /&gt;
{{Patch/row&lt;br /&gt;
    | id = skill_sorcery&lt;br /&gt;
    | field = skill_description&lt;br /&gt;
    | summary=+❮10▸20❯% Magic Damage&amp;lt;br/&amp;gt;dealt.&lt;br /&gt;
    | lang = en&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
__NOTOC__&lt;br /&gt;
&amp;lt;/noinclude&amp;gt;&lt;/div&gt;</summary>
		<author><name>76561198048502585</name></author>
	</entry>
	<entry>
		<id>https://wiki.hoodedhorse.com/Heroes_of_Might_and_Magic_Olden_Era/index.php?title=Template:Patch/styles.css&amp;diff=41552</id>
		<title>Template:Patch/styles.css</title>
		<link rel="alternate" type="text/html" href="https://wiki.hoodedhorse.com/Heroes_of_Might_and_Magic_Olden_Era/index.php?title=Template:Patch/styles.css&amp;diff=41552"/>
		<updated>2026-10-14T06:31:22Z</updated>

		<summary type="html">&lt;p&gt;76561198048502585: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;.patch-table th {&lt;br /&gt;
    text-align: left;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
.patch-table .wiki-hint {&lt;br /&gt;
    color: #fff;&lt;br /&gt;
    border-radius: 2px;&lt;br /&gt;
    margin: 2px;&lt;br /&gt;
    padding: 0 2px;&lt;br /&gt;
    border: solid 1px #82acd7;&lt;br /&gt;
    background: #090c1f;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
.patch-table del {&lt;br /&gt;
    opacity: 0.3;&lt;br /&gt;
    text-decoration: none;&lt;br /&gt;
    font-size: smaller;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
.patch-table ins {&lt;br /&gt;
    color: peru;&lt;br /&gt;
    text-decoration: none;&lt;br /&gt;
    font-weight: bold;&lt;br /&gt;
}&lt;/div&gt;</summary>
		<author><name>76561198048502585</name></author>
	</entry>
	<entry>
		<id>https://wiki.hoodedhorse.com/Heroes_of_Might_and_Magic_Olden_Era/index.php?title=Template:Patch/styles.css&amp;diff=41551</id>
		<title>Template:Patch/styles.css</title>
		<link rel="alternate" type="text/html" href="https://wiki.hoodedhorse.com/Heroes_of_Might_and_Magic_Olden_Era/index.php?title=Template:Patch/styles.css&amp;diff=41551"/>
		<updated>2026-10-14T06:30:36Z</updated>

		<summary type="html">&lt;p&gt;76561198048502585: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;.patch-table th {&lt;br /&gt;
    text-align: left;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
.patch-table .wiki-hint {&lt;br /&gt;
    color: #fff;&lt;br /&gt;
    border-radius: 2px;&lt;br /&gt;
    margin: 2px;&lt;br /&gt;
    padding: 0 2px;&lt;br /&gt;
    border: solid 1px #82acd7;&lt;br /&gt;
    background: #090c1f;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
.patch-table del {&lt;br /&gt;
    opacity: 0.4;&lt;br /&gt;
    text-decoration: none;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
.patch-table ins {&lt;br /&gt;
    color: peru;&lt;br /&gt;
    text-decoration: none;&lt;br /&gt;
}&lt;/div&gt;</summary>
		<author><name>76561198048502585</name></author>
	</entry>
	<entry>
		<id>https://wiki.hoodedhorse.com/Heroes_of_Might_and_Magic_Olden_Era/index.php?title=Template:Patch/styles.css&amp;diff=41550</id>
		<title>Template:Patch/styles.css</title>
		<link rel="alternate" type="text/html" href="https://wiki.hoodedhorse.com/Heroes_of_Might_and_Magic_Olden_Era/index.php?title=Template:Patch/styles.css&amp;diff=41550"/>
		<updated>2026-10-14T06:28:44Z</updated>

		<summary type="html">&lt;p&gt;76561198048502585: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;.patch-table th {&lt;br /&gt;
    text-align: left;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
.patch-table .wiki-hint {&lt;br /&gt;
    color: #fff;&lt;br /&gt;
    border-radius: 2px;&lt;br /&gt;
    margin: 2px;&lt;br /&gt;
    padding: 0 2px;&lt;br /&gt;
    border: solid 1px #82acd7;&lt;br /&gt;
    background: #090c1f;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
.patch-table del {&lt;br /&gt;
    opacity: 0.5;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
.patch-table del {&lt;br /&gt;
    color: peru;&lt;br /&gt;
}&lt;/div&gt;</summary>
		<author><name>76561198048502585</name></author>
	</entry>
	<entry>
		<id>https://wiki.hoodedhorse.com/Heroes_of_Might_and_Magic_Olden_Era/index.php?title=Module:Patch&amp;diff=41549</id>
		<title>Module:Patch</title>
		<link rel="alternate" type="text/html" href="https://wiki.hoodedhorse.com/Heroes_of_Might_and_Magic_Olden_Era/index.php?title=Module:Patch&amp;diff=41549"/>
		<updated>2026-10-14T06:28:43Z</updated>

		<summary type="html">&lt;p&gt;76561198048502585: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;-- Usage: see Module:Patch/doc&lt;br /&gt;
local p = {}&lt;br /&gt;
&lt;br /&gt;
-- Displays a variable&lt;br /&gt;
------------------------------------------------------------------------------------------------------------------------&lt;br /&gt;
local function dump(target)&lt;br /&gt;
    return &#039;&amp;lt;pre&amp;gt;&#039; .. mw.dumpObject(target) .. &#039;&amp;lt;/pre&amp;gt;&#039;&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
--&lt;br /&gt;
------------------------------------------------------------------------------------------------------------------------&lt;br /&gt;
local function renderSkillLink(id, lang, field, frame)&lt;br /&gt;
    local template = &#039;{{Skill&#039;&lt;br /&gt;
        .. &#039;| id=&#039; .. id&lt;br /&gt;
        .. &#039;| level=&#039; .. (field:match(&amp;quot;level_(%d+)&amp;quot;) or &#039;&#039;)&lt;br /&gt;
        .. &#039;| lang=&#039; .. lang&lt;br /&gt;
        .. &#039;}}&#039;&lt;br /&gt;
    return frame:preprocess(template)&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
--&lt;br /&gt;
------------------------------------------------------------------------------------------------------------------------&lt;br /&gt;
local function renderHeroLink(id, lang, frame)&lt;br /&gt;
    local template = &#039;{{LinkIcon&#039;&lt;br /&gt;
        .. &#039;| id=&#039; .. id&lt;br /&gt;
        .. &#039;| type=hero&#039;&lt;br /&gt;
        .. &#039;| filename=1&#039;&lt;br /&gt;
        .. &#039;| lang=&#039; .. lang&lt;br /&gt;
        .. &#039;}}&#039;&lt;br /&gt;
    return frame:preprocess(template)&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
--&lt;br /&gt;
------------------------------------------------------------------------------------------------------------------------&lt;br /&gt;
function p.renderLink(frame)&lt;br /&gt;
    local args = frame.args&lt;br /&gt;
    local id = args.id or &#039;&#039;&lt;br /&gt;
    local lang = args.lang or &#039;&#039;&lt;br /&gt;
    local field = args.field or &#039;&#039;&lt;br /&gt;
&lt;br /&gt;
    if id:match(&#039;skill_&#039;) then&lt;br /&gt;
        return renderSkillLink(id, lang, field, frame)&lt;br /&gt;
    end&lt;br /&gt;
&lt;br /&gt;
    if id:match(&#039;_hero_&#039;) then&lt;br /&gt;
        return renderHeroLink(id, lang, frame)&lt;br /&gt;
    end&lt;br /&gt;
&lt;br /&gt;
    return id&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
--&lt;br /&gt;
------------------------------------------------------------------------------------------------------------------------&lt;br /&gt;
local function replaceMarkers(text)&lt;br /&gt;
    return text:gsub(&amp;quot;❮([^▸]*)▸([^❯]*)❯&amp;quot;, &amp;quot;&amp;lt;del&amp;gt;%1&amp;lt;/del&amp;gt;&amp;lt;ins&amp;gt;%2&amp;lt;/ins&amp;gt;&amp;quot;)&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
--&lt;br /&gt;
------------------------------------------------------------------------------------------------------------------------&lt;br /&gt;
function p.renderText(frame)&lt;br /&gt;
    local args = frame.args&lt;br /&gt;
    local field = args.field or &#039;&#039;&lt;br /&gt;
    local summary = args.summary or &#039;&#039;&lt;br /&gt;
&lt;br /&gt;
    local prefix = field:match(&#039;description&#039;) and &#039;&#039; or (field .. &#039;: &#039;)&lt;br /&gt;
    local replaced = replaceMarkers(summary)&lt;br /&gt;
&lt;br /&gt;
    return prefix .. frame:preprocess(replaced)&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
return p&lt;/div&gt;</summary>
		<author><name>76561198048502585</name></author>
	</entry>
	<entry>
		<id>https://wiki.hoodedhorse.com/Heroes_of_Might_and_Magic_Olden_Era/index.php?title=Template:Patch&amp;diff=41548</id>
		<title>Template:Patch</title>
		<link rel="alternate" type="text/html" href="https://wiki.hoodedhorse.com/Heroes_of_Might_and_Magic_Olden_Era/index.php?title=Template:Patch&amp;diff=41548"/>
		<updated>2026-10-14T06:20:18Z</updated>

		<summary type="html">&lt;p&gt;76561198048502585: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&amp;lt;includeonly&amp;gt;&amp;lt;!--&lt;br /&gt;
--&amp;gt;&amp;lt;templatestyles src=&amp;quot;Template:Patch/styles.css&amp;quot; /&amp;gt;&amp;lt;!--&lt;br /&gt;
--&amp;gt;Patch {{b|v{{{version}}}}} was released on {{PatchDate|{{{version}}}}}.&lt;br /&gt;
&lt;br /&gt;
The changes below were detected automatically. For the official release notes, see [[Patches/v{{{version}}}]].&lt;br /&gt;
&lt;br /&gt;
== Automated Patch Notes ==&lt;br /&gt;
&lt;br /&gt;
&amp;lt;table class=&#039;patch-table wikitable sortable&#039;&amp;gt;&lt;br /&gt;
&amp;lt;!--======== HEADER ==========================================================--&amp;gt;&lt;br /&gt;
    &amp;lt;tr&amp;gt;&lt;br /&gt;
        &amp;lt;th&amp;gt;Target&amp;lt;/th&amp;gt;&lt;br /&gt;
        &amp;lt;th&amp;gt;Note&amp;lt;/th&amp;gt;&lt;br /&gt;
    &amp;lt;/tr&amp;gt;&lt;br /&gt;
    {{#cargo_query:&lt;br /&gt;
        tables = PatchNote = N&lt;br /&gt;
        | where =&lt;br /&gt;
            N.patch = &amp;quot;{{{version}}}&amp;quot;&lt;br /&gt;
            AND (N.lang = &amp;quot;{{{lang|en}}}&amp;quot; OR N.lang IS NULL)&lt;br /&gt;
        | fields =&lt;br /&gt;
            N.id = id,&lt;br /&gt;
            N.field = field,&lt;br /&gt;
            N.summary = summary,&lt;br /&gt;
            CONCAT(&amp;quot;{{{lang|en}}}&amp;quot;) = lang,&lt;br /&gt;
        | format = template&lt;br /&gt;
        | template = Patch/row&lt;br /&gt;
        | named args = yes&lt;br /&gt;
        | default = Cannot find patch &amp;quot;{{{id}}}&amp;quot;.&lt;br /&gt;
    }}&lt;br /&gt;
&amp;lt;/table&amp;gt;&lt;br /&gt;
Source: [[Data:Patches/v{{{version}}}]]&lt;br /&gt;
&lt;br /&gt;
    &amp;lt;!--&lt;br /&gt;
--&amp;gt;&amp;lt;/includeonly&amp;gt;&amp;lt;!--&lt;br /&gt;
################################################################################&lt;br /&gt;
--&amp;gt;&amp;lt;noinclude&amp;gt;&lt;br /&gt;
Finds the patch notes for a particular patch version.&lt;br /&gt;
&lt;br /&gt;
{{Color|yellow|Input:}}&lt;br /&gt;
&amp;lt;code&amp;gt;&amp;lt;nowiki&amp;gt;{{Patch | version=0.80.34}}&amp;lt;/nowiki&amp;gt;&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
{{Color|lime|Output:}}&lt;br /&gt;
{{Patch | version=0.80.34}}&lt;br /&gt;
&lt;br /&gt;
__NOTOC__&lt;br /&gt;
&amp;lt;/noinclude&amp;gt;&lt;/div&gt;</summary>
		<author><name>76561198048502585</name></author>
	</entry>
	<entry>
		<id>https://wiki.hoodedhorse.com/Heroes_of_Might_and_Magic_Olden_Era/index.php?title=Template:PatchDate&amp;diff=41547</id>
		<title>Template:PatchDate</title>
		<link rel="alternate" type="text/html" href="https://wiki.hoodedhorse.com/Heroes_of_Might_and_Magic_Olden_Era/index.php?title=Template:PatchDate&amp;diff=41547"/>
		<updated>2026-10-13T16:48:21Z</updated>

		<summary type="html">&lt;p&gt;76561198048502585: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&amp;lt;includeonly&amp;gt;&amp;lt;!--&lt;br /&gt;
--&amp;gt;{{b|{{#cargo_query:&lt;br /&gt;
    tables=Patch&lt;br /&gt;
    |where=Patch.id=&amp;quot;{{{1}}}&amp;quot;&lt;br /&gt;
    |fields=Patch.date&lt;br /&gt;
}}}}&amp;lt;!--&lt;br /&gt;
################################################################################&lt;br /&gt;
--&amp;gt;&amp;lt;/includeonly&amp;gt;&amp;lt;noinclude&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Renders the calendar day when a patch happened.&lt;br /&gt;
&lt;br /&gt;
==Normal==&lt;br /&gt;
{{Color|yellow|Input:}} &amp;lt;code&amp;gt;&amp;lt;nowiki&amp;gt;{{PatchDate|0.80.34}}&amp;lt;/nowiki&amp;gt;&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
{{Color|lime|Output:}} {{PatchDate|0.80.34}}&lt;br /&gt;
&lt;br /&gt;
==Wrong Patch Number==&lt;br /&gt;
{{Color|yellow|Input:}} &amp;lt;code&amp;gt;&amp;lt;nowiki&amp;gt;{{PatchDate|foo}}&amp;lt;/nowiki&amp;gt;&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
{{Color|lime|Output:}} {{PatchDate|foo}}&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/noinclude&amp;gt;&lt;/div&gt;</summary>
		<author><name>76561198048502585</name></author>
	</entry>
	<entry>
		<id>https://wiki.hoodedhorse.com/Heroes_of_Might_and_Magic_Olden_Era/index.php?title=Patches/v0.81.02&amp;diff=41546</id>
		<title>Patches/v0.81.02</title>
		<link rel="alternate" type="text/html" href="https://wiki.hoodedhorse.com/Heroes_of_Might_and_Magic_Olden_Era/index.php?title=Patches/v0.81.02&amp;diff=41546"/>
		<updated>2026-10-13T16:47:35Z</updated>

		<summary type="html">&lt;p&gt;76561198048502585: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{DISPLAYTITLE:Patch v0.81.02 (Alliances &amp;amp; Updated Random Map Generator)}}&lt;br /&gt;
Patch {{b|0.81.02}} was released on {{PatchDate|0.81.02}}.&lt;br /&gt;
&lt;br /&gt;
For automatically detected differences, see [[Patches/v0.81.02_auto]].&lt;br /&gt;
&lt;br /&gt;
== Changelog ==&lt;br /&gt;
TODO&lt;br /&gt;
&lt;br /&gt;
== External Links ==&lt;br /&gt;
* [https://steamcommunity.com/games/3105440/announcements/detail/676258795703240872 Official Post]&lt;br /&gt;
&lt;br /&gt;
__NOTOC__&lt;br /&gt;
[[Category:Patch Notes]]&lt;/div&gt;</summary>
		<author><name>76561198048502585</name></author>
	</entry>
	<entry>
		<id>https://wiki.hoodedhorse.com/Heroes_of_Might_and_Magic_Olden_Era/index.php?title=Template:PatchDate&amp;diff=41545</id>
		<title>Template:PatchDate</title>
		<link rel="alternate" type="text/html" href="https://wiki.hoodedhorse.com/Heroes_of_Might_and_Magic_Olden_Era/index.php?title=Template:PatchDate&amp;diff=41545"/>
		<updated>2026-10-13T16:47:06Z</updated>

		<summary type="html">&lt;p&gt;76561198048502585: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&amp;lt;includeonly&amp;gt;&amp;lt;!--&lt;br /&gt;
--&amp;gt;{{b|{{#cargo_query:&lt;br /&gt;
    tables=Patch&lt;br /&gt;
    |where=Patch.id=&amp;quot;0.80.34&amp;quot;&lt;br /&gt;
    |fields=Patch.date&lt;br /&gt;
}}}}&amp;lt;!--&lt;br /&gt;
################################################################################&lt;br /&gt;
--&amp;gt;&amp;lt;/includeonly&amp;gt;&amp;lt;noinclude&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Renders the calendar day when a patch happened.&lt;br /&gt;
&lt;br /&gt;
==Normal==&lt;br /&gt;
{{Color|yellow|Input:}} &amp;lt;code&amp;gt;&amp;lt;nowiki&amp;gt;{{PatchDate|0.80.34}}&amp;lt;/nowiki&amp;gt;&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
{{Color|lime|Output:}} {{PatchDate|0.80.34}}&lt;br /&gt;
&lt;br /&gt;
==Wrong Patch Number==&lt;br /&gt;
{{Color|yellow|Input:}} &amp;lt;code&amp;gt;&amp;lt;nowiki&amp;gt;{{PatchDate|foo}}&amp;lt;/nowiki&amp;gt;&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
{{Color|lime|Output:}} {{PatchDate|foo}}&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/noinclude&amp;gt;&lt;/div&gt;</summary>
		<author><name>76561198048502585</name></author>
	</entry>
	<entry>
		<id>https://wiki.hoodedhorse.com/Heroes_of_Might_and_Magic_Olden_Era/index.php?title=Template:PatchDate&amp;diff=41544</id>
		<title>Template:PatchDate</title>
		<link rel="alternate" type="text/html" href="https://wiki.hoodedhorse.com/Heroes_of_Might_and_Magic_Olden_Era/index.php?title=Template:PatchDate&amp;diff=41544"/>
		<updated>2026-10-13T16:46:24Z</updated>

		<summary type="html">&lt;p&gt;76561198048502585: Created page with &amp;quot;&amp;lt;includeonly&amp;gt;&amp;lt;!-- --&amp;gt;{{b|{{#cargo_query:     tables=Patch     |where=Patch.id=&amp;quot;0.80.34&amp;quot;     |fields=Patch.date }}}}.&amp;lt;!-- ################################################################################ --&amp;gt;&amp;lt;/includeonly&amp;gt;&amp;lt;noinclude&amp;gt;  Renders the calendar day when a patch happened.  ==Normal== {{Color|yellow|Input:}} &amp;lt;code&amp;gt;&amp;lt;nowiki&amp;gt;{{PatchDate|0.80.34}}&amp;lt;/nowiki&amp;gt;&amp;lt;/code&amp;gt;  {{Color|lime|Output:}} {{PatchDate|0.80.34}}  ==Wrong Patch Number== {{Color|yellow|Input:}} &amp;lt;code&amp;gt;&amp;lt;nowiki...&amp;quot;&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&amp;lt;includeonly&amp;gt;&amp;lt;!--&lt;br /&gt;
--&amp;gt;{{b|{{#cargo_query:&lt;br /&gt;
    tables=Patch&lt;br /&gt;
    |where=Patch.id=&amp;quot;0.80.34&amp;quot;&lt;br /&gt;
    |fields=Patch.date&lt;br /&gt;
}}}}.&amp;lt;!--&lt;br /&gt;
################################################################################&lt;br /&gt;
--&amp;gt;&amp;lt;/includeonly&amp;gt;&amp;lt;noinclude&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Renders the calendar day when a patch happened.&lt;br /&gt;
&lt;br /&gt;
==Normal==&lt;br /&gt;
{{Color|yellow|Input:}} &amp;lt;code&amp;gt;&amp;lt;nowiki&amp;gt;{{PatchDate|0.80.34}}&amp;lt;/nowiki&amp;gt;&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
{{Color|lime|Output:}} {{PatchDate|0.80.34}}&lt;br /&gt;
&lt;br /&gt;
==Wrong Patch Number==&lt;br /&gt;
{{Color|yellow|Input:}} &amp;lt;code&amp;gt;&amp;lt;nowiki&amp;gt;{{PatchDate|foo}}&amp;lt;/nowiki&amp;gt;&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
{{Color|lime|Output:}} {{PatchDate|foo}}&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/noinclude&amp;gt;&lt;/div&gt;</summary>
		<author><name>76561198048502585</name></author>
	</entry>
	<entry>
		<id>https://wiki.hoodedhorse.com/Heroes_of_Might_and_Magic_Olden_Era/index.php?title=Patches/v0.81.02&amp;diff=41543</id>
		<title>Patches/v0.81.02</title>
		<link rel="alternate" type="text/html" href="https://wiki.hoodedhorse.com/Heroes_of_Might_and_Magic_Olden_Era/index.php?title=Patches/v0.81.02&amp;diff=41543"/>
		<updated>2026-10-13T16:46:23Z</updated>

		<summary type="html">&lt;p&gt;76561198048502585: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{DISPLAYTITLE:Patch v0.81.02 (Alliances &amp;amp; Updated Random Map Generator)}}&lt;br /&gt;
Patch {{b|0.80.34}} was released on {{PatchDate|0.80.34}}.&lt;br /&gt;
&lt;br /&gt;
For automatically detected differences, see [[Patches/v0.81.02_auto]].&lt;br /&gt;
&lt;br /&gt;
== Changelog ==&lt;br /&gt;
TODO&lt;br /&gt;
&lt;br /&gt;
== External Links ==&lt;br /&gt;
* [https://steamcommunity.com/games/3105440/announcements/detail/676258795703240872 Official Post]&lt;br /&gt;
&lt;br /&gt;
__NOTOC__&lt;br /&gt;
[[Category:Patch Notes]]&lt;/div&gt;</summary>
		<author><name>76561198048502585</name></author>
	</entry>
	<entry>
		<id>https://wiki.hoodedhorse.com/Heroes_of_Might_and_Magic_Olden_Era/index.php?title=MediaWiki:DiffTool.js&amp;diff=41542</id>
		<title>MediaWiki:DiffTool.js</title>
		<link rel="alternate" type="text/html" href="https://wiki.hoodedhorse.com/Heroes_of_Might_and_Magic_Olden_Era/index.php?title=MediaWiki:DiffTool.js&amp;diff=41542"/>
		<updated>2026-10-13T16:28:14Z</updated>

		<summary type="html">&lt;p&gt;76561198048502585: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;//Source:https://github.com/Aurelain/oe-wiki/tree/main/src/diff&lt;br /&gt;
(()=&amp;gt;{var Q,g,xe,ft,L,ve,De,Ae,oe,V,W,Se,se,re,ie,ut,K={},J=[],dt=/acit|ex(?:s|g|n|p|$)|rph|grid|ows|mnc|ntw|ine[ch]|zoo|^ord|itera/i,X=Array.isArray;function S(t,e){for(var n in e)t[n]=e[n];return t}function le(t){t&amp;amp;&amp;amp;t.parentNode&amp;amp;&amp;amp;t.parentNode.removeChild(t)}function pt(t,e,n){var r,i,o,s={};for(o in e)o==&amp;quot;key&amp;quot;?r=e[o]:o==&amp;quot;ref&amp;quot;?i=e[o]:s[o]=e[o];if(arguments.length&amp;gt;2&amp;amp;&amp;amp;(s.children=arguments.length&amp;gt;3?Q.call(arguments,2):n),typeof t==&amp;quot;function&amp;quot;&amp;amp;&amp;amp;t.defaultProps!=null)for(o in t.defaultProps)s[o]===void 0&amp;amp;&amp;amp;(s[o]=t.defaultProps[o]);return z(t,s,r,i,null)}function z(t,e,n,r,i){var o={type:t,props:e,key:n,ref:r,__k:null,__:null,__b:0,__e:null,__c:null,constructor:void 0,__v:i??++xe,__i:-1,__u:0};return i==null&amp;amp;&amp;amp;g.vnode!=null&amp;amp;&amp;amp;g.vnode(o),o}function Le(){return{current:null}}function N(t){return t.children}function T(t,e){this.props=t,this.context=e}function R(t,e){if(e==null)return t.__?R(t.__,t.__i+1):null;for(var n;e&amp;lt;t.__k.length;e++)if((n=t.__k[e])!=null&amp;amp;&amp;amp;n.__e!=null)return n.__e;return typeof t.type==&amp;quot;function&amp;quot;?R(t):null}function _t(t){if(t.__P&amp;amp;&amp;amp;t.__d){var e=t.__v,n=e.__e,r=[],i=[],o=S({},e);o.__v=e.__v+1,g.vnode&amp;amp;&amp;amp;g.vnode(o),ae(t.__P,o,e,t.__n,t.__P.namespaceURI,32&amp;amp;e.__u?[n]:null,r,n??R(e),!!(32&amp;amp;e.__u),i),o.__v=e.__v,o.__.__k[o.__i]=o,Fe(r,o,i),e.__e=e.__=null,o.__e!=n&amp;amp;&amp;amp;Ee(o)}}function Ee(t){if((t=t.__)!=null&amp;amp;&amp;amp;t.__c!=null)return t.__e=t.__c.base=null,t.__k.some(function(e){if(e!=null&amp;amp;&amp;amp;e.__e!=null)return t.__e=t.__c.base=e.__e}),Ee(t)}function we(t){(!t.__d&amp;amp;&amp;amp;(t.__d=!0)&amp;amp;&amp;amp;L.push(t)&amp;amp;&amp;amp;!Z.__r++||ve!=g.debounceRendering)&amp;amp;&amp;amp;((ve=g.debounceRendering)||De)(Z)}function Z(){try{for(var t,e=1;L.length;)L.length&amp;gt;e&amp;amp;&amp;amp;L.sort(Ae),t=L.shift(),e=L.length,_t(t)}finally{L.length=Z.__r=0}}function Ce(t,e,n,r,i,o,s,a,f,c,u){var _,l,d,y,w,p,h=r&amp;amp;&amp;amp;r.__k||J,m=e.length;for(f=ht(n,e,h,f,m),_=0;_&amp;lt;m;_++)(d=n.__k[_])!=null&amp;amp;&amp;amp;(l=d.__i!=-1&amp;amp;&amp;amp;h[d.__i]||K,d.__i=_,p=ae(t,d,l,i,o,s,a,f,c,u),y=d.__e,d.ref&amp;amp;&amp;amp;l.ref!=d.ref&amp;amp;&amp;amp;(l.ref&amp;amp;&amp;amp;ce(l.ref,null,d),u.push(d.ref,d.__c||y,d)),w==null&amp;amp;&amp;amp;y!=null&amp;amp;&amp;amp;(w=y),4&amp;amp;d.__u?(f=Pe(d,f,t),l.__e&amp;amp;&amp;amp;(l.__e=null)):typeof d.type==&amp;quot;function&amp;quot;&amp;amp;&amp;amp;p!==void 0?f=p:y&amp;amp;&amp;amp;(f=y.nextSibling),d.__u&amp;amp;=-7);return n.__e=w,f}function ht(t,e,n,r,i){var o,s,a,f,c,u=n.length,_=u,l=0;for(t.__k=new Array(i),o=0;o&amp;lt;i;o++)(s=e[o])!=null&amp;amp;&amp;amp;typeof s!=&amp;quot;boolean&amp;quot;&amp;amp;&amp;amp;typeof s!=&amp;quot;function&amp;quot;?(typeof s==&amp;quot;string&amp;quot;||typeof s==&amp;quot;number&amp;quot;||typeof s==&amp;quot;bigint&amp;quot;||s.constructor==String?s=t.__k[o]=z(null,s,null,null,null):X(s)?s=t.__k[o]=z(N,{children:s},null,null,null):s.constructor===void 0&amp;amp;&amp;amp;s.__b&amp;gt;0?s=t.__k[o]=z(s.type,s.props,s.key,s.ref?s.ref:null,s.__v):t.__k[o]=s,f=o+l,s.__=t,s.__b=t.__b+1,a=null,(c=s.__i=mt(s,n,f,_))!=-1&amp;amp;&amp;amp;(_--,(a=n[c])&amp;amp;&amp;amp;(a.__u|=2)),a==null||a.__v==null?(c==-1&amp;amp;&amp;amp;(i&amp;gt;u?l--:i&amp;lt;u&amp;amp;&amp;amp;l++),typeof s.type!=&amp;quot;function&amp;quot;&amp;amp;&amp;amp;(s.__u|=4)):c!=f&amp;amp;&amp;amp;(c==f-1?l--:c==f+1?l++:(c&amp;gt;f?l--:l++,s.__u|=4))):t.__k[o]=null;if(_)for(o=0;o&amp;lt;u;o++)(a=n[o])!=null&amp;amp;&amp;amp;(2&amp;amp;a.__u)==0&amp;amp;&amp;amp;(a.__e==r&amp;amp;&amp;amp;(r=R(a)),Te(a,a));return r}function Pe(t,e,n){var r,i;if(typeof t.type==&amp;quot;function&amp;quot;){for(r=t.__k,i=0;r&amp;amp;&amp;amp;i&amp;lt;r.length;i++)r[i]&amp;amp;&amp;amp;(r[i].__=t,e=Pe(r[i],e,n));return e}t.__e!=e&amp;amp;&amp;amp;(e&amp;amp;&amp;amp;t.type&amp;amp;&amp;amp;!e.parentNode&amp;amp;&amp;amp;(e=R(t)),e=n.insertBefore(t.__e,e||null));do e=e&amp;amp;&amp;amp;e.nextSibling;while(e!=null&amp;amp;&amp;amp;e.nodeType==8);return e}function mt(t,e,n,r){var i,o,s,a=t.key,f=t.type,c=e[n],u=c!=null&amp;amp;&amp;amp;(2&amp;amp;c.__u)==0;if(c===null&amp;amp;&amp;amp;a==null||u&amp;amp;&amp;amp;a==c.key&amp;amp;&amp;amp;f==c.type)return n;if(r&amp;gt;(u?1:0)){for(i=n-1,o=n+1;i&amp;gt;=0||o&amp;lt;e.length;)if((c=e[s=i&amp;gt;=0?i--:o++])!=null&amp;amp;&amp;amp;(2&amp;amp;c.__u)==0&amp;amp;&amp;amp;a==c.key&amp;amp;&amp;amp;f==c.type)return s}return-1}function be(t,e,n){e[0]==&amp;quot;-&amp;quot;?t.setProperty(e,n??&amp;quot;&amp;quot;):t[e]=n==null?&amp;quot;&amp;quot;:typeof n!=&amp;quot;number&amp;quot;||dt.test(e)?n:n+&amp;quot;px&amp;quot;}function q(t,e,n,r,i){var o,s;e:if(e==&amp;quot;style&amp;quot;)if(typeof n==&amp;quot;string&amp;quot;)t.style.cssText=n;else{if(typeof r==&amp;quot;string&amp;quot;&amp;amp;&amp;amp;(t.style.cssText=r=&amp;quot;&amp;quot;),r)for(e in r)n&amp;amp;&amp;amp;e in n||be(t.style,e,&amp;quot;&amp;quot;);if(n)for(e in n)r&amp;amp;&amp;amp;n[e]==r[e]||be(t.style,e,n[e])}else if(e[0]==&amp;quot;o&amp;quot;&amp;amp;&amp;amp;e[1]==&amp;quot;n&amp;quot;)o=e!=(e=e.replace(Se,&amp;quot;$1&amp;quot;)),s=e.toLowerCase(),e=s in t||e==&amp;quot;onFocusOut&amp;quot;||e==&amp;quot;onFocusIn&amp;quot;?s.slice(2):e.slice(2),t.l||(t.l={}),t.l[e+o]=n,n?r?n[W]=r[W]:(n[W]=se,t.addEventListener(e,o?ie:re,o)):t.removeEventListener(e,o?ie:re,o);else{if(i==&amp;quot;http://www.w3.org/2000/svg&amp;quot;)e=e.replace(/xlink(H|:h)/,&amp;quot;h&amp;quot;).replace(/sName$/,&amp;quot;s&amp;quot;);else if(e!=&amp;quot;width&amp;quot;&amp;amp;&amp;amp;e!=&amp;quot;height&amp;quot;&amp;amp;&amp;amp;e!=&amp;quot;href&amp;quot;&amp;amp;&amp;amp;e!=&amp;quot;list&amp;quot;&amp;amp;&amp;amp;e!=&amp;quot;form&amp;quot;&amp;amp;&amp;amp;e!=&amp;quot;tabIndex&amp;quot;&amp;amp;&amp;amp;e!=&amp;quot;download&amp;quot;&amp;amp;&amp;amp;e!=&amp;quot;rowSpan&amp;quot;&amp;amp;&amp;amp;e!=&amp;quot;colSpan&amp;quot;&amp;amp;&amp;amp;e!=&amp;quot;role&amp;quot;&amp;amp;&amp;amp;e!=&amp;quot;popover&amp;quot;&amp;amp;&amp;amp;e in t)try{t[e]=n??&amp;quot;&amp;quot;;break e}catch{}typeof n==&amp;quot;function&amp;quot;||(n==null||n===!1&amp;amp;&amp;amp;e[4]!=&amp;quot;-&amp;quot;?t.removeAttribute(e):t.setAttribute(e,e==&amp;quot;popover&amp;quot;&amp;amp;&amp;amp;n==1?&amp;quot;&amp;quot;:n))}}function ke(t){return function(e){if(this.l){var n=this.l[e.type+t];if(e[V]==null)e[V]=se++;else if(e[V]&amp;lt;n[W])return;return n(g.event?g.event(e):e)}}}function ae(t,e,n,r,i,o,s,a,f,c){var u,_,l,d,y,w,p,h,m,D,O,P,H,ye,G,ne,A=e.type;if(e.constructor!==void 0)return null;128&amp;amp;n.__u&amp;amp;&amp;amp;(f=!!(32&amp;amp;n.__u),o=[a=e.__e=n.__e]),(u=g.__b)&amp;amp;&amp;amp;u(e);e:if(typeof A==&amp;quot;function&amp;quot;){_=s.length;try{if(m=e.props,D=A.prototype&amp;amp;&amp;amp;A.prototype.render,O=(u=A.contextType)&amp;amp;&amp;amp;r[u.__c],P=u?O?O.props.value:u.__:r,n.__c?h=(l=e.__c=n.__c).__=l.__E:(D?e.__c=l=new A(m,P):(e.__c=l=new T(m,P),l.constructor=A,l.render=yt),O&amp;amp;&amp;amp;O.sub(l),l.state||(l.state={}),l.__n=r,d=l.__d=!0,l.__h=[],l._sb=[]),D&amp;amp;&amp;amp;l.__s==null&amp;amp;&amp;amp;(l.__s=l.state),D&amp;amp;&amp;amp;A.getDerivedStateFromProps!=null&amp;amp;&amp;amp;(l.__s==l.state&amp;amp;&amp;amp;(l.__s=S({},l.__s)),S(l.__s,A.getDerivedStateFromProps(m,l.__s))),y=l.props,w=l.state,l.__v=e,d)D&amp;amp;&amp;amp;A.getDerivedStateFromProps==null&amp;amp;&amp;amp;l.componentWillMount!=null&amp;amp;&amp;amp;l.componentWillMount(),D&amp;amp;&amp;amp;l.componentDidMount!=null&amp;amp;&amp;amp;l.__h.push(l.componentDidMount);else{if(D&amp;amp;&amp;amp;A.getDerivedStateFromProps==null&amp;amp;&amp;amp;m!==y&amp;amp;&amp;amp;l.componentWillReceiveProps!=null&amp;amp;&amp;amp;l.componentWillReceiveProps(m,P),e.__v==n.__v||!l.__e&amp;amp;&amp;amp;l.shouldComponentUpdate!=null&amp;amp;&amp;amp;l.shouldComponentUpdate(m,l.__s,P)===!1){e.__v!=n.__v&amp;amp;&amp;amp;(l.props=m,l.state=l.__s,l.__d=!1),e.__e=n.__e,e.__k=n.__k,e.__k.some(function(j){j&amp;amp;&amp;amp;(j.__=e)}),J.push.apply(l.__h,l._sb),l._sb=[],l.__h.length&amp;amp;&amp;amp;s.push(l),a=R(n);break e}l.componentWillUpdate!=null&amp;amp;&amp;amp;l.componentWillUpdate(m,l.__s,P),D&amp;amp;&amp;amp;l.componentDidUpdate!=null&amp;amp;&amp;amp;l.__h.push(function(){l.componentDidUpdate(y,w,p)})}if(l.context=P,l.props=m,l.__P=t,l.__e=!1,H=g.__r,ye=0,D)l.state=l.__s,l.__d=!1,H&amp;amp;&amp;amp;H(e),u=l.render(l.props,l.state,l.context),J.push.apply(l.__h,l._sb),l._sb=[];else do l.__d=!1,H&amp;amp;&amp;amp;H(e),u=l.render(l.props,l.state,l.context),l.state=l.__s;while(l.__d&amp;amp;&amp;amp;++ye&amp;lt;25);l.state=l.__s,l.getChildContext!=null&amp;amp;&amp;amp;(r=S(S({},r),l.getChildContext())),D&amp;amp;&amp;amp;!d&amp;amp;&amp;amp;l.getSnapshotBeforeUpdate!=null&amp;amp;&amp;amp;(p=l.getSnapshotBeforeUpdate(y,w)),G=u!=null&amp;amp;&amp;amp;u.type===N&amp;amp;&amp;amp;u.key==null?je(u.props.children):u,a=Ce(t,X(G)?G:[G],e,n,r,i,o,s,a,f,c),l.base=e.__e,e.__u&amp;amp;=-161,l.__h.length&amp;amp;&amp;amp;s.push(l),h&amp;amp;&amp;amp;(l.__E=l.__=null)}catch(j){if(s.length=_,e.__v=null,f||o!=null){if(j.then){for(e.__u|=f?160:128;a&amp;amp;&amp;amp;a.nodeType==8&amp;amp;&amp;amp;a.nextSibling;)a=a.nextSibling;o!=null&amp;amp;&amp;amp;(o[o.indexOf(a)]=null),e.__e=a}else if(o!=null)for(ne=o.length;ne--;)le(o[ne])}else e.__e=n.__e;e.__k==null&amp;amp;&amp;amp;(e.__k=n.__k||[]),j.then||Re(e),g.__e(j,e,n)}}else o==null&amp;amp;&amp;amp;e.__v==n.__v?(e.__k=n.__k,e.__e=n.__e):a=e.__e=gt(n.__e,e,n,r,i,o,s,f,c);return(u=g.diffed)&amp;amp;&amp;amp;u(e),128&amp;amp;e.__u?void 0:a}function Re(t){t&amp;amp;&amp;amp;(t.__c&amp;amp;&amp;amp;(t.__c.__e=!0),t.__k&amp;amp;&amp;amp;t.__k.some(Re))}function Fe(t,e,n){for(var r=0;r&amp;lt;n.length;r++)ce(n[r],n[++r],n[++r]);g.__c&amp;amp;&amp;amp;g.__c(e,t),t.some(function(i){try{t=i.__h,i.__h=[],t.some(function(o){o.call(i)})}catch(o){g.__e(o,i.__v)}})}function je(t){return typeof t!=&amp;quot;object&amp;quot;||t==null||t.__b&amp;gt;0?t:X(t)?t.map(je):t.constructor!==void 0?null:S({},t)}function gt(t,e,n,r,i,o,s,a,f){var c,u,_,l,d,y,w,p=n.props||K,h=e.props,m=e.type;if(m==&amp;quot;svg&amp;quot;?i=&amp;quot;http://www.w3.org/2000/svg&amp;quot;:m==&amp;quot;math&amp;quot;?i=&amp;quot;http://www.w3.org/1998/Math/MathML&amp;quot;:i||(i=&amp;quot;http://www.w3.org/1999/xhtml&amp;quot;),o!=null){for(c=0;c&amp;lt;o.length;c++)if((d=o[c])&amp;amp;&amp;amp;&amp;quot;setAttribute&amp;quot;in d==!!m&amp;amp;&amp;amp;(m?d.localName==m:d.nodeType==3)){t=d,o[c]=null;break}}if(t==null){if(m==null)return document.createTextNode(h);t=document.createElementNS(i,m,h.is&amp;amp;&amp;amp;h),a&amp;amp;&amp;amp;(g.__m&amp;amp;&amp;amp;g.__m(e,o),a=!1),o=null}if(m==null)p===h||a&amp;amp;&amp;amp;t.data==h||(t.data=h);else{if(o=m==&amp;quot;textarea&amp;quot;&amp;amp;&amp;amp;h.defaultValue!=null?null:o&amp;amp;&amp;amp;Q.call(t.childNodes),!a&amp;amp;&amp;amp;o!=null)for(p={},c=0;c&amp;lt;t.attributes.length;c++)p[(d=t.attributes[c]).name]=d.value;for(c in p)d=p[c],c==&amp;quot;dangerouslySetInnerHTML&amp;quot;?_=d:c==&amp;quot;children&amp;quot;||c in h||c==&amp;quot;value&amp;quot;&amp;amp;&amp;amp;&amp;quot;defaultValue&amp;quot;in h||c==&amp;quot;checked&amp;quot;&amp;amp;&amp;amp;&amp;quot;defaultChecked&amp;quot;in h||q(t,c,null,d,i);for(c in h)d=h[c],c==&amp;quot;children&amp;quot;?l=d:c==&amp;quot;dangerouslySetInnerHTML&amp;quot;?u=d:c==&amp;quot;value&amp;quot;?y=d:c==&amp;quot;checked&amp;quot;?w=d:a&amp;amp;&amp;amp;typeof d!=&amp;quot;function&amp;quot;||p[c]===d||q(t,c,d,p[c],i);if(u)a||_&amp;amp;&amp;amp;(u.__html==_.__html||u.__html==t.innerHTML)||(t.innerHTML=u.__html),e.__k=[];else if(_&amp;amp;&amp;amp;(t.innerHTML=&amp;quot;&amp;quot;),Ce(e.type==&amp;quot;template&amp;quot;?t.content:t,X(l)?l:[l],e,n,r,m==&amp;quot;foreignObject&amp;quot;?&amp;quot;http://www.w3.org/1999/xhtml&amp;quot;:i,o,s,o?o[0]:n.__k&amp;amp;&amp;amp;R(n,0),a,f),o!=null)for(c=o.length;c--;)le(o[c]);a&amp;amp;&amp;amp;m!=&amp;quot;textarea&amp;quot;||(c=&amp;quot;value&amp;quot;,m==&amp;quot;progress&amp;quot;&amp;amp;&amp;amp;y==null?t.removeAttribute(&amp;quot;value&amp;quot;):y!=null&amp;amp;&amp;amp;(y!==t[c]||m==&amp;quot;progress&amp;quot;&amp;amp;&amp;amp;!y||m==&amp;quot;option&amp;quot;&amp;amp;&amp;amp;y!=p[c])&amp;amp;&amp;amp;q(t,c,y,p[c],i),c=&amp;quot;checked&amp;quot;,w!=null&amp;amp;&amp;amp;w!=t[c]&amp;amp;&amp;amp;q(t,c,w,p[c],i))}return t}function ce(t,e,n){try{if(typeof t==&amp;quot;function&amp;quot;){var r=typeof t.__u==&amp;quot;function&amp;quot;;r&amp;amp;&amp;amp;t.__u(),r&amp;amp;&amp;amp;e==null||(t.__u=t(e))}else t.current=e}catch(i){g.__e(i,n)}}function Te(t,e,n){var r,i;if(g.unmount&amp;amp;&amp;amp;g.unmount(t),(r=t.ref)&amp;amp;&amp;amp;(r.current&amp;amp;&amp;amp;r.current!=t.__e||ce(r,null,e)),(r=t.__c)!=null){if(r.componentWillUnmount)try{r.componentWillUnmount()}catch(o){g.__e(o,e)}r.base=r.__P=r.__n=null}if(r=t.__k)for(i=0;i&amp;lt;r.length;i++)r[i]&amp;amp;&amp;amp;Te(r[i],e,n||typeof t.type!=&amp;quot;function&amp;quot;);n||le(t.__e),t.__c=t.__=t.__e=void 0}function yt(t,e,n){return this.constructor(t,n)}function Ne(t,e,n){var r,i,o,s;e==document&amp;amp;&amp;amp;(e=document.documentElement),g.__&amp;amp;&amp;amp;g.__(t,e),i=(r=typeof n==&amp;quot;function&amp;quot;)?null:n&amp;amp;&amp;amp;n.__k||e.__k,o=[],s=[],ae(e,t=(!r&amp;amp;&amp;amp;n||e).__k=pt(N,null,[t]),i||K,K,e.namespaceURI,!r&amp;amp;&amp;amp;n?[n]:i?null:e.firstChild?Q.call(e.childNodes):null,o,!r&amp;amp;&amp;amp;n?n:i?i.__e:e.firstChild,r,s),Fe(o,t,s),t.props.children=null}Q=J.slice,g={__e:function(t,e,n,r){for(var i,o,s;e=e.__;)if((i=e.__c)&amp;amp;&amp;amp;!i.__)try{if((o=i.constructor)&amp;amp;&amp;amp;o.getDerivedStateFromError!=null&amp;amp;&amp;amp;(i.setState(o.getDerivedStateFromError(t)),s=i.__d),i.componentDidCatch!=null&amp;amp;&amp;amp;(i.componentDidCatch(t,r||{}),s=i.__d),s)return i.__E=i}catch(a){t=a}throw t}},xe=0,ft=function(t){return t!=null&amp;amp;&amp;amp;t.constructor===void 0},T.prototype.setState=function(t,e){var n;n=this.__s!=null&amp;amp;&amp;amp;this.__s!=this.state?this.__s:this.__s=S({},this.state),typeof t==&amp;quot;function&amp;quot;&amp;amp;&amp;amp;(t=t(S({},n),this.props)),t&amp;amp;&amp;amp;S(n,t),t!=null&amp;amp;&amp;amp;this.__v&amp;amp;&amp;amp;(e&amp;amp;&amp;amp;this._sb.push(e),we(this))},T.prototype.forceUpdate=function(t){this.__v&amp;amp;&amp;amp;(this.__e=!0,t&amp;amp;&amp;amp;this.__h.push(t),we(this))},T.prototype.render=N,L=[],De=typeof Promise==&amp;quot;function&amp;quot;?Promise.prototype.then.bind(Promise.resolve()):setTimeout,Ae=function(t,e){return t.__v.__b-e.__v.__b},Z.__r=0,oe=Math.random().toString(8),V=&amp;quot;__d&amp;quot;+oe,W=&amp;quot;__a&amp;quot;+oe,Se=/(PointerCapture)$|Capture$/i,se=0,re=ke(!1),ie=ke(!0),ut=0;var vt=0;function v(t,e,n,r,i,o){e||(e={});var s,a,f=e;if(&amp;quot;ref&amp;quot;in f)for(a in f={},e)a==&amp;quot;ref&amp;quot;?s=e[a]:f[a]=e[a];var c={type:t,props:f,key:n,ref:s,__k:null,__:null,__b:0,__e:null,__c:null,constructor:void 0,__v:--vt,__i:-1,__u:0,__source:i,__self:o};if(typeof t==&amp;quot;function&amp;quot;&amp;amp;&amp;amp;(s=t.defaultProps))for(a in s)f[a]===void 0&amp;amp;&amp;amp;(f[a]=s[a]);return g.vnode&amp;amp;&amp;amp;g.vnode(c),c}var Me;function wt(t,e,n=0,r={}){Me={App:t,selector:e,importance:n,props:r},Ie()===!1&amp;amp;&amp;amp;window.addEventListener(&amp;quot;load&amp;quot;,Ue)}function Ue(){window.removeEventListener(&amp;quot;load&amp;quot;,Ue),Ie()}function Ie(){let{App:t,selector:e,importance:n,props:r}=Me,i=document.querySelector(e);if(!i)return!1;let o=i.dataset.importance;if(o&amp;amp;&amp;amp;(Number(o)||0)&amp;gt;=n){console.warn(&amp;quot;Refused to mount, not important enough!&amp;quot;);return}return i.dataset.importance=n,i.innerHTML=&amp;quot;&amp;quot;,Ne(v(t,{...r}),i),!0}var Oe=wt;var bt={data:&amp;quot;&amp;quot;},kt=t=&amp;gt;{if(typeof window==&amp;quot;object&amp;quot;){let e=(t?t.querySelector(&amp;quot;#_goober&amp;quot;):window._goober)||Object.assign(document.createElement(&amp;quot;style&amp;quot;),{innerHTML:&amp;quot; &amp;quot;,id:&amp;quot;_goober&amp;quot;});return e.nonce=window.__nonce__,e.parentNode||(t||document.head).appendChild(e),e.firstChild}return t||bt};var xt=/(?:([\u0080-\uFFFF\w-%@]+) *:? *([^{;]+?);|([^;}{]*?) *{)|(}\s*)/g,Dt=/\/\*[^]*?\*\/|  +/g,He=/\n+/g,F=(t,e)=&amp;gt;{let n=&amp;quot;&amp;quot;,r=&amp;quot;&amp;quot;,i=&amp;quot;&amp;quot;;for(let o in t){let s=t[o];o[0]==&amp;quot;@&amp;quot;?o[1]==&amp;quot;i&amp;quot;?n=o+&amp;quot; &amp;quot;+s+&amp;quot;;&amp;quot;:r+=o[1]==&amp;quot;f&amp;quot;?F(s,o):o+&amp;quot;{&amp;quot;+F(s,o[1]==&amp;quot;k&amp;quot;?&amp;quot;&amp;quot;:e)+&amp;quot;}&amp;quot;:typeof s==&amp;quot;object&amp;quot;?r+=F(s,e?e.replace(/([^,])+/g,a=&amp;gt;o.replace(/([^,]*:\S+\([^)]*\))|([^,])+/g,f=&amp;gt;/&amp;amp;/.test(f)?f.replace(/&amp;amp;/g,a):a?a+&amp;quot; &amp;quot;+f:f)):o):s!=null&amp;amp;&amp;amp;(o=o[1]==&amp;quot;-&amp;quot;?o:o.replace(/[A-Z]/g,&amp;quot;-$&amp;amp;&amp;quot;).toLowerCase(),i+=F.p?F.p(o,s):o+&amp;quot;:&amp;quot;+s+&amp;quot;;&amp;quot;)}return n+(e&amp;amp;&amp;amp;i?e+&amp;quot;{&amp;quot;+i+&amp;quot;}&amp;quot;:i)+r},E={},We=t=&amp;gt;{if(typeof t==&amp;quot;object&amp;quot;){let e=&amp;quot;&amp;quot;;for(let n in t)e+=n+We(t[n]);return e}return t},At=(t,e,n,r,i)=&amp;gt;{let o=We(t),s=E[o]||(E[o]=(f=&amp;gt;{let c=0,u=11;for(;c&amp;lt;f.length;)u=101*u+f.charCodeAt(c++)&amp;gt;&amp;gt;&amp;gt;0;return&amp;quot;go&amp;quot;+u})(o));if(!E[s]){let f=o!==t?t:(c=&amp;gt;{let u,_,l=[{}];for(;u=xt.exec(c.replace(Dt,&amp;quot;&amp;quot;));)u[4]?l.shift():u[3]?(_=u[3].replace(He,&amp;quot; &amp;quot;).trim(),l.unshift(l[0][_]=l[0][_]||{})):l[0][u[1]]=u[2].replace(He,&amp;quot; &amp;quot;).trim();return l[0]})(t);E[s]=F(i?{[&amp;quot;@keyframes &amp;quot;+s]:f}:f,n?&amp;quot;&amp;quot;:&amp;quot;.&amp;quot;+s)}let a=n&amp;amp;&amp;amp;E.g;return n&amp;amp;&amp;amp;(E.g=E[s]),((f,c,u,_)=&amp;gt;{_?c.data=c.data.replace(_,f):c.data.indexOf(f)===-1&amp;amp;&amp;amp;(c.data=u?f+c.data:c.data+f)})(E[s],e,r,a),s},St=(t,e,n)=&amp;gt;t.reduce((r,i,o)=&amp;gt;{let s=e[o];if(s&amp;amp;&amp;amp;s.call){let a=s(n),f=a&amp;amp;&amp;amp;a.props&amp;amp;&amp;amp;a.props.className||/^go/.test(a)&amp;amp;&amp;amp;a;s=f?&amp;quot;.&amp;quot;+f:a&amp;amp;&amp;amp;typeof a==&amp;quot;object&amp;quot;?a.props?&amp;quot;&amp;quot;:F(a,&amp;quot;&amp;quot;):a===!1?&amp;quot;&amp;quot;:a}return r+i+(s??&amp;quot;&amp;quot;)},&amp;quot;&amp;quot;);function M(t){let e=this||{},n=t.call?t(e.p):t;return At(n.unshift?n.raw?St(n,[].slice.call(arguments,1),e.p):n.reduce((r,i)=&amp;gt;Object.assign(r,i&amp;amp;&amp;amp;i.call?i(e.p):i),{}):n,kt(e.target),e.g,e.o,e.k)}var On=M.bind({g:1}),Hn=M.bind({k:1});function Lt(t,...e){let n=[],{length:r}=t;for(let o=0;o&amp;lt;r;o++)n.push(t[o],e[o]);n.pop();let i=n.join(&amp;quot;&amp;quot;);return i=i.replaceAll(/\/\*[\s\S]*?\*\//g,&amp;quot;&amp;quot;),i=i.replaceAll(/\s\/\/.*/g,&amp;quot;&amp;quot;),i}var $e=Lt;var U,Be,Et={info:&amp;quot;\u2139\uFE0F&amp;quot;,warning:&amp;quot;\u26A0\uFE0F&amp;quot;,error:&amp;quot;\u26D4&amp;quot;},b=&amp;quot;tool-log&amp;quot;,Ct=$e`&lt;br /&gt;
    .${b} {&lt;br /&gt;
        overflow-y: scroll;&lt;br /&gt;
        height: 200px;&lt;br /&gt;
        flex-shrink: 0;&lt;br /&gt;
    }&lt;br /&gt;
&lt;br /&gt;
    .${b} table {&lt;br /&gt;
        width: 100%;&lt;br /&gt;
        border-collapse: collapse;&lt;br /&gt;
        margin: 0;&lt;br /&gt;
    }&lt;br /&gt;
&lt;br /&gt;
    .${b} th {&lt;br /&gt;
        text-align: left;&lt;br /&gt;
    }&lt;br /&gt;
&lt;br /&gt;
    .${b} th,&lt;br /&gt;
    .${b} td {&lt;br /&gt;
        border: solid 1px rgba(255, 255, 255, 0.1);&lt;br /&gt;
        border-left: none;&lt;br /&gt;
        border-right: none;&lt;br /&gt;
        vertical-align: top;&lt;br /&gt;
        padding: 4px;&lt;br /&gt;
    }&lt;br /&gt;
&lt;br /&gt;
    .${b} th {&lt;br /&gt;
        border-top: none;&lt;br /&gt;
    }&lt;br /&gt;
&lt;br /&gt;
    .${b} table {&lt;br /&gt;
        border: solid 1px rgba(255, 255, 255, 0.1);&lt;br /&gt;
    }&lt;br /&gt;
&lt;br /&gt;
    .${b} th {&lt;br /&gt;
        background: rgba(255, 255, 255, 0.1);&lt;br /&gt;
    }&lt;br /&gt;
&lt;br /&gt;
    .${b} td:nth-child(1) {&lt;br /&gt;
        width: 90px;&lt;br /&gt;
    }&lt;br /&gt;
&lt;br /&gt;
    .${b} td:nth-child(2),&lt;br /&gt;
    .${b} th:nth-child(2) {&lt;br /&gt;
        width: 20px;&lt;br /&gt;
        text-align: center;&lt;br /&gt;
    }&lt;br /&gt;
&lt;br /&gt;
    .${b} td &amp;gt; div &amp;gt; div {&lt;br /&gt;
        cursor: pointer;&lt;br /&gt;
        color: yellow;&lt;br /&gt;
    }&lt;br /&gt;
&lt;br /&gt;
    .${b} textarea {&lt;br /&gt;
        width: calc(100% - 8px);&lt;br /&gt;
        height: 200px;&lt;br /&gt;
    }&lt;br /&gt;
`;function Pt(t,...e){let n=t.endsWith(&amp;quot;!&amp;quot;)?t.startsWith(&amp;quot;!&amp;quot;)?&amp;quot;error&amp;quot;:&amp;quot;warning&amp;quot;:&amp;quot;info&amp;quot;;Rt(n,t,e)}function Ge(t){U=t,U.classList.add(b),U.innerHTML=`&lt;br /&gt;
        &amp;lt;style&amp;gt;${Ct}&amp;lt;/style&amp;gt;&lt;br /&gt;
        &amp;lt;table class=&#039;wikitable&#039;&amp;gt;&lt;br /&gt;
            &amp;lt;tr&amp;gt;&lt;br /&gt;
                &amp;lt;th&amp;gt;Timestamp&amp;lt;/th&amp;gt;&lt;br /&gt;
                &amp;lt;th&amp;gt;\u{1F197}&amp;lt;/th&amp;gt;&lt;br /&gt;
                &amp;lt;th&amp;gt;Message&amp;lt;/th&amp;gt;&lt;br /&gt;
            &amp;lt;/tr&amp;gt;&lt;br /&gt;
        &amp;lt;/table&amp;gt;`,Be=U.querySelector(&amp;quot;table&amp;quot;)}function Rt(t,e,n){let i=new Date().toLocaleTimeString(&amp;quot;en-GB&amp;quot;,{hour12:!1,hour:&amp;quot;2-digit&amp;quot;,minute:&amp;quot;2-digit&amp;quot;,second:&amp;quot;2-digit&amp;quot;,fractionalSecondDigits:3}),o=document.createElement(&amp;quot;tr&amp;quot;);fe(o,i),fe(o,Et[t]),fe(o,Ft(e,n)),Be.appendChild(o),U.scrollTo({top:U.scrollHeight,behavior:&amp;quot;smooth&amp;quot;})}function fe(t,e){let n=document.createElement(&amp;quot;td&amp;quot;);e=e instanceof Node?e:document.createTextNode(e),n.appendChild(e),t.appendChild(n)}function Ft(t,e){if(t=t.replace(/^!/,&amp;quot;&amp;quot;),console.log(t,...e),!e.length)return document.createTextNode(t);let n=document.createElement(&amp;quot;div&amp;quot;),r=document.createElement(&amp;quot;div&amp;quot;);r.innerHTML=t,r.onclick=function(){let o=this.nextElementSibling.style.display!==&amp;quot;none&amp;quot;;this.nextElementSibling.style.display=o?&amp;quot;none&amp;quot;:&amp;quot;block&amp;quot;},n.appendChild(r);let i=document.createElement(&amp;quot;textarea&amp;quot;);return i.style.display=&amp;quot;none&amp;quot;,i.innerHTML=jt(e),n.appendChild(i),n}function jt(t){let e=[];for(let n of t)typeof n==&amp;quot;object&amp;quot;&amp;amp;&amp;amp;n?n instanceof Error?e.push(n.stack):e.push(JSON.stringify(n,null,4)):e.push(n);return e.join(`&lt;br /&gt;
`)}var $=Pt;var qn=window.location.host||&amp;quot;localhost&amp;quot;;var ue=new Proxy(()=&amp;gt;{},{get:()=&amp;gt;ue,apply:()=&amp;gt;ue}),qe=ue;function Tt(t,...e){if(typeof t==&amp;quot;function&amp;quot;)try{let n=t(...e);return n&amp;amp;&amp;amp;typeof n.then==&amp;quot;function&amp;quot;?n.then(r=&amp;gt;[r,null]).catch(r=&amp;gt;[null,r]):[n,null]}catch(n){return[null,n]}return t&amp;amp;&amp;amp;typeof t.then==&amp;quot;function&amp;quot;?t.then(n=&amp;gt;[n,null]).catch(n=&amp;gt;[null,n]):[t,null]}var Y=Tt;var Ve=new Map;async function Nt(t,e){let n=await Mt(t,e);return Ve.set(n,e),n.on(&amp;quot;message&amp;quot;,Ut.bind(null,n)),{run:async()=&amp;gt;await It(n,&amp;quot;run&amp;quot;)}}async function Mt(t,e){let n=new qe.Worker(t);return n.on(&amp;quot;error&amp;quot;,()=&amp;gt;e.log(&amp;quot;!Worker error!&amp;quot;)),new Promise(r=&amp;gt;{let i=o=&amp;gt;{o?.type===&amp;quot;ready&amp;quot;&amp;amp;&amp;amp;(n.off(&amp;quot;message&amp;quot;,i),r(n))};n.on(&amp;quot;message&amp;quot;,i)})}async function Ut(t,e){let n=Ve.get(t),{type:r,payload:i}=e;if(typeof n[r]!=&amp;quot;function&amp;quot;)return;let[o,s]=await Y(n[r],...i);s||t.postMessage({type:r,payload:o})}async function It(t,e,n){return new Promise(r=&amp;gt;{let i=o=&amp;gt;{o.type===e&amp;amp;&amp;amp;(t.off(&amp;quot;message&amp;quot;,i),r(o.payload))};t.on(&amp;quot;message&amp;quot;,i),t.postMessage({type:e,payload:n})})}var ze=Nt;var Ke=new Map;async function Ot(t,e){let n=await Ht(t,e);return Ke.set(n,e),n.addEventListener(&amp;quot;message&amp;quot;,Wt.bind(null,n)),{run:async()=&amp;gt;await $t(n,&amp;quot;run&amp;quot;)}}async function Ht(t,e){let n;return window.mw?n=await Bt(t,e):n=new Worker(`data:application/javascript,importScripts(&#039;${t}?${Math.random()}&#039;);`),n&amp;amp;&amp;amp;n.addEventListener(&amp;quot;error&amp;quot;,()=&amp;gt;e.log(&amp;quot;!Worker error!&amp;quot;)),new Promise(r=&amp;gt;{let i=o=&amp;gt;{(o.data&amp;amp;&amp;amp;typeof o.data==&amp;quot;object&amp;quot;?o.data:{}).type===&amp;quot;ready&amp;quot;&amp;amp;&amp;amp;(n.removeEventListener(&amp;quot;message&amp;quot;,i),r(n))};n.addEventListener(&amp;quot;message&amp;quot;,i)})}async function Wt(t,e){let n=Ke.get(t),{type:r,payload:i}=e.data;if(typeof n[r]!=&amp;quot;function&amp;quot;)return;let[o,s]=await Y(n[r],...i);s||t.postMessage({type:r,payload:o})}async function $t(t,e,n){return new Promise(r=&amp;gt;{let i=o=&amp;gt;{let s=o.data&amp;amp;&amp;amp;typeof o.data==&amp;quot;object&amp;quot;?o.data:{};s.type===e&amp;amp;&amp;amp;(t.removeEventListener(&amp;quot;message&amp;quot;,i),r(s.payload))};t.addEventListener(&amp;quot;message&amp;quot;,i),t.postMessage({type:e,payload:n})})}async function Bt(t,e){let n=mw.util.getUrl(t,{action:&amp;quot;raw&amp;quot;,ctype:&amp;quot;text/javascript&amp;quot;,v:Date.now()}),r=await fetch(n,{cache:&amp;quot;no-cache&amp;quot;});if(!r.ok){e.log(&amp;quot;!Failed to load wiki worker!&amp;quot;,r.statusText);return}let i=await r.text(),o=new Blob([i],{type:&amp;quot;application/javascript&amp;quot;}),s=URL.createObjectURL(o),a=new Worker(s);return URL.revokeObjectURL(s),a}var Je=Ot;async function Gt(t,e){if(typeof t==&amp;quot;string&amp;quot;){let n=t;return typeof process&amp;lt;&amp;quot;u&amp;quot;&amp;amp;&amp;amp;process.versions?.node!==null?await ze(n,e):await Je(n,e)}else return await qt(t,e)}async function qt(t,e){return{run:()=&amp;gt;t(e)}}var Ze=Gt;var Qe=console.log,Vt=!1,zt=[];function Kt(...t){if(Vt){let e=[];for(let n of t)e.push(typeof n==&amp;quot;object&amp;quot;?JSON.stringify(n,null,4):n);zt.push(e.join(`&lt;br /&gt;
`))}Qe(...t)}function Xe(t){Qe=t}var x=Kt;function Jt(t,e){return e.global?[...t.matchAll(e)]:t.match(e)||[]}var de=Jt;var Zt=/campaign|arena|tutorial/,Qt={TranslationDef:tn,BonusDef:nn,SkillLevelDef:on,EntryDef:null,AttackPassiveDef:null,LawTreePositionDef:rn,FactionLawTierDef:null,HeroStartSquadDef:sn,LawLevelDef:ln,SkillRollReplacementDef:null,SpellRankDef:an,SkillRollWeightDef:cn,StatBonusRollDef:fn,UnitAbilityActiveDef:B,UnitAttackDef:un,UnitAbilityPassiveDef:B,UnitAbilityConditionalDef:B,UnitAbilityGlobalDef:B,UnitAbilityAuraDef:B};function Xt(t){let e=[];for(let r in t){let i=Yt(t[r]);e.push(...i)}let n={};for(let r of e){let{meta:i,id:o,...s}=r;if(!o){x(&amp;quot;Definition lacks id!&amp;quot;,i.raw);continue}if(o.match(Zt))continue;let a=n[o]||{};for(let f in s){if(f in a){x(`Field &amp;quot;${f}&amp;quot; already exists!`,i.raw,a);continue}a[f]=s[f]}n[o]=a}return n}function Yt(t){let e=[],n=de(t,/\{\{(.*?Def)([\s\S]*?)}}/g);for(let r of n){let i=r[0],o=r[1],s=r[2],a=de(s,/\|(.*?)=([^|]*)/g),f={name:o,raw:i},c={};for(let _ of a){let[,l,d]=_;c[l.trim()]=d.trim()}let u=en(c,f);u&amp;amp;&amp;amp;e.push(u)}return e}function en(t,e){let n=Qt[e.name];if(n===null)return;let r=n?n(t):{...t};if(r)return r.meta=e,r}function tn(t){let{target_id:e,type:n,subtype:r,variant:i,language:o,...s}=t,a=&amp;quot;$&amp;quot;+C(o,n,r,i),f={id:e.replace(&amp;quot;_specialization&amp;quot;,&amp;quot;&amp;quot;)};for(let c in s)f[a+&amp;quot;_&amp;quot;+c]=s[c];return f}function nn(t){let{parent_id:e,parent_type:n,ordinal:r,type:i,...o}=t,s=C(n,r,i),a={id:e};for(let f in o)a[s+&amp;quot;_&amp;quot;+f]=o[f];return a}function on(t){let{skill_id:e,level:n,...r}=t,i=C(&amp;quot;level&amp;quot;,n),o={id:e};for(let s in r)o[i+&amp;quot;_&amp;quot;+s]=r[s];return o}function rn(t){let{law_id:e,...n}=t,r=&amp;quot;tree&amp;quot;,i={id:e};for(let o in n)i[r+&amp;quot;_&amp;quot;+o]=n[o];return i}function sn(t){let{hero_id:e,variant:n,slot:r,...i}=t,o=C(&amp;quot;squad&amp;quot;,n,r),s={id:e};for(let a in i)s[o+&amp;quot;_&amp;quot;+a]=i[a];return s}function ln(t){let{law_id:e,level:n,...r}=t,i=C(&amp;quot;level&amp;quot;,n),o={id:e};for(let s in r)o[i+&amp;quot;_&amp;quot;+s]=r[s];return o}function an(t){let{spell_id:e,level:n,...r}=t,i=C(&amp;quot;level&amp;quot;,n),o={id:e};for(let s in r)o[i+&amp;quot;_&amp;quot;+s]=r[s];return o}function cn(t){let{skill_id:e,table_id:n,band_kind:r,...i}=t,o=C(&amp;quot;roll&amp;quot;,n,r),s={id:e};for(let a in i)s[o+&amp;quot;_&amp;quot;+a]=i[a];return s}function fn(t){let{name_sid:e,desc_sid:n,...r}=t;return r}function B(t){let{unit_id:e,ordinal:n,ability_type:r,...i}=t;if(!e)return;let o=C(&amp;quot;ability&amp;quot;,r,n),s={id:e};for(let a in i)s[o+&amp;quot;_&amp;quot;+a]=i[a];return s}function un(t){let{unit_id:e,...n}=t;return{id:e,...n}}function C(...t){return t.filter(n=&amp;gt;!!n).join(&amp;quot;_&amp;quot;)}var pe=Xt;function dn(t,e,n,r){n!=null&amp;amp;&amp;amp;(Array.isArray(n)&amp;amp;&amp;amp;!n.length||r!==void 0&amp;amp;&amp;amp;String(n)===String(r)||(e.includes(&amp;quot;_mult&amp;quot;)&amp;amp;&amp;amp;typeof n==&amp;quot;number&amp;quot;&amp;amp;&amp;amp;!String(n).includes(&amp;quot;.&amp;quot;)&amp;amp;&amp;amp;(n+=&amp;quot;.0&amp;quot;),t[e]=n))}var I=dn;var Ye=&amp;quot;GENERAL&amp;quot;,pn=new Set([Ye,&amp;quot;en&amp;quot;,&amp;quot;pt_br&amp;quot;,&amp;quot;cs&amp;quot;,&amp;quot;fr &amp;quot;,&amp;quot;de&amp;quot;,&amp;quot;hu&amp;quot;,&amp;quot;it&amp;quot;,&amp;quot;ja&amp;quot;,&amp;quot;ko&amp;quot;,&amp;quot;pl&amp;quot;,&amp;quot;ru&amp;quot;,&amp;quot;es&amp;quot;,&amp;quot;tr&amp;quot;,&amp;quot;uk&amp;quot;,&amp;quot;zh-hans&amp;quot;,&amp;quot;zh-hant&amp;quot;]);function _n(t,e,n){let r=[];r.push(&amp;quot;{{PatchDef&amp;quot;),r.push(`    | id = ${t}`),r.push(`    | date = ${e}`),r.push(&amp;quot;}}&amp;quot;);let i=hn(n);for(let o of pn){let s=i[o];if(s?.length){r.push(`== ${o} ==&amp;lt;!-- ========================================================= --&amp;gt;`);for(let a of s){let f={};I(f,&amp;quot;patch&amp;quot;,t),I(f,&amp;quot;id&amp;quot;,a.id),I(f,&amp;quot;field&amp;quot;,a.field),I(f,&amp;quot;summary&amp;quot;,a.summary),I(f,&amp;quot;lang&amp;quot;,a.lang),r.push(&amp;quot;{{PatchNoteDef&amp;quot;);for(let c in f)r.push(`    | ${c} = ${f[c]}`);r.push(&amp;quot;}}&amp;quot;)}}}return r.join(`&lt;br /&gt;
`)}function hn(t){let e={};for(let n of t){let{field:r}=n,i=Ye;if(r.startsWith(&amp;quot;$&amp;quot;)){r=r.substring(&amp;quot;$&amp;quot;.length);let o=r.split(&amp;quot;_&amp;quot;);i=o.shift(),r=o.join(&amp;quot;_&amp;quot;),n={...n,field:r,lang:i}}e[i]=e[i]||[],e[i].push(n)}return e}var et=_n;var mn=[&amp;quot;zh&amp;quot;,&amp;quot;ja&amp;quot;,&amp;quot;ko&amp;quot;,&amp;quot;en&amp;quot;];function gn(t,e){if(t===void 0&amp;amp;&amp;amp;e===void 0)return&amp;quot;&amp;quot;;if(t===void 0)return _e(&amp;quot;&amp;quot;,e);if(e===void 0)return _e(t,&amp;quot;&amp;quot;);let n=new Intl.Segmenter(mn,{granularity:&amp;quot;word&amp;quot;}),r=Array.from(n.segment(t),p=&amp;gt;p.segment),i=Array.from(n.segment(e),p=&amp;gt;p.segment),o=r.length,s=i.length,a=new Int32Array((o+1)*(s+1)),f=(p,h)=&amp;gt;p*(s+1)+h;for(let p=1;p&amp;lt;=o;p++)for(let h=1;h&amp;lt;=s;h++)a[f(p,h)]=r[p-1]===i[h-1]?a[f(p-1,h-1)]+1:Math.max(a[f(p-1,h)],a[f(p,h-1)]);let c=o,u=s,_=[];for(;c&amp;gt;0||u&amp;gt;0;)c&amp;gt;0&amp;amp;&amp;amp;u&amp;gt;0&amp;amp;&amp;amp;r[c-1]===i[u-1]?(_.push({type:&amp;quot;eq&amp;quot;,val:r[c-1]}),c--,u--):u&amp;gt;0&amp;amp;&amp;amp;(c===0||a[f(c,u-1)]&amp;gt;=a[f(c-1,u)])?(_.push({type:&amp;quot;add&amp;quot;,val:i[u-1]}),u--):(_.push({type:&amp;quot;del&amp;quot;,val:r[c-1]}),c--);_.reverse();let l=&amp;quot;&amp;quot;,d=&amp;quot;&amp;quot;,y=&amp;quot;&amp;quot;,w=()=&amp;gt;{(d||y)&amp;amp;&amp;amp;(l+=_e(d,y),d=&amp;quot;&amp;quot;,y=&amp;quot;&amp;quot;)};for(let p of _)p.type===&amp;quot;eq&amp;quot;?(w(),l+=p.val):p.type===&amp;quot;del&amp;quot;?d+=p.val:p.type===&amp;quot;add&amp;quot;&amp;amp;&amp;amp;(y+=p.val);return w(),l}function _e(t,e){return&amp;quot;\u276E&amp;quot;+t+&amp;quot;\u25B8&amp;quot;+e+&amp;quot;\u276F&amp;quot;}var tt=gn;function yn(t={},e={}){let n=[],r=new Set([...Object.keys(t),...Object.keys(e)]);for(let i of r){let o=tt(t[i],e[i]);o!==String(t[i])&amp;amp;&amp;amp;n.push({field:i,summary:o})}return n}var nt=yn;function vn(t={},e={}){let n=[],r=new Set([...Object.keys(t),...Object.keys(e)]);for(let i of r){let o=nt(t[i],e[i]);for(let s of o)n.push({id:i,...s})}return n}var ot=vn;var he,me;async function wn(t,e,n,r,i){me=n,Xe(me.log);let o=Date.now();x(&amp;quot;Beginning comparison...&amp;quot;);let s=await Ze(r,bn);he=t;let a=Date.now();x(&amp;quot;Parsing the first archive...&amp;quot;);let f=await s.run();x(`Finished parsing the first archive in ${Date.now()-a} ms.`),he=e;let c=Date.now();x(&amp;quot;Parsing the second archive...&amp;quot;);let u=await s.run();x(`Finished parsing the second archive in ${Date.now()-c} ms.`),x(&amp;quot;Starting comparison...&amp;quot;);let _=Date.now(),l=pe(f),d=pe(u),y=ot(l,d),w=et(i.id,i.date,y);return x(`Finished comparison in ${Date.now()-_} ms.`),x(`Finished all processes in ${Date.now()-o} ms.`),w}var bn={find:()=&amp;gt;he,log:(...t)=&amp;gt;{me.log(...t)}},rt=wn;async function kn(t,e,n,r){return it(t,&amp;quot;&amp;quot;,e,n,r)}async function it(t,e,n,r,i){e+=e?&amp;quot;/&amp;quot;:&amp;quot;&amp;quot;;let o={},s=await xn(t);for(let[a,f]of s){let c=e+a;if(!(r&amp;amp;&amp;amp;c.match(r))){if(f.kind===&amp;quot;directory&amp;quot;){let u=await it(f,c,n,r,i);if(u instanceof File)return u;Object.assign(o,u)}else if(c.match(n)){let u=await f.getFile();if(i)return u;o[c]=u}}}return o}async function xn(t){let e=[];try{for await(let n of t.entries())e.push(n)}catch{}return e}var st=kn;var lt;async function Dn(...t){let[e,n,r]=t;return await st(lt,e,n,r)}function An(...t){$(...t)}function Sn(t){lt=t}var Ln={find:Dn,log:An,setDirHandle:Sn},at=Ln;var En=M`&lt;br /&gt;
    color: #fff;&lt;br /&gt;
    &amp;amp; input {&lt;br /&gt;
        margin-left: 4px;&lt;br /&gt;
    }&lt;br /&gt;
`,te=M`&lt;br /&gt;
    margin-top: 2px;&lt;br /&gt;
`,Cn=M`&lt;br /&gt;
    height: 200px;&lt;br /&gt;
`,Pn=&amp;quot;MediaWiki:ParseCore.js&amp;quot;,ge=class extends T{vars={logRef:Le()};state={version:&amp;quot;0.00.00&amp;quot;,date:new Date().toISOString().substring(0,10),archiveA:null,archiveB:null,comparisonResult:&amp;quot;&amp;quot;,isWorking:!1};render(){let{logRef:e}=this.vars,{version:n,date:r,archiveA:i,archiveB:o,comparisonResult:s,isWorking:a}=this.state;return v(&amp;quot;div&amp;quot;,{class:En,children:[v(&amp;quot;div&amp;quot;,{class:te,children:[&amp;quot;Patch version:&amp;quot;,v(&amp;quot;input&amp;quot;,{disabled:a,value:n,onChange:this.onVersionChange})]}),v(&amp;quot;div&amp;quot;,{class:te,children:[&amp;quot;Patch date:&amp;quot;,v(&amp;quot;input&amp;quot;,{disabled:a,value:r,onChange:this.onDateChange})]}),v(&amp;quot;div&amp;quot;,{class:te,children:[&amp;quot;Archive A (older):&amp;quot;,v(&amp;quot;input&amp;quot;,{disabled:a,type:&amp;quot;file&amp;quot;,value:i?void 0:&amp;quot;&amp;quot;,onChange:this.onArchiveAChange})]}),v(&amp;quot;div&amp;quot;,{class:te,children:[&amp;quot;Archive B (newer):&amp;quot;,v(&amp;quot;input&amp;quot;,{disabled:a,type:&amp;quot;file&amp;quot;,value:o?void 0:&amp;quot;&amp;quot;,onChange:this.onArchiveBChange})]}),v(&amp;quot;button&amp;quot;,{disabled:!n||!r||!i||!o||a,onClick:this.onCompareClick,children:[&amp;quot;Compare &amp;quot;,a&amp;amp;&amp;amp;v(&amp;quot;progress&amp;quot;,{})]}),v(&amp;quot;br&amp;quot;,{}),v(&amp;quot;br&amp;quot;,{}),&amp;quot;Log:&amp;quot;,v(&amp;quot;div&amp;quot;,{ref:e}),&amp;quot;Output:&amp;quot;,v(&amp;quot;textarea&amp;quot;,{class:Cn,value:s})]})}async componentDidMount(){let{logRef:e}=this.vars;Ge(e.current),$(&amp;quot;Initialized.&amp;quot;)}onVersionChange=e=&amp;gt;{this.setState({version:e.value})};onDateChange=e=&amp;gt;{this.setState({date:e.value})};onArchiveAChange=e=&amp;gt;{this.setState({archiveA:e.target.files[0]})};onArchiveBChange=e=&amp;gt;{this.setState({archiveB:e.target.files[0]})};onCompareClick=async()=&amp;gt;{let{version:e,date:n,archiveA:r,archiveB:i}=this.state,o={id:e,date:n};this.setState({isWorking:!0});let s=await rt(r,i,at,Pn,o);this.setState({isWorking:!1,comparisonResult:s})}},ct=ge;function Rn(){Oe(ct,&amp;quot;.diff-root&amp;quot;,0)}Rn();})();&lt;/div&gt;</summary>
		<author><name>76561198048502585</name></author>
	</entry>
	<entry>
		<id>https://wiki.hoodedhorse.com/Heroes_of_Might_and_Magic_Olden_Era/index.php?title=MediaWiki:UpdateTool.js&amp;diff=41541</id>
		<title>MediaWiki:UpdateTool.js</title>
		<link rel="alternate" type="text/html" href="https://wiki.hoodedhorse.com/Heroes_of_Might_and_Magic_Olden_Era/index.php?title=MediaWiki:UpdateTool.js&amp;diff=41541"/>
		<updated>2026-10-13T15:39:49Z</updated>

		<summary type="html">&lt;p&gt;76561198048502585: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;//Source:https://github.com/Aurelain/oe-wiki/tree/main/src/update&lt;br /&gt;
(()=&amp;gt;{var Ht=Object.create;var He=Object.defineProperty;var $t=Object.getOwnPropertyDescriptor;var Rt=Object.getOwnPropertyNames;var jt=Object.getPrototypeOf,Ot=Object.prototype.hasOwnProperty;var Ut=(e,t)=&amp;gt;()=&amp;gt;{try{return t||e((t={exports:{}}).exports,t),t.exports}catch(n){throw t=0,n}};var Wt=(e,t,n,i)=&amp;gt;{if(t&amp;amp;&amp;amp;typeof t==&amp;quot;object&amp;quot;||typeof t==&amp;quot;function&amp;quot;)for(let s of Rt(t))!Ot.call(e,s)&amp;amp;&amp;amp;s!==n&amp;amp;&amp;amp;He(e,s,{get:()=&amp;gt;t[s],enumerable:!(i=$t(t,s))||i.enumerable});return e};var Bt=(e,t,n)=&amp;gt;(n=e!=null?Ht(jt(e)):{},Wt(t||!e||!e.__esModule?He(n,&amp;quot;default&amp;quot;,{value:e,enumerable:!0}):n,e));var At=Ut((hi,X)=&amp;gt;{var h=function(){this.Diff_Timeout=1,this.Diff_EditCost=4,this.Match_Threshold=.5,this.Match_Distance=1e3,this.Patch_DeleteThreshold=.5,this.Patch_Margin=4,this.Match_MaxBits=32},M=-1,E=1,b=0;h.Diff=function(e,t){return[e,t]};h.prototype.diff_main=function(e,t,n,i){typeof i&amp;gt;&amp;quot;u&amp;quot;&amp;amp;&amp;amp;(this.Diff_Timeout&amp;lt;=0?i=Number.MAX_VALUE:i=new Date().getTime()+this.Diff_Timeout*1e3);var s=i;if(e==null||t==null)throw new Error(&amp;quot;Null input. (diff_main)&amp;quot;);if(e==t)return e?[new h.Diff(b,e)]:[];typeof n&amp;gt;&amp;quot;u&amp;quot;&amp;amp;&amp;amp;(n=!0);var r=n,o=this.diff_commonPrefix(e,t),a=e.substring(0,o);e=e.substring(o),t=t.substring(o),o=this.diff_commonSuffix(e,t);var l=e.substring(e.length-o);e=e.substring(0,e.length-o),t=t.substring(0,t.length-o);var c=this.diff_compute_(e,t,r,s);return a&amp;amp;&amp;amp;c.unshift(new h.Diff(b,a)),l&amp;amp;&amp;amp;c.push(new h.Diff(b,l)),this.diff_cleanupMerge(c),c};h.prototype.diff_compute_=function(e,t,n,i){var s;if(!e)return[new h.Diff(E,t)];if(!t)return[new h.Diff(M,e)];var r=e.length&amp;gt;t.length?e:t,o=e.length&amp;gt;t.length?t:e,a=r.indexOf(o);if(a!=-1)return s=[new h.Diff(E,r.substring(0,a)),new h.Diff(b,o),new h.Diff(E,r.substring(a+o.length))],e.length&amp;gt;t.length&amp;amp;&amp;amp;(s[0][0]=s[2][0]=M),s;if(o.length==1)return[new h.Diff(M,e),new h.Diff(E,t)];var l=this.diff_halfMatch_(e,t);if(l){var c=l[0],u=l[1],p=l[2],f=l[3],_=l[4],g=this.diff_main(c,p,n,i),m=this.diff_main(u,f,n,i);return g.concat([new h.Diff(b,_)],m)}return n&amp;amp;&amp;amp;e.length&amp;gt;100&amp;amp;&amp;amp;t.length&amp;gt;100?this.diff_lineMode_(e,t,i):this.diff_bisect_(e,t,i)};h.prototype.diff_lineMode_=function(e,t,n){var i=this.diff_linesToChars_(e,t);e=i.chars1,t=i.chars2;var s=i.lineArray,r=this.diff_main(e,t,!1,n);this.diff_charsToLines_(r,s),this.diff_cleanupSemantic(r),r.push(new h.Diff(b,&amp;quot;&amp;quot;));for(var o=0,a=0,l=0,c=&amp;quot;&amp;quot;,u=&amp;quot;&amp;quot;;o&amp;lt;r.length;){switch(r[o][0]){case E:l++,u+=r[o][1];break;case M:a++,c+=r[o][1];break;case b:if(a&amp;gt;=1&amp;amp;&amp;amp;l&amp;gt;=1){r.splice(o-a-l,a+l),o=o-a-l;for(var p=this.diff_main(c,u,!1,n),f=p.length-1;f&amp;gt;=0;f--)r.splice(o,0,p[f]);o=o+p.length}l=0,a=0,c=&amp;quot;&amp;quot;,u=&amp;quot;&amp;quot;;break}o++}return r.pop(),r};h.prototype.diff_bisect_=function(e,t,n){for(var i=e.length,s=t.length,r=Math.ceil((i+s)/2),o=r,a=2*r,l=new Array(a),c=new Array(a),u=0;u&amp;lt;a;u++)l[u]=-1,c[u]=-1;l[o+1]=0,c[o+1]=0;for(var p=i-s,f=p%2!=0,_=0,g=0,m=0,w=0,v=0;v&amp;lt;r&amp;amp;&amp;amp;!(new Date().getTime()&amp;gt;n);v++){for(var d=-v+_;d&amp;lt;=v-g;d+=2){var y=o+d,D;d==-v||d!=v&amp;amp;&amp;amp;l[y-1]&amp;lt;l[y+1]?D=l[y+1]:D=l[y-1]+1;for(var T=D-d;D&amp;lt;i&amp;amp;&amp;amp;T&amp;lt;s&amp;amp;&amp;amp;e.charAt(D)==t.charAt(T);)D++,T++;if(l[y]=D,D&amp;gt;i)g+=2;else if(T&amp;gt;s)_+=2;else if(f){var P=o+p-d;if(P&amp;gt;=0&amp;amp;&amp;amp;P&amp;lt;a&amp;amp;&amp;amp;c[P]!=-1){var A=i-c[P];if(D&amp;gt;=A)return this.diff_bisectSplit_(e,t,D,T,n)}}}for(var C=-v+m;C&amp;lt;=v-w;C+=2){var P=o+C,A;C==-v||C!=v&amp;amp;&amp;amp;c[P-1]&amp;lt;c[P+1]?A=c[P+1]:A=c[P-1]+1;for(var I=A-C;A&amp;lt;i&amp;amp;&amp;amp;I&amp;lt;s&amp;amp;&amp;amp;e.charAt(i-A-1)==t.charAt(s-I-1);)A++,I++;if(c[P]=A,A&amp;gt;i)w+=2;else if(I&amp;gt;s)m+=2;else if(!f){var y=o+p-C;if(y&amp;gt;=0&amp;amp;&amp;amp;y&amp;lt;a&amp;amp;&amp;amp;l[y]!=-1){var D=l[y],T=o+D-y;if(A=i-A,D&amp;gt;=A)return this.diff_bisectSplit_(e,t,D,T,n)}}}}return[new h.Diff(M,e),new h.Diff(E,t)]};h.prototype.diff_bisectSplit_=function(e,t,n,i,s){var r=e.substring(0,n),o=t.substring(0,i),a=e.substring(n),l=t.substring(i),c=this.diff_main(r,o,!1,s),u=this.diff_main(a,l,!1,s);return c.concat(u)};h.prototype.diff_linesToChars_=function(e,t){var n=[],i={};n[0]=&amp;quot;&amp;quot;;function s(l){for(var c=&amp;quot;&amp;quot;,u=0,p=-1,f=n.length;p&amp;lt;l.length-1;){p=l.indexOf(`&lt;br /&gt;
`,u),p==-1&amp;amp;&amp;amp;(p=l.length-1);var _=l.substring(u,p+1);(i.hasOwnProperty?i.hasOwnProperty(_):i[_]!==void 0)?c+=String.fromCharCode(i[_]):(f==r&amp;amp;&amp;amp;(_=l.substring(u),p=l.length),c+=String.fromCharCode(f),i[_]=f,n[f++]=_),u=p+1}return c}var r=4e4,o=s(e);r=65535;var a=s(t);return{chars1:o,chars2:a,lineArray:n}};h.prototype.diff_charsToLines_=function(e,t){for(var n=0;n&amp;lt;e.length;n++){for(var i=e[n][1],s=[],r=0;r&amp;lt;i.length;r++)s[r]=t[i.charCodeAt(r)];e[n][1]=s.join(&amp;quot;&amp;quot;)}};h.prototype.diff_commonPrefix=function(e,t){if(!e||!t||e.charAt(0)!=t.charAt(0))return 0;for(var n=0,i=Math.min(e.length,t.length),s=i,r=0;n&amp;lt;s;)e.substring(r,s)==t.substring(r,s)?(n=s,r=n):i=s,s=Math.floor((i-n)/2+n);return s};h.prototype.diff_commonSuffix=function(e,t){if(!e||!t||e.charAt(e.length-1)!=t.charAt(t.length-1))return 0;for(var n=0,i=Math.min(e.length,t.length),s=i,r=0;n&amp;lt;s;)e.substring(e.length-s,e.length-r)==t.substring(t.length-s,t.length-r)?(n=s,r=n):i=s,s=Math.floor((i-n)/2+n);return s};h.prototype.diff_commonOverlap_=function(e,t){var n=e.length,i=t.length;if(n==0||i==0)return 0;n&amp;gt;i?e=e.substring(n-i):n&amp;lt;i&amp;amp;&amp;amp;(t=t.substring(0,n));var s=Math.min(n,i);if(e==t)return s;for(var r=0,o=1;;){var a=e.substring(s-o),l=t.indexOf(a);if(l==-1)return r;o+=l,(l==0||e.substring(s-o)==t.substring(0,o))&amp;amp;&amp;amp;(r=o,o++)}};h.prototype.diff_halfMatch_=function(e,t){if(this.Diff_Timeout&amp;lt;=0)return null;var n=e.length&amp;gt;t.length?e:t,i=e.length&amp;gt;t.length?t:e;if(n.length&amp;lt;4||i.length*2&amp;lt;n.length)return null;var s=this;function r(g,m,w){for(var v=g.substring(w,w+Math.floor(g.length/4)),d=-1,y=&amp;quot;&amp;quot;,D,T,P,A;(d=m.indexOf(v,d+1))!=-1;){var C=s.diff_commonPrefix(g.substring(w),m.substring(d)),I=s.diff_commonSuffix(g.substring(0,w),m.substring(0,d));y.length&amp;lt;I+C&amp;amp;&amp;amp;(y=m.substring(d-I,d)+m.substring(d,d+C),D=g.substring(0,w-I),T=g.substring(w+C),P=m.substring(0,d-I),A=m.substring(d+C))}return y.length*2&amp;gt;=g.length?[D,T,P,A,y]:null}var o=r(n,i,Math.ceil(n.length/4)),a=r(n,i,Math.ceil(n.length/2)),l;if(!o&amp;amp;&amp;amp;!a)return null;a?o?l=o[4].length&amp;gt;a[4].length?o:a:l=a:l=o;var c,u,p,f;e.length&amp;gt;t.length?(c=l[0],u=l[1],p=l[2],f=l[3]):(p=l[0],f=l[1],c=l[2],u=l[3]);var _=l[4];return[c,u,p,f,_]};h.prototype.diff_cleanupSemantic=function(e){for(var t=!1,n=[],i=0,s=null,r=0,o=0,a=0,l=0,c=0;r&amp;lt;e.length;)e[r][0]==b?(n[i++]=r,o=l,a=c,l=0,c=0,s=e[r][1]):(e[r][0]==E?l+=e[r][1].length:c+=e[r][1].length,s&amp;amp;&amp;amp;s.length&amp;lt;=Math.max(o,a)&amp;amp;&amp;amp;s.length&amp;lt;=Math.max(l,c)&amp;amp;&amp;amp;(e.splice(n[i-1],0,new h.Diff(M,s)),e[n[i-1]+1][0]=E,i--,i--,r=i&amp;gt;0?n[i-1]:-1,o=0,a=0,l=0,c=0,s=null,t=!0)),r++;for(t&amp;amp;&amp;amp;this.diff_cleanupMerge(e),this.diff_cleanupSemanticLossless(e),r=1;r&amp;lt;e.length;){if(e[r-1][0]==M&amp;amp;&amp;amp;e[r][0]==E){var u=e[r-1][1],p=e[r][1],f=this.diff_commonOverlap_(u,p),_=this.diff_commonOverlap_(p,u);f&amp;gt;=_?(f&amp;gt;=u.length/2||f&amp;gt;=p.length/2)&amp;amp;&amp;amp;(e.splice(r,0,new h.Diff(b,p.substring(0,f))),e[r-1][1]=u.substring(0,u.length-f),e[r+1][1]=p.substring(f),r++):(_&amp;gt;=u.length/2||_&amp;gt;=p.length/2)&amp;amp;&amp;amp;(e.splice(r,0,new h.Diff(b,u.substring(0,_))),e[r-1][0]=E,e[r-1][1]=p.substring(0,p.length-_),e[r+1][0]=M,e[r+1][1]=u.substring(_),r++),r++}r++}};h.prototype.diff_cleanupSemanticLossless=function(e){function t(_,g){if(!_||!g)return 6;var m=_.charAt(_.length-1),w=g.charAt(0),v=m.match(h.nonAlphaNumericRegex_),d=w.match(h.nonAlphaNumericRegex_),y=v&amp;amp;&amp;amp;m.match(h.whitespaceRegex_),D=d&amp;amp;&amp;amp;w.match(h.whitespaceRegex_),T=y&amp;amp;&amp;amp;m.match(h.linebreakRegex_),P=D&amp;amp;&amp;amp;w.match(h.linebreakRegex_),A=T&amp;amp;&amp;amp;_.match(h.blanklineEndRegex_),C=P&amp;amp;&amp;amp;g.match(h.blanklineStartRegex_);return A||C?5:T||P?4:v&amp;amp;&amp;amp;!y&amp;amp;&amp;amp;D?3:y||D?2:v||d?1:0}for(var n=1;n&amp;lt;e.length-1;){if(e[n-1][0]==b&amp;amp;&amp;amp;e[n+1][0]==b){var i=e[n-1][1],s=e[n][1],r=e[n+1][1],o=this.diff_commonSuffix(i,s);if(o){var a=s.substring(s.length-o);i=i.substring(0,i.length-o),s=a+s.substring(0,s.length-o),r=a+r}for(var l=i,c=s,u=r,p=t(i,s)+t(s,r);s.charAt(0)===r.charAt(0);){i+=s.charAt(0),s=s.substring(1)+r.charAt(0),r=r.substring(1);var f=t(i,s)+t(s,r);f&amp;gt;=p&amp;amp;&amp;amp;(p=f,l=i,c=s,u=r)}e[n-1][1]!=l&amp;amp;&amp;amp;(l?e[n-1][1]=l:(e.splice(n-1,1),n--),e[n][1]=c,u?e[n+1][1]=u:(e.splice(n+1,1),n--))}n++}};h.nonAlphaNumericRegex_=/[^a-zA-Z0-9]/;h.whitespaceRegex_=/\s/;h.linebreakRegex_=/[\r\n]/;h.blanklineEndRegex_=/\n\r?\n$/;h.blanklineStartRegex_=/^\r?\n\r?\n/;h.prototype.diff_cleanupEfficiency=function(e){for(var t=!1,n=[],i=0,s=null,r=0,o=!1,a=!1,l=!1,c=!1;r&amp;lt;e.length;)e[r][0]==b?(e[r][1].length&amp;lt;this.Diff_EditCost&amp;amp;&amp;amp;(l||c)?(n[i++]=r,o=l,a=c,s=e[r][1]):(i=0,s=null),l=c=!1):(e[r][0]==M?c=!0:l=!0,s&amp;amp;&amp;amp;(o&amp;amp;&amp;amp;a&amp;amp;&amp;amp;l&amp;amp;&amp;amp;c||s.length&amp;lt;this.Diff_EditCost/2&amp;amp;&amp;amp;o+a+l+c==3)&amp;amp;&amp;amp;(e.splice(n[i-1],0,new h.Diff(M,s)),e[n[i-1]+1][0]=E,i--,s=null,o&amp;amp;&amp;amp;a?(l=c=!0,i=0):(i--,r=i&amp;gt;0?n[i-1]:-1,l=c=!1),t=!0)),r++;t&amp;amp;&amp;amp;this.diff_cleanupMerge(e)};h.prototype.diff_cleanupMerge=function(e){e.push(new h.Diff(b,&amp;quot;&amp;quot;));for(var t=0,n=0,i=0,s=&amp;quot;&amp;quot;,r=&amp;quot;&amp;quot;,o;t&amp;lt;e.length;)switch(e[t][0]){case E:i++,r+=e[t][1],t++;break;case M:n++,s+=e[t][1],t++;break;case b:n+i&amp;gt;1?(n!==0&amp;amp;&amp;amp;i!==0&amp;amp;&amp;amp;(o=this.diff_commonPrefix(r,s),o!==0&amp;amp;&amp;amp;(t-n-i&amp;gt;0&amp;amp;&amp;amp;e[t-n-i-1][0]==b?e[t-n-i-1][1]+=r.substring(0,o):(e.splice(0,0,new h.Diff(b,r.substring(0,o))),t++),r=r.substring(o),s=s.substring(o)),o=this.diff_commonSuffix(r,s),o!==0&amp;amp;&amp;amp;(e[t][1]=r.substring(r.length-o)+e[t][1],r=r.substring(0,r.length-o),s=s.substring(0,s.length-o))),t-=n+i,e.splice(t,n+i),s.length&amp;amp;&amp;amp;(e.splice(t,0,new h.Diff(M,s)),t++),r.length&amp;amp;&amp;amp;(e.splice(t,0,new h.Diff(E,r)),t++),t++):t!==0&amp;amp;&amp;amp;e[t-1][0]==b?(e[t-1][1]+=e[t][1],e.splice(t,1)):t++,i=0,n=0,s=&amp;quot;&amp;quot;,r=&amp;quot;&amp;quot;;break}e[e.length-1][1]===&amp;quot;&amp;quot;&amp;amp;&amp;amp;e.pop();var a=!1;for(t=1;t&amp;lt;e.length-1;)e[t-1][0]==b&amp;amp;&amp;amp;e[t+1][0]==b&amp;amp;&amp;amp;(e[t][1].substring(e[t][1].length-e[t-1][1].length)==e[t-1][1]?(e[t][1]=e[t-1][1]+e[t][1].substring(0,e[t][1].length-e[t-1][1].length),e[t+1][1]=e[t-1][1]+e[t+1][1],e.splice(t-1,1),a=!0):e[t][1].substring(0,e[t+1][1].length)==e[t+1][1]&amp;amp;&amp;amp;(e[t-1][1]+=e[t+1][1],e[t][1]=e[t][1].substring(e[t+1][1].length)+e[t+1][1],e.splice(t+1,1),a=!0)),t++;a&amp;amp;&amp;amp;this.diff_cleanupMerge(e)};h.prototype.diff_xIndex=function(e,t){var n=0,i=0,s=0,r=0,o;for(o=0;o&amp;lt;e.length&amp;amp;&amp;amp;(e[o][0]!==E&amp;amp;&amp;amp;(n+=e[o][1].length),e[o][0]!==M&amp;amp;&amp;amp;(i+=e[o][1].length),!(n&amp;gt;t));o++)s=n,r=i;return e.length!=o&amp;amp;&amp;amp;e[o][0]===M?r:r+(t-s)};h.prototype.diff_prettyHtml=function(e){for(var t=[],n=/&amp;amp;/g,i=/&amp;lt;/g,s=/&amp;gt;/g,r=/\n/g,o=0;o&amp;lt;e.length;o++){var a=e[o][0],l=e[o][1],c=l.replace(n,&amp;quot;&amp;amp;amp;&amp;quot;).replace(i,&amp;quot;&amp;amp;lt;&amp;quot;).replace(s,&amp;quot;&amp;amp;gt;&amp;quot;).replace(r,&amp;quot;&amp;amp;para;&amp;lt;br&amp;gt;&amp;quot;);switch(a){case E:t[o]=&#039;&amp;lt;ins style=&amp;quot;background:#e6ffe6;&amp;quot;&amp;gt;&#039;+c+&amp;quot;&amp;lt;/ins&amp;gt;&amp;quot;;break;case M:t[o]=&#039;&amp;lt;del style=&amp;quot;background:#ffe6e6;&amp;quot;&amp;gt;&#039;+c+&amp;quot;&amp;lt;/del&amp;gt;&amp;quot;;break;case b:t[o]=&amp;quot;&amp;lt;span&amp;gt;&amp;quot;+c+&amp;quot;&amp;lt;/span&amp;gt;&amp;quot;;break}}return t.join(&amp;quot;&amp;quot;)};h.prototype.diff_text1=function(e){for(var t=[],n=0;n&amp;lt;e.length;n++)e[n][0]!==E&amp;amp;&amp;amp;(t[n]=e[n][1]);return t.join(&amp;quot;&amp;quot;)};h.prototype.diff_text2=function(e){for(var t=[],n=0;n&amp;lt;e.length;n++)e[n][0]!==M&amp;amp;&amp;amp;(t[n]=e[n][1]);return t.join(&amp;quot;&amp;quot;)};h.prototype.diff_levenshtein=function(e){for(var t=0,n=0,i=0,s=0;s&amp;lt;e.length;s++){var r=e[s][0],o=e[s][1];switch(r){case E:n+=o.length;break;case M:i+=o.length;break;case b:t+=Math.max(n,i),n=0,i=0;break}}return t+=Math.max(n,i),t};h.prototype.diff_toDelta=function(e){for(var t=[],n=0;n&amp;lt;e.length;n++)switch(e[n][0]){case E:t[n]=&amp;quot;+&amp;quot;+encodeURI(e[n][1]);break;case M:t[n]=&amp;quot;-&amp;quot;+e[n][1].length;break;case b:t[n]=&amp;quot;=&amp;quot;+e[n][1].length;break}return t.join(&amp;quot;	&amp;quot;).replace(/%20/g,&amp;quot; &amp;quot;)};h.prototype.diff_fromDelta=function(e,t){for(var n=[],i=0,s=0,r=t.split(/\t/g),o=0;o&amp;lt;r.length;o++){var a=r[o].substring(1);switch(r[o].charAt(0)){case&amp;quot;+&amp;quot;:try{n[i++]=new h.Diff(E,decodeURI(a))}catch{throw new Error(&amp;quot;Illegal escape in diff_fromDelta: &amp;quot;+a)}break;case&amp;quot;-&amp;quot;:case&amp;quot;=&amp;quot;:var l=parseInt(a,10);if(isNaN(l)||l&amp;lt;0)throw new Error(&amp;quot;Invalid number in diff_fromDelta: &amp;quot;+a);var c=e.substring(s,s+=l);r[o].charAt(0)==&amp;quot;=&amp;quot;?n[i++]=new h.Diff(b,c):n[i++]=new h.Diff(M,c);break;default:if(r[o])throw new Error(&amp;quot;Invalid diff operation in diff_fromDelta: &amp;quot;+r[o])}}if(s!=e.length)throw new Error(&amp;quot;Delta length (&amp;quot;+s+&amp;quot;) does not equal source text length (&amp;quot;+e.length+&amp;quot;).&amp;quot;);return n};h.prototype.match_main=function(e,t,n){if(e==null||t==null||n==null)throw new Error(&amp;quot;Null input. (match_main)&amp;quot;);return n=Math.max(0,Math.min(n,e.length)),e==t?0:e.length?e.substring(n,n+t.length)==t?n:this.match_bitap_(e,t,n):-1};h.prototype.match_bitap_=function(e,t,n){if(t.length&amp;gt;this.Match_MaxBits)throw new Error(&amp;quot;Pattern too long for this browser.&amp;quot;);var i=this.match_alphabet_(t),s=this;function r(D,T){var P=D/t.length,A=Math.abs(n-T);return s.Match_Distance?P+A/s.Match_Distance:A?1:P}var o=this.Match_Threshold,a=e.indexOf(t,n);a!=-1&amp;amp;&amp;amp;(o=Math.min(r(0,a),o),a=e.lastIndexOf(t,n+t.length),a!=-1&amp;amp;&amp;amp;(o=Math.min(r(0,a),o)));var l=1&amp;lt;&amp;lt;t.length-1;a=-1;for(var c,u,p=t.length+e.length,f,_=0;_&amp;lt;t.length;_++){for(c=0,u=p;c&amp;lt;u;)r(_,n+u)&amp;lt;=o?c=u:p=u,u=Math.floor((p-c)/2+c);p=u;var g=Math.max(1,n-u+1),m=Math.min(n+u,e.length)+t.length,w=Array(m+2);w[m+1]=(1&amp;lt;&amp;lt;_)-1;for(var v=m;v&amp;gt;=g;v--){var d=i[e.charAt(v-1)];if(_===0?w[v]=(w[v+1]&amp;lt;&amp;lt;1|1)&amp;amp;d:w[v]=(w[v+1]&amp;lt;&amp;lt;1|1)&amp;amp;d|((f[v+1]|f[v])&amp;lt;&amp;lt;1|1)|f[v+1],w[v]&amp;amp;l){var y=r(_,v-1);if(y&amp;lt;=o)if(o=y,a=v-1,a&amp;gt;n)g=Math.max(1,2*n-a);else break}}if(r(_+1,n)&amp;gt;o)break;f=w}return a};h.prototype.match_alphabet_=function(e){for(var t={},n=0;n&amp;lt;e.length;n++)t[e.charAt(n)]=0;for(var n=0;n&amp;lt;e.length;n++)t[e.charAt(n)]|=1&amp;lt;&amp;lt;e.length-n-1;return t};h.prototype.patch_addContext_=function(e,t){if(t.length!=0){if(e.start2===null)throw Error(&amp;quot;patch not initialized&amp;quot;);for(var n=t.substring(e.start2,e.start2+e.length1),i=0;t.indexOf(n)!=t.lastIndexOf(n)&amp;amp;&amp;amp;n.length&amp;lt;this.Match_MaxBits-this.Patch_Margin-this.Patch_Margin;)i+=this.Patch_Margin,n=t.substring(e.start2-i,e.start2+e.length1+i);i+=this.Patch_Margin;var s=t.substring(e.start2-i,e.start2);s&amp;amp;&amp;amp;e.diffs.unshift(new h.Diff(b,s));var r=t.substring(e.start2+e.length1,e.start2+e.length1+i);r&amp;amp;&amp;amp;e.diffs.push(new h.Diff(b,r)),e.start1-=s.length,e.start2-=s.length,e.length1+=s.length+r.length,e.length2+=s.length+r.length}};h.prototype.patch_make=function(e,t,n){var i,s;if(typeof e==&amp;quot;string&amp;quot;&amp;amp;&amp;amp;typeof t==&amp;quot;string&amp;quot;&amp;amp;&amp;amp;typeof n&amp;gt;&amp;quot;u&amp;quot;)i=e,s=this.diff_main(i,t,!0),s.length&amp;gt;2&amp;amp;&amp;amp;(this.diff_cleanupSemantic(s),this.diff_cleanupEfficiency(s));else if(e&amp;amp;&amp;amp;typeof e==&amp;quot;object&amp;quot;&amp;amp;&amp;amp;typeof t&amp;gt;&amp;quot;u&amp;quot;&amp;amp;&amp;amp;typeof n&amp;gt;&amp;quot;u&amp;quot;)s=e,i=this.diff_text1(s);else if(typeof e==&amp;quot;string&amp;quot;&amp;amp;&amp;amp;t&amp;amp;&amp;amp;typeof t==&amp;quot;object&amp;quot;&amp;amp;&amp;amp;typeof n&amp;gt;&amp;quot;u&amp;quot;)i=e,s=t;else if(typeof e==&amp;quot;string&amp;quot;&amp;amp;&amp;amp;typeof t==&amp;quot;string&amp;quot;&amp;amp;&amp;amp;n&amp;amp;&amp;amp;typeof n==&amp;quot;object&amp;quot;)i=e,s=n;else throw new Error(&amp;quot;Unknown call format to patch_make.&amp;quot;);if(s.length===0)return[];for(var r=[],o=new h.patch_obj,a=0,l=0,c=0,u=i,p=i,f=0;f&amp;lt;s.length;f++){var _=s[f][0],g=s[f][1];switch(!a&amp;amp;&amp;amp;_!==b&amp;amp;&amp;amp;(o.start1=l,o.start2=c),_){case E:o.diffs[a++]=s[f],o.length2+=g.length,p=p.substring(0,c)+g+p.substring(c);break;case M:o.length1+=g.length,o.diffs[a++]=s[f],p=p.substring(0,c)+p.substring(c+g.length);break;case b:g.length&amp;lt;=2*this.Patch_Margin&amp;amp;&amp;amp;a&amp;amp;&amp;amp;s.length!=f+1?(o.diffs[a++]=s[f],o.length1+=g.length,o.length2+=g.length):g.length&amp;gt;=2*this.Patch_Margin&amp;amp;&amp;amp;a&amp;amp;&amp;amp;(this.patch_addContext_(o,u),r.push(o),o=new h.patch_obj,a=0,u=p,l=c);break}_!==E&amp;amp;&amp;amp;(l+=g.length),_!==M&amp;amp;&amp;amp;(c+=g.length)}return a&amp;amp;&amp;amp;(this.patch_addContext_(o,u),r.push(o)),r};h.prototype.patch_deepCopy=function(e){for(var t=[],n=0;n&amp;lt;e.length;n++){var i=e[n],s=new h.patch_obj;s.diffs=[];for(var r=0;r&amp;lt;i.diffs.length;r++)s.diffs[r]=new h.Diff(i.diffs[r][0],i.diffs[r][1]);s.start1=i.start1,s.start2=i.start2,s.length1=i.length1,s.length2=i.length2,t[n]=s}return t};h.prototype.patch_apply=function(e,t){if(e.length==0)return[t,[]];e=this.patch_deepCopy(e);var n=this.patch_addPadding(e);t=n+t+n,this.patch_splitMax(e);for(var i=0,s=[],r=0;r&amp;lt;e.length;r++){var o=e[r].start2+i,a=this.diff_text1(e[r].diffs),l,c=-1;if(a.length&amp;gt;this.Match_MaxBits?(l=this.match_main(t,a.substring(0,this.Match_MaxBits),o),l!=-1&amp;amp;&amp;amp;(c=this.match_main(t,a.substring(a.length-this.Match_MaxBits),o+a.length-this.Match_MaxBits),(c==-1||l&amp;gt;=c)&amp;amp;&amp;amp;(l=-1))):l=this.match_main(t,a,o),l==-1)s[r]=!1,i-=e[r].length2-e[r].length1;else{s[r]=!0,i=l-o;var u;if(c==-1?u=t.substring(l,l+a.length):u=t.substring(l,c+this.Match_MaxBits),a==u)t=t.substring(0,l)+this.diff_text2(e[r].diffs)+t.substring(l+a.length);else{var p=this.diff_main(a,u,!1);if(a.length&amp;gt;this.Match_MaxBits&amp;amp;&amp;amp;this.diff_levenshtein(p)/a.length&amp;gt;this.Patch_DeleteThreshold)s[r]=!1;else{this.diff_cleanupSemanticLossless(p);for(var f=0,_,g=0;g&amp;lt;e[r].diffs.length;g++){var m=e[r].diffs[g];m[0]!==b&amp;amp;&amp;amp;(_=this.diff_xIndex(p,f)),m[0]===E?t=t.substring(0,l+_)+m[1]+t.substring(l+_):m[0]===M&amp;amp;&amp;amp;(t=t.substring(0,l+_)+t.substring(l+this.diff_xIndex(p,f+m[1].length))),m[0]!==M&amp;amp;&amp;amp;(f+=m[1].length)}}}}}return t=t.substring(n.length,t.length-n.length),[t,s]};h.prototype.patch_addPadding=function(e){for(var t=this.Patch_Margin,n=&amp;quot;&amp;quot;,i=1;i&amp;lt;=t;i++)n+=String.fromCharCode(i);for(var i=0;i&amp;lt;e.length;i++)e[i].start1+=t,e[i].start2+=t;var s=e[0],r=s.diffs;if(r.length==0||r[0][0]!=b)r.unshift(new h.Diff(b,n)),s.start1-=t,s.start2-=t,s.length1+=t,s.length2+=t;else if(t&amp;gt;r[0][1].length){var o=t-r[0][1].length;r[0][1]=n.substring(r[0][1].length)+r[0][1],s.start1-=o,s.start2-=o,s.length1+=o,s.length2+=o}if(s=e[e.length-1],r=s.diffs,r.length==0||r[r.length-1][0]!=b)r.push(new h.Diff(b,n)),s.length1+=t,s.length2+=t;else if(t&amp;gt;r[r.length-1][1].length){var o=t-r[r.length-1][1].length;r[r.length-1][1]+=n.substring(0,o),s.length1+=o,s.length2+=o}return n};h.prototype.patch_splitMax=function(e){for(var t=this.Match_MaxBits,n=0;n&amp;lt;e.length;n++)if(!(e[n].length1&amp;lt;=t)){var i=e[n];e.splice(n--,1);for(var s=i.start1,r=i.start2,o=&amp;quot;&amp;quot;;i.diffs.length!==0;){var a=new h.patch_obj,l=!0;for(a.start1=s-o.length,a.start2=r-o.length,o!==&amp;quot;&amp;quot;&amp;amp;&amp;amp;(a.length1=a.length2=o.length,a.diffs.push(new h.Diff(b,o)));i.diffs.length!==0&amp;amp;&amp;amp;a.length1&amp;lt;t-this.Patch_Margin;){var c=i.diffs[0][0],u=i.diffs[0][1];c===E?(a.length2+=u.length,r+=u.length,a.diffs.push(i.diffs.shift()),l=!1):c===M&amp;amp;&amp;amp;a.diffs.length==1&amp;amp;&amp;amp;a.diffs[0][0]==b&amp;amp;&amp;amp;u.length&amp;gt;2*t?(a.length1+=u.length,s+=u.length,l=!1,a.diffs.push(new h.Diff(c,u)),i.diffs.shift()):(u=u.substring(0,t-a.length1-this.Patch_Margin),a.length1+=u.length,s+=u.length,c===b?(a.length2+=u.length,r+=u.length):l=!1,a.diffs.push(new h.Diff(c,u)),u==i.diffs[0][1]?i.diffs.shift():i.diffs[0][1]=i.diffs[0][1].substring(u.length))}o=this.diff_text2(a.diffs),o=o.substring(o.length-this.Patch_Margin);var p=this.diff_text1(i.diffs).substring(0,this.Patch_Margin);p!==&amp;quot;&amp;quot;&amp;amp;&amp;amp;(a.length1+=p.length,a.length2+=p.length,a.diffs.length!==0&amp;amp;&amp;amp;a.diffs[a.diffs.length-1][0]===b?a.diffs[a.diffs.length-1][1]+=p:a.diffs.push(new h.Diff(b,p))),l||e.splice(++n,0,a)}}};h.prototype.patch_toText=function(e){for(var t=[],n=0;n&amp;lt;e.length;n++)t[n]=e[n];return t.join(&amp;quot;&amp;quot;)};h.prototype.patch_fromText=function(e){var t=[];if(!e)return t;for(var n=e.split(`&lt;br /&gt;
`),i=0,s=/^@@ -(\d+),?(\d*) \+(\d+),?(\d*) @@$/;i&amp;lt;n.length;){var r=n[i].match(s);if(!r)throw new Error(&amp;quot;Invalid patch string: &amp;quot;+n[i]);var o=new h.patch_obj;for(t.push(o),o.start1=parseInt(r[1],10),r[2]===&amp;quot;&amp;quot;?(o.start1--,o.length1=1):r[2]==&amp;quot;0&amp;quot;?o.length1=0:(o.start1--,o.length1=parseInt(r[2],10)),o.start2=parseInt(r[3],10),r[4]===&amp;quot;&amp;quot;?(o.start2--,o.length2=1):r[4]==&amp;quot;0&amp;quot;?o.length2=0:(o.start2--,o.length2=parseInt(r[4],10)),i++;i&amp;lt;n.length;){var a=n[i].charAt(0);try{var l=decodeURI(n[i].substring(1))}catch{throw new Error(&amp;quot;Illegal escape in patch_fromText: &amp;quot;+l)}if(a==&amp;quot;-&amp;quot;)o.diffs.push(new h.Diff(M,l));else if(a==&amp;quot;+&amp;quot;)o.diffs.push(new h.Diff(E,l));else if(a==&amp;quot; &amp;quot;)o.diffs.push(new h.Diff(b,l));else{if(a==&amp;quot;@&amp;quot;)break;if(a!==&amp;quot;&amp;quot;)throw new Error(&#039;Invalid patch mode &amp;quot;&#039;+a+&#039;&amp;quot; in: &#039;+l)}i++}}return t};h.patch_obj=function(){this.diffs=[],this.start1=null,this.start2=null,this.length1=0,this.length2=0};h.patch_obj.prototype.toString=function(){var e,t;this.length1===0?e=this.start1+&amp;quot;,0&amp;quot;:this.length1==1?e=this.start1+1:e=this.start1+1+&amp;quot;,&amp;quot;+this.length1,this.length2===0?t=this.start2+&amp;quot;,0&amp;quot;:this.length2==1?t=this.start2+1:t=this.start2+1+&amp;quot;,&amp;quot;+this.length2;for(var n=[&amp;quot;@@ -&amp;quot;+e+&amp;quot; +&amp;quot;+t+` @@&lt;br /&gt;
`],i,s=0;s&amp;lt;this.diffs.length;s++){switch(this.diffs[s][0]){case E:i=&amp;quot;+&amp;quot;;break;case M:i=&amp;quot;-&amp;quot;;break;case b:i=&amp;quot; &amp;quot;;break}n[s+1]=i+encodeURI(this.diffs[s][1])+`&lt;br /&gt;
`}return n.join(&amp;quot;&amp;quot;).replace(/%20/g,&amp;quot; &amp;quot;)};X.exports=h;X.exports.diff_match_patch=h;X.exports.DIFF_DELETE=M;X.exports.DIFF_INSERT=E;X.exports.DIFF_EQUAL=b});var ce,S,Ue,Gt,j,$e,We,Be,we,ie,Y,Ge,De,ye,ke,zt,oe={},ae=[],Vt=/acit|ex(?:s|g|n|p|$)|rph|grid|ows|mnc|ntw|ine[ch]|zoo|^ord|itera/i,fe=Array.isArray;function H(e,t){for(var n in t)e[n]=t[n];return e}function Se(e){e&amp;amp;&amp;amp;e.parentNode&amp;amp;&amp;amp;e.parentNode.removeChild(e)}function Jt(e,t,n){var i,s,r,o={};for(r in t)r==&amp;quot;key&amp;quot;?i=t[r]:r==&amp;quot;ref&amp;quot;?s=t[r]:o[r]=t[r];if(arguments.length&amp;gt;2&amp;amp;&amp;amp;(o.children=arguments.length&amp;gt;3?ce.call(arguments,2):n),typeof e==&amp;quot;function&amp;quot;&amp;amp;&amp;amp;e.defaultProps!=null)for(r in e.defaultProps)o[r]===void 0&amp;amp;&amp;amp;(o[r]=e.defaultProps[r]);return se(e,o,i,s,null)}function se(e,t,n,i,s){var r={type:e,props:t,key:n,ref:i,__k:null,__:null,__b:0,__e:null,__c:null,constructor:void 0,__v:s??++Ue,__i:-1,__u:0};return s==null&amp;amp;&amp;amp;S.vnode!=null&amp;amp;&amp;amp;S.vnode(r),r}function ze(){return{current:null}}function V(e){return e.children}function z(e,t){this.props=e,this.context=t}function U(e,t){if(t==null)return e.__?U(e.__,e.__i+1):null;for(var n;t&amp;lt;e.__k.length;t++)if((n=e.__k[t])!=null&amp;amp;&amp;amp;n.__e!=null)return n.__e;return typeof e.type==&amp;quot;function&amp;quot;?U(e):null}function Zt(e){if(e.__P&amp;amp;&amp;amp;e.__d){var t=e.__v,n=t.__e,i=[],s=[],r=H({},t);r.__v=t.__v+1,S.vnode&amp;amp;&amp;amp;S.vnode(r),Me(e.__P,r,t,e.__n,e.__P.namespaceURI,32&amp;amp;t.__u?[n]:null,i,n??U(t),!!(32&amp;amp;t.__u),s),r.__v=t.__v,r.__.__k[r.__i]=r,qe(i,r,s),t.__e=t.__=null,r.__e!=n&amp;amp;&amp;amp;Ve(r)}}function Ve(e){if((e=e.__)!=null&amp;amp;&amp;amp;e.__c!=null)return e.__e=e.__c.base=null,e.__k.some(function(t){if(t!=null&amp;amp;&amp;amp;t.__e!=null)return e.__e=e.__c.base=t.__e}),Ve(e)}function Re(e){(!e.__d&amp;amp;&amp;amp;(e.__d=!0)&amp;amp;&amp;amp;j.push(e)&amp;amp;&amp;amp;!le.__r++||$e!=S.debounceRendering)&amp;amp;&amp;amp;(($e=S.debounceRendering)||We)(le)}function le(){try{for(var e,t=1;j.length;)j.length&amp;gt;t&amp;amp;&amp;amp;j.sort(Be),e=j.shift(),t=j.length,Zt(e)}finally{j.length=le.__r=0}}function Je(e,t,n,i,s,r,o,a,l,c,u){var p,f,_,g,m,w,v=i&amp;amp;&amp;amp;i.__k||ae,d=t.length;for(l=Kt(n,t,v,l,d),p=0;p&amp;lt;d;p++)(_=n.__k[p])!=null&amp;amp;&amp;amp;(f=_.__i!=-1&amp;amp;&amp;amp;v[_.__i]||oe,_.__i=p,w=Me(e,_,f,s,r,o,a,l,c,u),g=_.__e,_.ref&amp;amp;&amp;amp;f.ref!=_.ref&amp;amp;&amp;amp;(f.ref&amp;amp;&amp;amp;Ee(f.ref,null,_),u.push(_.ref,_.__c||g,_)),m==null&amp;amp;&amp;amp;g!=null&amp;amp;&amp;amp;(m=g),4&amp;amp;_.__u?(l=Ze(_,l,e),f.__e&amp;amp;&amp;amp;(f.__e=null)):typeof _.type==&amp;quot;function&amp;quot;&amp;amp;&amp;amp;w!==void 0?l=w:g&amp;amp;&amp;amp;(l=g.nextSibling),_.__u&amp;amp;=-7);return n.__e=m,l}function Kt(e,t,n,i,s){var r,o,a,l,c,u=n.length,p=u,f=0;for(e.__k=new Array(s),r=0;r&amp;lt;s;r++)(o=t[r])!=null&amp;amp;&amp;amp;typeof o!=&amp;quot;boolean&amp;quot;&amp;amp;&amp;amp;typeof o!=&amp;quot;function&amp;quot;?(typeof o==&amp;quot;string&amp;quot;||typeof o==&amp;quot;number&amp;quot;||typeof o==&amp;quot;bigint&amp;quot;||o.constructor==String?o=e.__k[r]=se(null,o,null,null,null):fe(o)?o=e.__k[r]=se(V,{children:o},null,null,null):o.constructor===void 0&amp;amp;&amp;amp;o.__b&amp;gt;0?o=e.__k[r]=se(o.type,o.props,o.key,o.ref?o.ref:null,o.__v):e.__k[r]=o,l=r+f,o.__=e,o.__b=e.__b+1,a=null,(c=o.__i=qt(o,n,l,p))!=-1&amp;amp;&amp;amp;(p--,(a=n[c])&amp;amp;&amp;amp;(a.__u|=2)),a==null||a.__v==null?(c==-1&amp;amp;&amp;amp;(s&amp;gt;u?f--:s&amp;lt;u&amp;amp;&amp;amp;f++),typeof o.type!=&amp;quot;function&amp;quot;&amp;amp;&amp;amp;(o.__u|=4)):c!=l&amp;amp;&amp;amp;(c==l-1?f--:c==l+1?f++:(c&amp;gt;l?f--:f++,o.__u|=4))):e.__k[r]=null;if(p)for(r=0;r&amp;lt;u;r++)(a=n[r])!=null&amp;amp;&amp;amp;(2&amp;amp;a.__u)==0&amp;amp;&amp;amp;(a.__e==i&amp;amp;&amp;amp;(i=U(a)),Xe(a,a));return i}function Ze(e,t,n){var i,s;if(typeof e.type==&amp;quot;function&amp;quot;){for(i=e.__k,s=0;i&amp;amp;&amp;amp;s&amp;lt;i.length;s++)i[s]&amp;amp;&amp;amp;(i[s].__=e,t=Ze(i[s],t,n));return t}e.__e!=t&amp;amp;&amp;amp;(t&amp;amp;&amp;amp;e.type&amp;amp;&amp;amp;!t.parentNode&amp;amp;&amp;amp;(t=U(e)),t=n.insertBefore(e.__e,t||null));do t=t&amp;amp;&amp;amp;t.nextSibling;while(t!=null&amp;amp;&amp;amp;t.nodeType==8);return t}function qt(e,t,n,i){var s,r,o,a=e.key,l=e.type,c=t[n],u=c!=null&amp;amp;&amp;amp;(2&amp;amp;c.__u)==0;if(c===null&amp;amp;&amp;amp;a==null||u&amp;amp;&amp;amp;a==c.key&amp;amp;&amp;amp;l==c.type)return n;if(i&amp;gt;(u?1:0)){for(s=n-1,r=n+1;s&amp;gt;=0||r&amp;lt;t.length;)if((c=t[o=s&amp;gt;=0?s--:r++])!=null&amp;amp;&amp;amp;(2&amp;amp;c.__u)==0&amp;amp;&amp;amp;a==c.key&amp;amp;&amp;amp;l==c.type)return o}return-1}function je(e,t,n){t[0]==&amp;quot;-&amp;quot;?e.setProperty(t,n??&amp;quot;&amp;quot;):e[t]=n==null?&amp;quot;&amp;quot;:typeof n!=&amp;quot;number&amp;quot;||Vt.test(t)?n:n+&amp;quot;px&amp;quot;}function re(e,t,n,i,s){var r,o;e:if(t==&amp;quot;style&amp;quot;)if(typeof n==&amp;quot;string&amp;quot;)e.style.cssText=n;else{if(typeof i==&amp;quot;string&amp;quot;&amp;amp;&amp;amp;(e.style.cssText=i=&amp;quot;&amp;quot;),i)for(t in i)n&amp;amp;&amp;amp;t in n||je(e.style,t,&amp;quot;&amp;quot;);if(n)for(t in n)i&amp;amp;&amp;amp;n[t]==i[t]||je(e.style,t,n[t])}else if(t[0]==&amp;quot;o&amp;quot;&amp;amp;&amp;amp;t[1]==&amp;quot;n&amp;quot;)r=t!=(t=t.replace(Ge,&amp;quot;$1&amp;quot;)),o=t.toLowerCase(),t=o in e||t==&amp;quot;onFocusOut&amp;quot;||t==&amp;quot;onFocusIn&amp;quot;?o.slice(2):t.slice(2),e.l||(e.l={}),e.l[t+r]=n,n?i?n[Y]=i[Y]:(n[Y]=De,e.addEventListener(t,r?ke:ye,r)):e.removeEventListener(t,r?ke:ye,r);else{if(s==&amp;quot;http://www.w3.org/2000/svg&amp;quot;)t=t.replace(/xlink(H|:h)/,&amp;quot;h&amp;quot;).replace(/sName$/,&amp;quot;s&amp;quot;);else if(t!=&amp;quot;width&amp;quot;&amp;amp;&amp;amp;t!=&amp;quot;height&amp;quot;&amp;amp;&amp;amp;t!=&amp;quot;href&amp;quot;&amp;amp;&amp;amp;t!=&amp;quot;list&amp;quot;&amp;amp;&amp;amp;t!=&amp;quot;form&amp;quot;&amp;amp;&amp;amp;t!=&amp;quot;tabIndex&amp;quot;&amp;amp;&amp;amp;t!=&amp;quot;download&amp;quot;&amp;amp;&amp;amp;t!=&amp;quot;rowSpan&amp;quot;&amp;amp;&amp;amp;t!=&amp;quot;colSpan&amp;quot;&amp;amp;&amp;amp;t!=&amp;quot;role&amp;quot;&amp;amp;&amp;amp;t!=&amp;quot;popover&amp;quot;&amp;amp;&amp;amp;t in e)try{e[t]=n??&amp;quot;&amp;quot;;break e}catch{}typeof n==&amp;quot;function&amp;quot;||(n==null||n===!1&amp;amp;&amp;amp;t[4]!=&amp;quot;-&amp;quot;?e.removeAttribute(t):e.setAttribute(t,t==&amp;quot;popover&amp;quot;&amp;amp;&amp;amp;n==1?&amp;quot;&amp;quot;:n))}}function Oe(e){return function(t){if(this.l){var n=this.l[t.type+e];if(t[ie]==null)t[ie]=De++;else if(t[ie]&amp;lt;n[Y])return;return n(S.event?S.event(t):t)}}}function Me(e,t,n,i,s,r,o,a,l,c){var u,p,f,_,g,m,w,v,d,y,D,T,P,A,C,I,N=t.type;if(t.constructor!==void 0)return null;128&amp;amp;n.__u&amp;amp;&amp;amp;(l=!!(32&amp;amp;n.__u),r=[a=t.__e=n.__e]),(u=S.__b)&amp;amp;&amp;amp;u(t);e:if(typeof N==&amp;quot;function&amp;quot;){p=o.length;try{if(d=t.props,y=N.prototype&amp;amp;&amp;amp;N.prototype.render,D=(u=N.contextType)&amp;amp;&amp;amp;i[u.__c],T=u?D?D.props.value:u.__:i,n.__c?v=(f=t.__c=n.__c).__=f.__E:(y?t.__c=f=new N(d,T):(t.__c=f=new z(d,T),f.constructor=N,f.render=Xt),D&amp;amp;&amp;amp;D.sub(f),f.state||(f.state={}),f.__n=i,_=f.__d=!0,f.__h=[],f._sb=[]),y&amp;amp;&amp;amp;f.__s==null&amp;amp;&amp;amp;(f.__s=f.state),y&amp;amp;&amp;amp;N.getDerivedStateFromProps!=null&amp;amp;&amp;amp;(f.__s==f.state&amp;amp;&amp;amp;(f.__s=H({},f.__s)),H(f.__s,N.getDerivedStateFromProps(d,f.__s))),g=f.props,m=f.state,f.__v=t,_)y&amp;amp;&amp;amp;N.getDerivedStateFromProps==null&amp;amp;&amp;amp;f.componentWillMount!=null&amp;amp;&amp;amp;f.componentWillMount(),y&amp;amp;&amp;amp;f.componentDidMount!=null&amp;amp;&amp;amp;f.__h.push(f.componentDidMount);else{if(y&amp;amp;&amp;amp;N.getDerivedStateFromProps==null&amp;amp;&amp;amp;d!==g&amp;amp;&amp;amp;f.componentWillReceiveProps!=null&amp;amp;&amp;amp;f.componentWillReceiveProps(d,T),t.__v==n.__v||!f.__e&amp;amp;&amp;amp;f.shouldComponentUpdate!=null&amp;amp;&amp;amp;f.shouldComponentUpdate(d,f.__s,T)===!1){t.__v!=n.__v&amp;amp;&amp;amp;(f.props=d,f.state=f.__s,f.__d=!1),t.__e=n.__e,t.__k=n.__k,t.__k.some(function(G){G&amp;amp;&amp;amp;(G.__=t)}),ae.push.apply(f.__h,f._sb),f._sb=[],f.__h.length&amp;amp;&amp;amp;o.push(f),a=U(n);break e}f.componentWillUpdate!=null&amp;amp;&amp;amp;f.componentWillUpdate(d,f.__s,T),y&amp;amp;&amp;amp;f.componentDidUpdate!=null&amp;amp;&amp;amp;f.__h.push(function(){f.componentDidUpdate(g,m,w)})}if(f.context=T,f.props=d,f.__P=e,f.__e=!1,P=S.__r,A=0,y)f.state=f.__s,f.__d=!1,P&amp;amp;&amp;amp;P(t),u=f.render(f.props,f.state,f.context),ae.push.apply(f.__h,f._sb),f._sb=[];else do f.__d=!1,P&amp;amp;&amp;amp;P(t),u=f.render(f.props,f.state,f.context),f.state=f.__s;while(f.__d&amp;amp;&amp;amp;++A&amp;lt;25);f.state=f.__s,f.getChildContext!=null&amp;amp;&amp;amp;(i=H(H({},i),f.getChildContext())),y&amp;amp;&amp;amp;!_&amp;amp;&amp;amp;f.getSnapshotBeforeUpdate!=null&amp;amp;&amp;amp;(w=f.getSnapshotBeforeUpdate(g,m)),C=u!=null&amp;amp;&amp;amp;u.type===V&amp;amp;&amp;amp;u.key==null?Qe(u.props.children):u,a=Je(e,fe(C)?C:[C],t,n,i,s,r,o,a,l,c),f.base=t.__e,t.__u&amp;amp;=-161,f.__h.length&amp;amp;&amp;amp;o.push(f),v&amp;amp;&amp;amp;(f.__E=f.__=null)}catch(G){if(o.length=p,t.__v=null,l||r!=null){if(G.then){for(t.__u|=l?160:128;a&amp;amp;&amp;amp;a.nodeType==8&amp;amp;&amp;amp;a.nextSibling;)a=a.nextSibling;r!=null&amp;amp;&amp;amp;(r[r.indexOf(a)]=null),t.__e=a}else if(r!=null)for(I=r.length;I--;)Se(r[I])}else t.__e=n.__e;t.__k==null&amp;amp;&amp;amp;(t.__k=n.__k||[]),G.then||Ke(t),S.__e(G,t,n)}}else r==null&amp;amp;&amp;amp;t.__v==n.__v?(t.__k=n.__k,t.__e=n.__e):a=t.__e=Qt(n.__e,t,n,i,s,r,o,l,c);return(u=S.diffed)&amp;amp;&amp;amp;u(t),128&amp;amp;t.__u?void 0:a}function Ke(e){e&amp;amp;&amp;amp;(e.__c&amp;amp;&amp;amp;(e.__c.__e=!0),e.__k&amp;amp;&amp;amp;e.__k.some(Ke))}function qe(e,t,n){for(var i=0;i&amp;lt;n.length;i++)Ee(n[i],n[++i],n[++i]);S.__c&amp;amp;&amp;amp;S.__c(t,e),e.some(function(s){try{e=s.__h,s.__h=[],e.some(function(r){r.call(s)})}catch(r){S.__e(r,s.__v)}})}function Qe(e){return typeof e!=&amp;quot;object&amp;quot;||e==null||e.__b&amp;gt;0?e:fe(e)?e.map(Qe):e.constructor!==void 0?null:H({},e)}function Qt(e,t,n,i,s,r,o,a,l){var c,u,p,f,_,g,m,w=n.props||oe,v=t.props,d=t.type;if(d==&amp;quot;svg&amp;quot;?s=&amp;quot;http://www.w3.org/2000/svg&amp;quot;:d==&amp;quot;math&amp;quot;?s=&amp;quot;http://www.w3.org/1998/Math/MathML&amp;quot;:s||(s=&amp;quot;http://www.w3.org/1999/xhtml&amp;quot;),r!=null){for(c=0;c&amp;lt;r.length;c++)if((_=r[c])&amp;amp;&amp;amp;&amp;quot;setAttribute&amp;quot;in _==!!d&amp;amp;&amp;amp;(d?_.localName==d:_.nodeType==3)){e=_,r[c]=null;break}}if(e==null){if(d==null)return document.createTextNode(v);e=document.createElementNS(s,d,v.is&amp;amp;&amp;amp;v),a&amp;amp;&amp;amp;(S.__m&amp;amp;&amp;amp;S.__m(t,r),a=!1),r=null}if(d==null)w===v||a&amp;amp;&amp;amp;e.data==v||(e.data=v);else{if(r=d==&amp;quot;textarea&amp;quot;&amp;amp;&amp;amp;v.defaultValue!=null?null:r&amp;amp;&amp;amp;ce.call(e.childNodes),!a&amp;amp;&amp;amp;r!=null)for(w={},c=0;c&amp;lt;e.attributes.length;c++)w[(_=e.attributes[c]).name]=_.value;for(c in w)_=w[c],c==&amp;quot;dangerouslySetInnerHTML&amp;quot;?p=_:c==&amp;quot;children&amp;quot;||c in v||c==&amp;quot;value&amp;quot;&amp;amp;&amp;amp;&amp;quot;defaultValue&amp;quot;in v||c==&amp;quot;checked&amp;quot;&amp;amp;&amp;amp;&amp;quot;defaultChecked&amp;quot;in v||re(e,c,null,_,s);for(c in v)_=v[c],c==&amp;quot;children&amp;quot;?f=_:c==&amp;quot;dangerouslySetInnerHTML&amp;quot;?u=_:c==&amp;quot;value&amp;quot;?g=_:c==&amp;quot;checked&amp;quot;?m=_:a&amp;amp;&amp;amp;typeof _!=&amp;quot;function&amp;quot;||w[c]===_||re(e,c,_,w[c],s);if(u)a||p&amp;amp;&amp;amp;(u.__html==p.__html||u.__html==e.innerHTML)||(e.innerHTML=u.__html),t.__k=[];else if(p&amp;amp;&amp;amp;(e.innerHTML=&amp;quot;&amp;quot;),Je(t.type==&amp;quot;template&amp;quot;?e.content:e,fe(f)?f:[f],t,n,i,d==&amp;quot;foreignObject&amp;quot;?&amp;quot;http://www.w3.org/1999/xhtml&amp;quot;:s,r,o,r?r[0]:n.__k&amp;amp;&amp;amp;U(n,0),a,l),r!=null)for(c=r.length;c--;)Se(r[c]);a&amp;amp;&amp;amp;d!=&amp;quot;textarea&amp;quot;||(c=&amp;quot;value&amp;quot;,d==&amp;quot;progress&amp;quot;&amp;amp;&amp;amp;g==null?e.removeAttribute(&amp;quot;value&amp;quot;):g!=null&amp;amp;&amp;amp;(g!==e[c]||d==&amp;quot;progress&amp;quot;&amp;amp;&amp;amp;!g||d==&amp;quot;option&amp;quot;&amp;amp;&amp;amp;g!=w[c])&amp;amp;&amp;amp;re(e,c,g,w[c],s),c=&amp;quot;checked&amp;quot;,m!=null&amp;amp;&amp;amp;m!=e[c]&amp;amp;&amp;amp;re(e,c,m,w[c],s))}return e}function Ee(e,t,n){try{if(typeof e==&amp;quot;function&amp;quot;){var i=typeof e.__u==&amp;quot;function&amp;quot;;i&amp;amp;&amp;amp;e.__u(),i&amp;amp;&amp;amp;t==null||(e.__u=e(t))}else e.current=t}catch(s){S.__e(s,n)}}function Xe(e,t,n){var i,s;if(S.unmount&amp;amp;&amp;amp;S.unmount(e),(i=e.ref)&amp;amp;&amp;amp;(i.current&amp;amp;&amp;amp;i.current!=e.__e||Ee(i,null,t)),(i=e.__c)!=null){if(i.componentWillUnmount)try{i.componentWillUnmount()}catch(r){S.__e(r,t)}i.base=i.__P=i.__n=null}if(i=e.__k)for(s=0;s&amp;lt;i.length;s++)i[s]&amp;amp;&amp;amp;Xe(i[s],t,n||typeof e.type!=&amp;quot;function&amp;quot;);n||Se(e.__e),e.__c=e.__=e.__e=void 0}function Xt(e,t,n){return this.constructor(e,n)}function Ye(e,t,n){var i,s,r,o;t==document&amp;amp;&amp;amp;(t=document.documentElement),S.__&amp;amp;&amp;amp;S.__(e,t),s=(i=typeof n==&amp;quot;function&amp;quot;)?null:n&amp;amp;&amp;amp;n.__k||t.__k,r=[],o=[],Me(t,e=(!i&amp;amp;&amp;amp;n||t).__k=Jt(V,null,[e]),s||oe,oe,t.namespaceURI,!i&amp;amp;&amp;amp;n?[n]:s?null:t.firstChild?ce.call(t.childNodes):null,r,!i&amp;amp;&amp;amp;n?n:s?s.__e:t.firstChild,i,o),qe(r,e,o),e.props.children=null}ce=ae.slice,S={__e:function(e,t,n,i){for(var s,r,o;t=t.__;)if((s=t.__c)&amp;amp;&amp;amp;!s.__)try{if((r=s.constructor)&amp;amp;&amp;amp;r.getDerivedStateFromError!=null&amp;amp;&amp;amp;(s.setState(r.getDerivedStateFromError(e)),o=s.__d),s.componentDidCatch!=null&amp;amp;&amp;amp;(s.componentDidCatch(e,i||{}),o=s.__d),o)return s.__E=s}catch(a){e=a}throw e}},Ue=0,Gt=function(e){return e!=null&amp;amp;&amp;amp;e.constructor===void 0},z.prototype.setState=function(e,t){var n;n=this.__s!=null&amp;amp;&amp;amp;this.__s!=this.state?this.__s:this.__s=H({},this.state),typeof e==&amp;quot;function&amp;quot;&amp;amp;&amp;amp;(e=e(H({},n),this.props)),e&amp;amp;&amp;amp;H(n,e),e!=null&amp;amp;&amp;amp;this.__v&amp;amp;&amp;amp;(t&amp;amp;&amp;amp;this._sb.push(t),Re(this))},z.prototype.forceUpdate=function(e){this.__v&amp;amp;&amp;amp;(this.__e=!0,e&amp;amp;&amp;amp;this.__h.push(e),Re(this))},z.prototype.render=V,j=[],We=typeof Promise==&amp;quot;function&amp;quot;?Promise.prototype.then.bind(Promise.resolve()):setTimeout,Be=function(e,t){return e.__v.__b-t.__v.__b},le.__r=0,we=Math.random().toString(8),ie=&amp;quot;__d&amp;quot;+we,Y=&amp;quot;__a&amp;quot;+we,Ge=/(PointerCapture)$|Capture$/i,De=0,ye=Oe(!1),ke=Oe(!0),zt=0;var Yt=0;function k(e,t,n,i,s,r){t||(t={});var o,a,l=t;if(&amp;quot;ref&amp;quot;in l)for(a in l={},t)a==&amp;quot;ref&amp;quot;?o=t[a]:l[a]=t[a];var c={type:e,props:l,key:n,ref:o,__k:null,__:null,__b:0,__e:null,__c:null,constructor:void 0,__v:--Yt,__i:-1,__u:0,__source:s,__self:r};if(typeof e==&amp;quot;function&amp;quot;&amp;amp;&amp;amp;(o=e.defaultProps))for(a in o)l[a]===void 0&amp;amp;&amp;amp;(l[a]=o[a]);return S.vnode&amp;amp;&amp;amp;S.vnode(c),c}var xe;function xt(e,t,n=0,i={}){xe={App:e,selector:t,importance:n,props:i},tt()===!1&amp;amp;&amp;amp;window.addEventListener(&amp;quot;load&amp;quot;,et)}function et(){window.removeEventListener(&amp;quot;load&amp;quot;,et),tt()}function tt(){let{App:e,selector:t,importance:n,props:i}=xe,s=document.querySelector(t);if(!s)return!1;let r=s.dataset.importance;if(r&amp;amp;&amp;amp;(Number(r)||0)&amp;gt;=n){console.warn(&amp;quot;Refused to mount, not important enough!&amp;quot;);return}return s.dataset.importance=n,s.innerHTML=&amp;quot;&amp;quot;,Ye(k(e,{...i}),s),!0}var nt=xt;var en={data:&amp;quot;&amp;quot;},tn=e=&amp;gt;{if(typeof window==&amp;quot;object&amp;quot;){let t=(e?e.querySelector(&amp;quot;#_goober&amp;quot;):window._goober)||Object.assign(document.createElement(&amp;quot;style&amp;quot;),{innerHTML:&amp;quot; &amp;quot;,id:&amp;quot;_goober&amp;quot;});return t.nonce=window.__nonce__,t.parentNode||(e||document.head).appendChild(t),t.firstChild}return e||en};var nn=/(?:([\u0080-\uFFFF\w-%@]+) *:? *([^{;]+?);|([^;}{]*?) *{)|(}\s*)/g,rn=/\/\*[^]*?\*\/|  +/g,rt=/\n+/g,W=(e,t)=&amp;gt;{let n=&amp;quot;&amp;quot;,i=&amp;quot;&amp;quot;,s=&amp;quot;&amp;quot;;for(let r in e){let o=e[r];r[0]==&amp;quot;@&amp;quot;?r[1]==&amp;quot;i&amp;quot;?n=r+&amp;quot; &amp;quot;+o+&amp;quot;;&amp;quot;:i+=r[1]==&amp;quot;f&amp;quot;?W(o,r):r+&amp;quot;{&amp;quot;+W(o,r[1]==&amp;quot;k&amp;quot;?&amp;quot;&amp;quot;:t)+&amp;quot;}&amp;quot;:typeof o==&amp;quot;object&amp;quot;?i+=W(o,t?t.replace(/([^,])+/g,a=&amp;gt;r.replace(/([^,]*:\S+\([^)]*\))|([^,])+/g,l=&amp;gt;/&amp;amp;/.test(l)?l.replace(/&amp;amp;/g,a):a?a+&amp;quot; &amp;quot;+l:l)):r):o!=null&amp;amp;&amp;amp;(r=r[1]==&amp;quot;-&amp;quot;?r:r.replace(/[A-Z]/g,&amp;quot;-$&amp;amp;&amp;quot;).toLowerCase(),s+=W.p?W.p(r,o):r+&amp;quot;:&amp;quot;+o+&amp;quot;;&amp;quot;)}return n+(t&amp;amp;&amp;amp;s?t+&amp;quot;{&amp;quot;+s+&amp;quot;}&amp;quot;:s)+i},O={},it=e=&amp;gt;{if(typeof e==&amp;quot;object&amp;quot;){let t=&amp;quot;&amp;quot;;for(let n in e)t+=n+it(e[n]);return t}return e},sn=(e,t,n,i,s)=&amp;gt;{let r=it(e),o=O[r]||(O[r]=(l=&amp;gt;{let c=0,u=11;for(;c&amp;lt;l.length;)u=101*u+l.charCodeAt(c++)&amp;gt;&amp;gt;&amp;gt;0;return&amp;quot;go&amp;quot;+u})(r));if(!O[o]){let l=r!==e?e:(c=&amp;gt;{let u,p,f=[{}];for(;u=nn.exec(c.replace(rn,&amp;quot;&amp;quot;));)u[4]?f.shift():u[3]?(p=u[3].replace(rt,&amp;quot; &amp;quot;).trim(),f.unshift(f[0][p]=f[0][p]||{})):f[0][u[1]]=u[2].replace(rt,&amp;quot; &amp;quot;).trim();return f[0]})(e);O[o]=W(s?{[&amp;quot;@keyframes &amp;quot;+o]:l}:l,n?&amp;quot;&amp;quot;:&amp;quot;.&amp;quot;+o)}let a=n&amp;amp;&amp;amp;O.g;return n&amp;amp;&amp;amp;(O.g=O[o]),((l,c,u,p)=&amp;gt;{p?c.data=c.data.replace(p,l):c.data.indexOf(l)===-1&amp;amp;&amp;amp;(c.data=u?l+c.data:c.data+l)})(O[o],t,i,a),o},on=(e,t,n)=&amp;gt;e.reduce((i,s,r)=&amp;gt;{let o=t[r];if(o&amp;amp;&amp;amp;o.call){let a=o(n),l=a&amp;amp;&amp;amp;a.props&amp;amp;&amp;amp;a.props.className||/^go/.test(a)&amp;amp;&amp;amp;a;o=l?&amp;quot;.&amp;quot;+l:a&amp;amp;&amp;amp;typeof a==&amp;quot;object&amp;quot;?a.props?&amp;quot;&amp;quot;:W(a,&amp;quot;&amp;quot;):a===!1?&amp;quot;&amp;quot;:a}return i+s+(o??&amp;quot;&amp;quot;)},&amp;quot;&amp;quot;);function $(e){let t=this||{},n=e.call?e(t.p):e;return sn(n.unshift?n.raw?on(n,[].slice.call(arguments,1),t.p):n.reduce((i,s)=&amp;gt;Object.assign(i,s&amp;amp;&amp;amp;s.call?s(t.p):s),{}):n,tn(t.target),t.g,t.o,t.k)}var Dr=$.bind({g:1}),Sr=$.bind({k:1});function an(e,...t){let n=[],{length:i}=e;for(let r=0;r&amp;lt;i;r++)n.push(e[r],t[r]);n.pop();let s=n.join(&amp;quot;&amp;quot;);return s=s.replaceAll(/\/\*[\s\S]*?\*\//g,&amp;quot;&amp;quot;),s=s.replaceAll(/\s\/\/.*/g,&amp;quot;&amp;quot;),s}var ue=an;var J,st,ln={info:&amp;quot;\u2139\uFE0F&amp;quot;,warning:&amp;quot;\u26A0\uFE0F&amp;quot;,error:&amp;quot;\u26D4&amp;quot;},F=&amp;quot;tool-log&amp;quot;,cn=ue`&lt;br /&gt;
    .${F} {&lt;br /&gt;
        overflow-y: scroll;&lt;br /&gt;
        height: 200px;&lt;br /&gt;
        flex-shrink: 0;&lt;br /&gt;
    }&lt;br /&gt;
&lt;br /&gt;
    .${F} table {&lt;br /&gt;
        width: 100%;&lt;br /&gt;
        border-collapse: collapse;&lt;br /&gt;
        margin: 0;&lt;br /&gt;
    }&lt;br /&gt;
&lt;br /&gt;
    .${F} th {&lt;br /&gt;
        text-align: left;&lt;br /&gt;
    }&lt;br /&gt;
&lt;br /&gt;
    .${F} th,&lt;br /&gt;
    .${F} td {&lt;br /&gt;
        border: solid 1px rgba(255, 255, 255, 0.1);&lt;br /&gt;
        border-left: none;&lt;br /&gt;
        border-right: none;&lt;br /&gt;
        vertical-align: top;&lt;br /&gt;
        padding: 4px;&lt;br /&gt;
    }&lt;br /&gt;
&lt;br /&gt;
    .${F} th {&lt;br /&gt;
        border-top: none;&lt;br /&gt;
    }&lt;br /&gt;
&lt;br /&gt;
    .${F} table {&lt;br /&gt;
        border: solid 1px rgba(255, 255, 255, 0.1);&lt;br /&gt;
    }&lt;br /&gt;
&lt;br /&gt;
    .${F} th {&lt;br /&gt;
        background: rgba(255, 255, 255, 0.1);&lt;br /&gt;
    }&lt;br /&gt;
&lt;br /&gt;
    .${F} td:nth-child(1) {&lt;br /&gt;
        width: 90px;&lt;br /&gt;
    }&lt;br /&gt;
&lt;br /&gt;
    .${F} td:nth-child(2),&lt;br /&gt;
    .${F} th:nth-child(2) {&lt;br /&gt;
        width: 20px;&lt;br /&gt;
        text-align: center;&lt;br /&gt;
    }&lt;br /&gt;
&lt;br /&gt;
    .${F} td &amp;gt; div &amp;gt; div {&lt;br /&gt;
        cursor: pointer;&lt;br /&gt;
        color: yellow;&lt;br /&gt;
    }&lt;br /&gt;
&lt;br /&gt;
    .${F} textarea {&lt;br /&gt;
        width: calc(100% - 8px);&lt;br /&gt;
        height: 200px;&lt;br /&gt;
    }&lt;br /&gt;
`;function fn(e,...t){let n=e.endsWith(&amp;quot;!&amp;quot;)?e.startsWith(&amp;quot;!&amp;quot;)?&amp;quot;error&amp;quot;:&amp;quot;warning&amp;quot;:&amp;quot;info&amp;quot;;un(n,e,t)}function ot(e){J=e,J.classList.add(F),J.innerHTML=`&lt;br /&gt;
        &amp;lt;style&amp;gt;${cn}&amp;lt;/style&amp;gt;&lt;br /&gt;
        &amp;lt;table class=&#039;wikitable&#039;&amp;gt;&lt;br /&gt;
            &amp;lt;tr&amp;gt;&lt;br /&gt;
                &amp;lt;th&amp;gt;Timestamp&amp;lt;/th&amp;gt;&lt;br /&gt;
                &amp;lt;th&amp;gt;\u{1F197}&amp;lt;/th&amp;gt;&lt;br /&gt;
                &amp;lt;th&amp;gt;Message&amp;lt;/th&amp;gt;&lt;br /&gt;
            &amp;lt;/tr&amp;gt;&lt;br /&gt;
        &amp;lt;/table&amp;gt;`,st=J.querySelector(&amp;quot;table&amp;quot;)}function un(e,t,n){let s=new Date().toLocaleTimeString(&amp;quot;en-GB&amp;quot;,{hour12:!1,hour:&amp;quot;2-digit&amp;quot;,minute:&amp;quot;2-digit&amp;quot;,second:&amp;quot;2-digit&amp;quot;,fractionalSecondDigits:3}),r=document.createElement(&amp;quot;tr&amp;quot;);Pe(r,s),Pe(r,ln[e]),Pe(r,hn(t,n)),st.appendChild(r),J.scrollTo({top:J.scrollHeight,behavior:&amp;quot;smooth&amp;quot;})}function Pe(e,t){let n=document.createElement(&amp;quot;td&amp;quot;);t=t instanceof Node?t:document.createTextNode(t),n.appendChild(t),e.appendChild(n)}function hn(e,t){if(e=e.replace(/^!/,&amp;quot;&amp;quot;),console.log(e,...t),!t.length)return document.createTextNode(e);let n=document.createElement(&amp;quot;div&amp;quot;),i=document.createElement(&amp;quot;div&amp;quot;);i.innerHTML=e,i.onclick=function(){let r=this.nextElementSibling.style.display!==&amp;quot;none&amp;quot;;this.nextElementSibling.style.display=r?&amp;quot;none&amp;quot;:&amp;quot;block&amp;quot;},n.appendChild(i);let s=document.createElement(&amp;quot;textarea&amp;quot;);return s.style.display=&amp;quot;none&amp;quot;,s.innerHTML=pn(t),n.appendChild(s),n}function pn(e){let t=[];for(let n of e)typeof n==&amp;quot;object&amp;quot;&amp;amp;&amp;amp;n?n instanceof Error?t.push(n.stack):t.push(JSON.stringify(n,null,4)):t.push(n);return t.join(`&lt;br /&gt;
`)}var L=fn;function _n(e,...t){if(typeof e==&amp;quot;function&amp;quot;)try{let n=e(...t);return n&amp;amp;&amp;amp;typeof n.then==&amp;quot;function&amp;quot;?n.then(i=&amp;gt;[i,null]).catch(i=&amp;gt;[null,i]):[n,null]}catch(n){return[null,n]}return e&amp;amp;&amp;amp;typeof e.then==&amp;quot;function&amp;quot;?e.then(n=&amp;gt;[n,null]).catch(n=&amp;gt;[null,n]):[e,null]}var x=_n;var at=window.location.host||&amp;quot;localhost&amp;quot;,Z=&amp;quot;store&amp;quot;;async function lt(e){if(!(await indexedDB.databases()).find(i=&amp;gt;i.name===at))return;let n=await ft();if(!n.objectStoreNames.contains(Z)){n.close();return}return new Promise((i,s)=&amp;gt;{let r=n.transaction(Z).objectStore(Z).get(e);r.onsuccess=()=&amp;gt;{i(r.result),n.close()},r.onerror=()=&amp;gt;{s(r.error),n.close()}})}async function ct(e,t){let n=await ft();return new Promise((i,s)=&amp;gt;{let r=n.transaction(Z,&amp;quot;readwrite&amp;quot;);r.objectStore(Z).put(t,e),r.oncomplete=()=&amp;gt;{i(),n.close()},r.onerror=()=&amp;gt;{s(r.error),n.close()}})}function ft(){return new Promise((e,t)=&amp;gt;{let n=indexedDB.open(at);n.onupgradeneeded=i=&amp;gt;i.target.result.createObjectStore(Z),n.onsuccess=()=&amp;gt;e(n.result),n.onerror=()=&amp;gt;t(n.error)})}var Ae=&amp;quot;gameDirHandle&amp;quot;,ee=&amp;quot;diff-list&amp;quot;,R=&amp;quot;diff-path&amp;quot;,he=&amp;quot;diff-label&amp;quot;,te=&amp;quot;diff-new&amp;quot;,K=&amp;quot;diff-identical&amp;quot;,q=&amp;quot;diff-changed&amp;quot;,B=&amp;quot;diff-content&amp;quot;,Q=&amp;quot;diff-collapsed&amp;quot;;var Te=new Proxy(()=&amp;gt;{},{get:()=&amp;gt;Te,apply:()=&amp;gt;Te}),ut=Te;function gn(e,...t){if(typeof e==&amp;quot;function&amp;quot;)try{let n=e(...t);return n&amp;amp;&amp;amp;typeof n.then==&amp;quot;function&amp;quot;?n.then(i=&amp;gt;[i,null]).catch(i=&amp;gt;[null,i]):[n,null]}catch(n){return[null,n]}return e&amp;amp;&amp;amp;typeof e.then==&amp;quot;function&amp;quot;?e.then(n=&amp;gt;[n,null]).catch(n=&amp;gt;[null,n]):[e,null]}var pe=gn;var ht=new Map;async function dn(e,t){let n=await vn(e,t);return ht.set(n,t),n.on(&amp;quot;message&amp;quot;,mn.bind(null,n)),{run:async()=&amp;gt;await bn(n,&amp;quot;run&amp;quot;)}}async function vn(e,t){let n=new ut.Worker(e);return n.on(&amp;quot;error&amp;quot;,()=&amp;gt;t.log(&amp;quot;!Worker error!&amp;quot;)),new Promise(i=&amp;gt;{let s=r=&amp;gt;{r?.type===&amp;quot;ready&amp;quot;&amp;amp;&amp;amp;(n.off(&amp;quot;message&amp;quot;,s),i(n))};n.on(&amp;quot;message&amp;quot;,s)})}async function mn(e,t){let n=ht.get(e),{type:i,payload:s}=t;if(typeof n[i]!=&amp;quot;function&amp;quot;)return;let[r,o]=await pe(n[i],...s);o||e.postMessage({type:i,payload:r})}async function bn(e,t,n){return new Promise(i=&amp;gt;{let s=r=&amp;gt;{r.type===t&amp;amp;&amp;amp;(e.off(&amp;quot;message&amp;quot;,s),i(r.payload))};e.on(&amp;quot;message&amp;quot;,s),e.postMessage({type:t,payload:n})})}var pt=dn;var _t=new Map;async function wn(e,t){let n=await yn(e,t);return _t.set(n,t),n.addEventListener(&amp;quot;message&amp;quot;,kn.bind(null,n)),{run:async()=&amp;gt;await Dn(n,&amp;quot;run&amp;quot;)}}async function yn(e,t){let n;return window.mw?n=await Sn(e,t):n=new Worker(`data:application/javascript,importScripts(&#039;${e}?${Math.random()}&#039;);`),n&amp;amp;&amp;amp;n.addEventListener(&amp;quot;error&amp;quot;,()=&amp;gt;t.log(&amp;quot;!Worker error!&amp;quot;)),new Promise(i=&amp;gt;{let s=r=&amp;gt;{(r.data&amp;amp;&amp;amp;typeof r.data==&amp;quot;object&amp;quot;?r.data:{}).type===&amp;quot;ready&amp;quot;&amp;amp;&amp;amp;(n.removeEventListener(&amp;quot;message&amp;quot;,s),i(n))};n.addEventListener(&amp;quot;message&amp;quot;,s)})}async function kn(e,t){let n=_t.get(e),{type:i,payload:s}=t.data;if(typeof n[i]!=&amp;quot;function&amp;quot;)return;let[r,o]=await pe(n[i],...s);o||e.postMessage({type:i,payload:r})}async function Dn(e,t,n){return new Promise(i=&amp;gt;{let s=r=&amp;gt;{let o=r.data&amp;amp;&amp;amp;typeof r.data==&amp;quot;object&amp;quot;?r.data:{};o.type===t&amp;amp;&amp;amp;(e.removeEventListener(&amp;quot;message&amp;quot;,s),i(o.payload))};e.addEventListener(&amp;quot;message&amp;quot;,s),e.postMessage({type:t,payload:n})})}async function Sn(e,t){let n=mw.util.getUrl(e,{action:&amp;quot;raw&amp;quot;,ctype:&amp;quot;text/javascript&amp;quot;,v:Date.now()}),i=await fetch(n,{cache:&amp;quot;no-cache&amp;quot;});if(!i.ok){t.log(&amp;quot;!Failed to load wiki worker!&amp;quot;,i.statusText);return}let s=await i.text(),r=new Blob([s],{type:&amp;quot;application/javascript&amp;quot;}),o=URL.createObjectURL(r),a=new Worker(o);return URL.revokeObjectURL(o),a}var gt=wn;async function Mn(e,t){if(typeof e==&amp;quot;string&amp;quot;){let n=e;return typeof process&amp;lt;&amp;quot;u&amp;quot;&amp;amp;&amp;amp;process.versions?.node!==null?await pt(n,t):await gt(n,t)}else return await En(e,t)}async function En(e,t){return{run:()=&amp;gt;e(t)}}var dt=Mn;var vt=console.log,Pn=!1,An=[];function Tn(...e){if(Pn){let t=[];for(let n of e)t.push(typeof n==&amp;quot;object&amp;quot;?JSON.stringify(n,null,4):n);An.push(t.join(`&lt;br /&gt;
`))}vt(...e)}function mt(e){vt=e}var Le=Tn;async function Ln(e,t){mt(e.log),Le(&amp;quot;Beginning to parse...&amp;quot;);let n=Date.now(),s=await(await dt(t,e)).run();return Le(`Finished parsing in ${Date.now()-n} ms.`),s}var bt=Ln;async function Cn(e,t,n,i){return wt(e,&amp;quot;&amp;quot;,t,n,i)}async function wt(e,t,n,i,s){t+=t?&amp;quot;/&amp;quot;:&amp;quot;&amp;quot;;let r={},o=await Fn(e);for(let[a,l]of o){let c=t+a;if(!(i&amp;amp;&amp;amp;c.match(i))){if(l.kind===&amp;quot;directory&amp;quot;){let u=await wt(l,c,n,i,s);if(u instanceof File)return u;Object.assign(r,u)}else if(c.match(n)){let u=await l.getFile();if(s)return u;r[c]=u}}}return r}async function Fn(e){let t=[];try{for await(let n of e.entries())t.push(n)}catch{}return t}var yt=Cn;var kt;async function In(...e){let[t,n,i]=e;return await yt(kt,t,n,i)}function Nn(...e){L(...e)}function Hn(e){kt=e}var $n={find:In,log:Nn,setDirHandle:Hn},Ce=$n;async function Rn(e){return await e?.queryPermission()===&amp;quot;granted&amp;quot;}var Fe=Rn;var jn=new RegExp(&amp;quot;[ :]&amp;quot;);function On(e){if(e.match(jn)){L(&amp;quot;Path contains an illegal character!&amp;quot;,e);return}if(e.match(&amp;quot;/.*?/&amp;quot;)){L(&amp;quot;Path contains too many slashes!&amp;quot;,e);return}let t=e;return t=t.replace(/^Main\//,&amp;quot;&amp;quot;),t=t.replace(&amp;quot;/&amp;quot;,&amp;quot;:&amp;quot;),t=t.replaceAll(&amp;quot;~&amp;quot;,&amp;quot;/&amp;quot;),t=t.replaceAll(&amp;quot;_&amp;quot;,&amp;quot; &amp;quot;),t=t.replaceAll(&amp;quot;#&amp;quot;,&amp;quot;:&amp;quot;),t=t.replace(/\.lua$/,&amp;quot;&amp;quot;),t=t.replace(/\.wiki$/,&amp;quot;&amp;quot;),t}var _e=On;var Un=new Set([&amp;quot;Main&amp;quot;,&amp;quot;Data&amp;quot;,&amp;quot;Media&amp;quot;,&amp;quot;Special&amp;quot;,&amp;quot;Talk&amp;quot;,&amp;quot;User&amp;quot;,&amp;quot;User talk&amp;quot;,&amp;quot;Project&amp;quot;,&amp;quot;Project talk&amp;quot;,&amp;quot;File&amp;quot;,&amp;quot;File talk&amp;quot;,&amp;quot;MediaWiki&amp;quot;,&amp;quot;MediaWiki talk&amp;quot;,&amp;quot;Template&amp;quot;,&amp;quot;Template talk&amp;quot;,&amp;quot;Help&amp;quot;,&amp;quot;Help talk&amp;quot;,&amp;quot;Category&amp;quot;,&amp;quot;Category talk&amp;quot;,&amp;quot;Module&amp;quot;,&amp;quot;Module talk&amp;quot;]),Wn=new Set([&amp;quot;css&amp;quot;]),Bn=new RegExp(&amp;quot;~&amp;quot;);function Gn(e){e.match(Bn)&amp;amp;&amp;amp;L(&amp;quot;Title contains an illegal character!&amp;quot;,e);let{namespace:t,titleWithoutNamespace:n}=zn(e),i=n;return i=i.replaceAll(&amp;quot;/&amp;quot;,&amp;quot;~&amp;quot;),i=i.replaceAll(&amp;quot; &amp;quot;,&amp;quot;_&amp;quot;),i=i.replaceAll(&amp;quot;:&amp;quot;,&amp;quot;#&amp;quot;),i=Vn(i),i=Jn(i,t),t.replace(&amp;quot; &amp;quot;,&amp;quot;_&amp;quot;)+&amp;quot;/&amp;quot;+i}function zn(e){let[,t,n]=e.match(/(.*?):(.*)/)||[null,&amp;quot;&amp;quot;,e];return Un.has(t)||(t=&amp;quot;&amp;quot;,n=e),t=t||&amp;quot;Main&amp;quot;,{namespace:t,titleWithoutNamespace:n}}function Vn(e){let t=(e.match(/\.([a-zA-Z]+)$/)||[null,&amp;quot;&amp;quot;])[1].toLowerCase();return t===&amp;quot;url&amp;quot;?e.replace(/\.url$/,&amp;quot;&amp;quot;):Wn.has(t)?e:e+&amp;quot;.wiki&amp;quot;}function Jn(e,t){return t!==&amp;quot;Module&amp;quot;||e.endsWith(&amp;quot;~doc.wiki&amp;quot;)||e.endsWith(&amp;quot;.css&amp;quot;)?e:e.replace(&amp;quot;.wiki&amp;quot;,&amp;quot;.lua&amp;quot;)}var Dt=Gn;var Ie;async function ne(e){if(!Ie){console.log(&amp;quot;Please call applySettings() prior to asking!&amp;quot;);return}let t={method:Zn(e)},n=new URL(Ie.API_URL),i=Kn(e);t.method===&amp;quot;GET&amp;quot;?n.search=i.toString():t.body=i;let[s,r]=await x(fetch(n,t));if(!s){L(&amp;quot;Failed to fetch!&amp;quot;,r);return}let[o,a]=await x(s.json());if(!o){L(&amp;quot;Invalid json!&amp;quot;,a);return}return o}function St(e){let{API_URL:t}=e;Ie={API_URL:t}}function Zn(e){return!e.method||e.method===&amp;quot;GET&amp;quot;?&amp;quot;GET&amp;quot;:&amp;quot;POST&amp;quot;}function Kn(e){let t={...e,format:&amp;quot;json&amp;quot;,formatversion:2},{method:n}=t;if(delete t.method,n===&amp;quot;FORM&amp;quot;){let i=new FormData;for(let s in t){let r=t[s];Array.isArray(r)?i.append(s,r[0],r[1]):i.append(s,r)}return i}return new URLSearchParams(t)}var Mt=50;async function qn(e){let t=Object.keys(e).map(s=&amp;gt;_e(s)),n=await Qn(t);if(!n)return;let i={};for(let s in n){let r=Dt(s);r&amp;amp;&amp;amp;(n[s]===void 0?L(&amp;quot;Invalid page content!&amp;quot;,s):i[r]=n[s])}return L(`Retrieved ${Object.keys(i).length} pages.`),i}async function Qn(e){let t={};for(let n=0;n&amp;lt;e.length;n+=Mt){let i=Math.min(n+Mt,e.length),s=e.slice(n,i);L(`Retrieving ${n+1}-${i} of ${e.length} pages (${s[0]})...`);let r=await ne({action:&amp;quot;query&amp;quot;,prop:&amp;quot;revisions&amp;quot;,rvprop:&amp;quot;content&amp;quot;,rvslots:&amp;quot;main&amp;quot;,titles:s.join(&amp;quot;|&amp;quot;),origin:&amp;quot;*&amp;quot;});if(!r)continue;let o=r.query?.pages||[];for(let a of o)a.missing||(t[a.title]=a.revisions?.[0]?.slots?.main?.content)}return t}var Et=qn;var Xn=ue`&lt;br /&gt;
    html, body {&lt;br /&gt;
        padding: 0;&lt;br /&gt;
        margin: 0;&lt;br /&gt;
        height: 100%;&lt;br /&gt;
        font-size: 13px;&lt;br /&gt;
        font-family: &amp;quot;JetBrains Mono&amp;quot;, monospace;&lt;br /&gt;
    }&lt;br /&gt;
&lt;br /&gt;
    .${ee} pre {&lt;br /&gt;
        font-family: &amp;quot;JetBrains Mono&amp;quot;, monospace;&lt;br /&gt;
        white-space: pre-wrap;&lt;br /&gt;
    }&lt;br /&gt;
&lt;br /&gt;
    .${R} {&lt;br /&gt;
        font-weight: bold;&lt;br /&gt;
        background: silver;&lt;br /&gt;
        padding: 8px;&lt;br /&gt;
        cursor: pointer;&lt;br /&gt;
    }&lt;br /&gt;
&lt;br /&gt;
    .${he} {&lt;br /&gt;
        float: right;&lt;br /&gt;
        border: solid 1px rgba(0, 0, 0, 0.5);&lt;br /&gt;
        border-radius: 4px;&lt;br /&gt;
        padding: 4px;&lt;br /&gt;
        margin-right: -5px;&lt;br /&gt;
        margin-top: -5px;&lt;br /&gt;
    }&lt;br /&gt;
&lt;br /&gt;
    .${R}.${te} {&lt;br /&gt;
        background: rgba(0, 0, 255, 0.2);&lt;br /&gt;
        border-top: solid 1px rgba(0, 0, 255, 0.4);&lt;br /&gt;
    }&lt;br /&gt;
&lt;br /&gt;
    .${R}.${K} {&lt;br /&gt;
        background: rgba(0, 255, 0, 0.2);&lt;br /&gt;
        border-top: solid 1px rgba(0, 255, 0, 0.4);&lt;br /&gt;
    }&lt;br /&gt;
&lt;br /&gt;
    .${R}.${q} {&lt;br /&gt;
        background: rgba(255, 100, 0, 0.2);&lt;br /&gt;
        border-top: solid 1px rgba(255, 100, 0, 0.4);&lt;br /&gt;
    }&lt;br /&gt;
&lt;br /&gt;
    .${B} {&lt;br /&gt;
        display: flex;&lt;br /&gt;
        flex-direction: row;&lt;br /&gt;
    }&lt;br /&gt;
&lt;br /&gt;
    .${B}.${Q} {&lt;br /&gt;
        display: none;&lt;br /&gt;
    }&lt;br /&gt;
&lt;br /&gt;
    .${B} pre {&lt;br /&gt;
        margin: 0;&lt;br /&gt;
        flex: 1;&lt;br /&gt;
        min-width: 0;&lt;br /&gt;
        padding: 8px;&lt;br /&gt;
    }&lt;br /&gt;
&lt;br /&gt;
    .${B} pre:nth-child(2) {&lt;br /&gt;
        border-left: solid 2px rgba(255, 100, 0, 0.2);&lt;br /&gt;
    }&lt;br /&gt;
&lt;br /&gt;
    del {&lt;br /&gt;
        background: #f5a7a7;&lt;br /&gt;
        text-decoration: none;&lt;br /&gt;
        outline: solid 1px #f5a7a7;&lt;br /&gt;
    }&lt;br /&gt;
&lt;br /&gt;
    ins {&lt;br /&gt;
        background: #BEE6BE;&lt;br /&gt;
        text-decoration: none;&lt;br /&gt;
        outline: solid 1px #BEE6BE;&lt;br /&gt;
    }&lt;br /&gt;
`,Pt=Xn;var ge=Bt(At(),1),Yn=new ge.default;function xn(e,t){let n=Tt(e),i=Tt(t),s=Yn.diff_main(n,i),r=[],o=[];for(let[u,p]of s)switch(u){case ge.default.DIFF_DELETE:r.push(&amp;quot;&amp;lt;del&amp;gt;&amp;quot;+p+&amp;quot;&amp;lt;/del&amp;gt;&amp;quot;),o.push(&amp;quot;&amp;lt;del&amp;gt;&amp;lt;/del&amp;gt;&amp;quot;);break;case ge.default.DIFF_INSERT:r.push(&amp;quot;&amp;lt;ins&amp;gt;&amp;lt;/ins&amp;gt;&amp;quot;),o.push(&amp;quot;&amp;lt;ins&amp;gt;&amp;quot;+p+&amp;quot;&amp;lt;/ins&amp;gt;&amp;quot;);break;default:r.push(p),o.push(p)}let a=r.join(&amp;quot;&amp;quot;).replaceAll(&amp;quot;&amp;lt;/del&amp;gt;&amp;lt;ins&amp;gt;&amp;lt;/ins&amp;gt;&amp;quot;,&amp;quot;&amp;lt;/del&amp;gt;&amp;quot;),l=o.join(&amp;quot;&amp;quot;).replaceAll(&amp;quot;&amp;lt;del&amp;gt;&amp;lt;/del&amp;gt;&amp;lt;ins&amp;gt;&amp;quot;,&amp;quot;&amp;lt;ins&amp;gt;&amp;quot;),c=l.split(&amp;quot;&amp;lt;&amp;quot;).length-1;return{text1:a,text2:l,differences:c/2}}function Tt(e){return e.split(&amp;quot;&amp;amp;&amp;quot;).join(&amp;quot;&amp;amp;amp;&amp;quot;).split(&amp;quot;&amp;lt;&amp;quot;).join(&amp;quot;&amp;amp;lt;&amp;quot;).split(&amp;quot;&amp;gt;&amp;quot;).join(&amp;quot;&amp;amp;gt;&amp;quot;)}var Lt=xn;var er={[te]:&amp;quot;new&amp;quot;,[K]:&amp;quot;identical&amp;quot;,[q]:&amp;quot;changed&amp;quot;};function tr(e,t,n){let i=[];for(let r in t){let o=t[r],a=e[r];if(a!==void 0){let{text1:c,text2:u}=Lt(a,o);a=c,o=u}else o=rr(o);let l=nr(r,a,o);i.push(...l)}n.innerHTML=i.join(&amp;quot;&amp;quot;),Array.from(n.querySelectorAll(&amp;quot;.&amp;quot;+R)).map(r=&amp;gt;r.addEventListener(&amp;quot;click&amp;quot;,ir)),sr(n)}function nr(e,t,n){let i=t===void 0?te:t===n?K:q,s=`&amp;lt;div class=&amp;quot;${he}&amp;quot;&amp;gt;${er[i]}&amp;lt;/div&amp;gt;`,r=i===K?Q:&amp;quot;&amp;quot;,o=[];return o.push(`&amp;lt;div class=&amp;quot;${R} ${i}&amp;quot;&amp;gt;${s}${e}&amp;lt;/div&amp;gt;`),o.push(`&amp;lt;div class=&amp;quot;${B} ${r}&amp;quot;&amp;gt;`),i===q&amp;amp;&amp;amp;o.push(`&amp;lt;pre&amp;gt;${t}&amp;lt;/pre&amp;gt;`),o.push(`&amp;lt;pre&amp;gt;${n}&amp;lt;/pre&amp;gt;`),o.push(&amp;quot;&amp;lt;/div&amp;gt;&amp;quot;),o}function rr(e){return e.split(&amp;quot;&amp;amp;&amp;quot;).join(&amp;quot;&amp;amp;amp;&amp;quot;).split(&amp;quot;&amp;lt;&amp;quot;).join(&amp;quot;&amp;amp;lt;&amp;quot;).split(&amp;quot;&amp;gt;&amp;quot;).join(&amp;quot;&amp;amp;gt;&amp;quot;)}function ir(e){e.currentTarget.nextElementSibling.classList.toggle(Q)}function sr(e){let t=e.querySelectorAll(&amp;quot;.&amp;quot;+R);for(let n of t)if(!n.nextElementSibling.classList.contains(Q)){n.scrollIntoView({behavior:&amp;quot;smooth&amp;quot;,block:&amp;quot;start&amp;quot;});break}}var Ct=tr;function or(e,t){let n=window.open(&amp;quot;&amp;quot;,&amp;quot;Preview&amp;quot;);if(!n)return;let i=n.document;i.open(),i.write(`&lt;br /&gt;
        &amp;lt;!DOCTYPE html&amp;gt;&lt;br /&gt;
        &amp;lt;html lang=&amp;quot;en&amp;quot;&amp;gt;&lt;br /&gt;
        &amp;lt;head&amp;gt;&lt;br /&gt;
            &amp;lt;title&amp;gt;Preview&amp;lt;/title&amp;gt;&lt;br /&gt;
            &amp;lt;style&amp;gt;${Pt}&amp;lt;/style&amp;gt;&lt;br /&gt;
        &amp;lt;/head&amp;gt;&lt;br /&gt;
        &amp;lt;body&amp;gt;&lt;br /&gt;
            &amp;lt;div class=&#039;${ee}&#039;&amp;gt;&amp;lt;/div&amp;gt;&lt;br /&gt;
        &amp;lt;/body&amp;gt;&lt;br /&gt;
        &amp;lt;/html&amp;gt;&lt;br /&gt;
    `),i.close(),Ct(e||{},t,i.querySelector(&amp;quot;.&amp;quot;+ee))}var Ft=or;async function ar(e,t){let n=lr(e,t);if(!n.length)return L(&amp;quot;All pages are already updated.&amp;quot;),!0;let i=await cr();if(!i)return L(&amp;quot;Cannot get csrf token!&amp;quot;),!1;let s=0;for(let{title:r,content:o}of n)await fr(r,o,i)&amp;amp;&amp;amp;s++;return L(`Successfully saved ${s} pages.`),!0}function lr(e,t){let n=[];t=t||{};for(let i in e){let s=e[i],r=t[i];if(s!==r){let o=_e(i);n.push({title:o,content:s})}}return n}async function cr(){return(await ne({action:&amp;quot;query&amp;quot;,meta:&amp;quot;tokens&amp;quot;}))?.query?.tokens?.csrftoken}async function fr(e,t,n){return L(`Saving content for &amp;quot;${e}&amp;quot;...`),(await ne({method:&amp;quot;POST&amp;quot;,action:&amp;quot;edit&amp;quot;,title:e,text:t,token:n}))?.edit?.result!==&amp;quot;Success&amp;quot;?(L(&amp;quot;Save failed!&amp;quot;,e,t),!1):!0}var It=ar;var ur=$`&lt;br /&gt;
    color: #fff;&lt;br /&gt;
`,de=$`&lt;br /&gt;
    padding: 16px;&lt;br /&gt;
    border-top: solid 1px #cbced1;&lt;br /&gt;
    &amp;amp;:first-child {&lt;br /&gt;
        border: none;&lt;br /&gt;
    }&lt;br /&gt;
`,ve=$`&lt;br /&gt;
    font-size: 150%;&lt;br /&gt;
    font-weight: bold;&lt;br /&gt;
    color: #c8b36c;&lt;br /&gt;
`,me=$`&lt;br /&gt;
    margin-top: 8px;&lt;br /&gt;
`,be=$`&lt;br /&gt;
    &amp;amp;:after {&lt;br /&gt;
        content: &#039; ✅&#039;;&lt;br /&gt;
    }&lt;br /&gt;
`,hr=$`&lt;br /&gt;
    &amp;amp;:after {&lt;br /&gt;
        content: &#039; ⚠️&#039;;&lt;br /&gt;
    }&lt;br /&gt;
`,pr=&amp;quot;MediaWiki:ParseCore.js&amp;quot;,Ne=class extends z{vars={logRef:ze(),dirHandle:null};state={busy:0,hasDirAccess:!1,parsedHub:null,mirrorHub:null,isPreviewed:!1,isSaved:!1};render(){let{logRef:t}=this.vars,{busy:n,hasDirAccess:i,isPreviewed:s,isSaved:r,mirrorHub:o}=this.state;return k(&amp;quot;div&amp;quot;,{class:ur,children:[k(&amp;quot;div&amp;quot;,{class:de,children:[k(&amp;quot;div&amp;quot;,{class:ve,children:&amp;quot;1. Select game data directory&amp;quot;}),k(&amp;quot;div&amp;quot;,{children:&amp;quot;Give read-access to the local install directory of the game so the parser can choose what files it needs.&amp;quot;}),k(&amp;quot;div&amp;quot;,{class:me,children:k(&amp;quot;button&amp;quot;,{disabled:!!n,class:i?be:hr,onClick:this.onPickDirectoryClick,children:&amp;quot;Pick directory&amp;quot;})})]}),k(&amp;quot;div&amp;quot;,{class:de,children:[k(&amp;quot;div&amp;quot;,{class:ve,children:&amp;quot;2. Retrieve wiki data pages&amp;quot;}),k(&amp;quot;div&amp;quot;,{children:[&amp;quot;Temporarily download all relevant data pages from this wiki so they can be used as a comparison base. &amp;quot;,k(&amp;quot;br&amp;quot;,{}),&amp;quot;This step is optional, but recommended, because it gives awareness in the following steps and reduces the number of updates needed.&amp;quot;]}),k(&amp;quot;div&amp;quot;,{class:me,children:k(&amp;quot;button&amp;quot;,{disabled:!!n||!i,class:o&amp;amp;&amp;amp;be,onClick:this.onRetrieveClick,children:[&amp;quot;Retrieve &amp;quot;,n===2&amp;amp;&amp;amp;k(&amp;quot;progress&amp;quot;,{})]})})]}),k(&amp;quot;div&amp;quot;,{class:de,children:[k(&amp;quot;div&amp;quot;,{class:ve,children:&amp;quot;3. Preview changes&amp;quot;}),k(&amp;quot;div&amp;quot;,{children:&amp;quot;Open a popup window listing each page that is about to be updated, potentially highlighting differences.&amp;quot;}),k(&amp;quot;div&amp;quot;,{class:me,children:k(&amp;quot;button&amp;quot;,{disabled:!!n||!i||!o,class:s&amp;amp;&amp;amp;be,onClick:this.onPreviewClick,children:[&amp;quot;Preview &amp;quot;,n===3&amp;amp;&amp;amp;k(&amp;quot;progress&amp;quot;,{})]})})]}),k(&amp;quot;div&amp;quot;,{class:de,children:[k(&amp;quot;div&amp;quot;,{class:ve,children:&amp;quot;4. Save changes&amp;quot;}),k(&amp;quot;div&amp;quot;,{children:&amp;quot;Write the changes to each page using the current account, just as if you had done them manually.&amp;quot;}),k(&amp;quot;div&amp;quot;,{class:me,children:k(&amp;quot;button&amp;quot;,{disabled:!!n||!i,class:r&amp;amp;&amp;amp;be,onClick:this.onSaveClick,children:[&amp;quot;SAVE &amp;quot;,n===4&amp;amp;&amp;amp;k(&amp;quot;progress&amp;quot;,{})]})})]}),&amp;quot;Log:&amp;quot;,k(&amp;quot;div&amp;quot;,{ref:t})]})}async componentDidMount(){let{logRef:t}=this.vars;ot(t.current),L(&amp;quot;Initialized.&amp;quot;);let n=this.vars.dirHandle=await lt(Ae),i=await Fe(n);this.setState({hasDirAccess:i}),St({API_URL:document.location.href.replace(/[^\/]*$/,&amp;quot;&amp;quot;)+&amp;quot;api.php&amp;quot;})}onPickDirectoryClick=async()=&amp;gt;{let{hasDirAccess:t}=this.state,{dirHandle:n}=this.vars,i=!1;if(n?t?i=!0:await n.requestPermission():i=!0,i){let[s]=await x(window.showDirectoryPicker,{mode:&amp;quot;read&amp;quot;});n=this.vars.dirHandle=s,await ct(Ae,n)}t=await Fe(n),t||this.setState({parsedHub:null,mirrorHub:null,isPreviewed:!1,isSaved:!1}),this.setState({hasDirAccess:t})};onRetrieveClick=async()=&amp;gt;{await this.ensureParsedHub(2);let t=await Et(this.state.parsedHub);this.setState({mirrorHub:t})};onPreviewClick=async()=&amp;gt;{await this.ensureParsedHub(3);let{mirrorHub:t,parsedHub:n}=this.state;Ft(t,n),this.setState({isPreviewed:!0})};onSaveClick=async()=&amp;gt;{await this.ensureParsedHub(4);let{mirrorHub:t,parsedHub:n}=this.state;this.setState({busy:4});let i=await It(n,t);this.setState({busy:0,isSaved:i})};ensureParsedHub=async t=&amp;gt;{this.state.parsedHub||(this.setState({busy:t}),Ce.setDirHandle(this.vars.dirHandle),this.setState({busy:0,parsedHub:await bt(Ce,pr)}))}},Nt=Ne;function _r(){nt(Nt,&amp;quot;.update-tool&amp;quot;,0)}_r();})();&lt;/div&gt;</summary>
		<author><name>76561198048502585</name></author>
	</entry>
	<entry>
		<id>https://wiki.hoodedhorse.com/Heroes_of_Might_and_Magic_Olden_Era/index.php?title=MediaWiki:UpdateTool.js&amp;diff=41540</id>
		<title>MediaWiki:UpdateTool.js</title>
		<link rel="alternate" type="text/html" href="https://wiki.hoodedhorse.com/Heroes_of_Might_and_Magic_Olden_Era/index.php?title=MediaWiki:UpdateTool.js&amp;diff=41540"/>
		<updated>2026-10-13T15:36:15Z</updated>

		<summary type="html">&lt;p&gt;76561198048502585: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;//Source:https://github.com/Aurelain/oe-wiki/tree/main/src/update&lt;br /&gt;
(()=&amp;gt;{var Ht=Object.create;var He=Object.defineProperty;var $t=Object.getOwnPropertyDescriptor;var Rt=Object.getOwnPropertyNames;var jt=Object.getPrototypeOf,Ot=Object.prototype.hasOwnProperty;var Ut=(e,t)=&amp;gt;()=&amp;gt;{try{return t||e((t={exports:{}}).exports,t),t.exports}catch(n){throw t=0,n}};var Wt=(e,t,n,i)=&amp;gt;{if(t&amp;amp;&amp;amp;typeof t==&amp;quot;object&amp;quot;||typeof t==&amp;quot;function&amp;quot;)for(let s of Rt(t))!Ot.call(e,s)&amp;amp;&amp;amp;s!==n&amp;amp;&amp;amp;He(e,s,{get:()=&amp;gt;t[s],enumerable:!(i=$t(t,s))||i.enumerable});return e};var Bt=(e,t,n)=&amp;gt;(n=e!=null?Ht(jt(e)):{},Wt(t||!e||!e.__esModule?He(n,&amp;quot;default&amp;quot;,{value:e,enumerable:!0}):n,e));var At=Ut((hi,X)=&amp;gt;{var h=function(){this.Diff_Timeout=1,this.Diff_EditCost=4,this.Match_Threshold=.5,this.Match_Distance=1e3,this.Patch_DeleteThreshold=.5,this.Patch_Margin=4,this.Match_MaxBits=32},M=-1,E=1,b=0;h.Diff=function(e,t){return[e,t]};h.prototype.diff_main=function(e,t,n,i){typeof i&amp;gt;&amp;quot;u&amp;quot;&amp;amp;&amp;amp;(this.Diff_Timeout&amp;lt;=0?i=Number.MAX_VALUE:i=new Date().getTime()+this.Diff_Timeout*1e3);var s=i;if(e==null||t==null)throw new Error(&amp;quot;Null input. (diff_main)&amp;quot;);if(e==t)return e?[new h.Diff(b,e)]:[];typeof n&amp;gt;&amp;quot;u&amp;quot;&amp;amp;&amp;amp;(n=!0);var r=n,o=this.diff_commonPrefix(e,t),a=e.substring(0,o);e=e.substring(o),t=t.substring(o),o=this.diff_commonSuffix(e,t);var l=e.substring(e.length-o);e=e.substring(0,e.length-o),t=t.substring(0,t.length-o);var c=this.diff_compute_(e,t,r,s);return a&amp;amp;&amp;amp;c.unshift(new h.Diff(b,a)),l&amp;amp;&amp;amp;c.push(new h.Diff(b,l)),this.diff_cleanupMerge(c),c};h.prototype.diff_compute_=function(e,t,n,i){var s;if(!e)return[new h.Diff(E,t)];if(!t)return[new h.Diff(M,e)];var r=e.length&amp;gt;t.length?e:t,o=e.length&amp;gt;t.length?t:e,a=r.indexOf(o);if(a!=-1)return s=[new h.Diff(E,r.substring(0,a)),new h.Diff(b,o),new h.Diff(E,r.substring(a+o.length))],e.length&amp;gt;t.length&amp;amp;&amp;amp;(s[0][0]=s[2][0]=M),s;if(o.length==1)return[new h.Diff(M,e),new h.Diff(E,t)];var l=this.diff_halfMatch_(e,t);if(l){var c=l[0],u=l[1],p=l[2],f=l[3],_=l[4],g=this.diff_main(c,p,n,i),m=this.diff_main(u,f,n,i);return g.concat([new h.Diff(b,_)],m)}return n&amp;amp;&amp;amp;e.length&amp;gt;100&amp;amp;&amp;amp;t.length&amp;gt;100?this.diff_lineMode_(e,t,i):this.diff_bisect_(e,t,i)};h.prototype.diff_lineMode_=function(e,t,n){var i=this.diff_linesToChars_(e,t);e=i.chars1,t=i.chars2;var s=i.lineArray,r=this.diff_main(e,t,!1,n);this.diff_charsToLines_(r,s),this.diff_cleanupSemantic(r),r.push(new h.Diff(b,&amp;quot;&amp;quot;));for(var o=0,a=0,l=0,c=&amp;quot;&amp;quot;,u=&amp;quot;&amp;quot;;o&amp;lt;r.length;){switch(r[o][0]){case E:l++,u+=r[o][1];break;case M:a++,c+=r[o][1];break;case b:if(a&amp;gt;=1&amp;amp;&amp;amp;l&amp;gt;=1){r.splice(o-a-l,a+l),o=o-a-l;for(var p=this.diff_main(c,u,!1,n),f=p.length-1;f&amp;gt;=0;f--)r.splice(o,0,p[f]);o=o+p.length}l=0,a=0,c=&amp;quot;&amp;quot;,u=&amp;quot;&amp;quot;;break}o++}return r.pop(),r};h.prototype.diff_bisect_=function(e,t,n){for(var i=e.length,s=t.length,r=Math.ceil((i+s)/2),o=r,a=2*r,l=new Array(a),c=new Array(a),u=0;u&amp;lt;a;u++)l[u]=-1,c[u]=-1;l[o+1]=0,c[o+1]=0;for(var p=i-s,f=p%2!=0,_=0,g=0,m=0,w=0,v=0;v&amp;lt;r&amp;amp;&amp;amp;!(new Date().getTime()&amp;gt;n);v++){for(var d=-v+_;d&amp;lt;=v-g;d+=2){var y=o+d,D;d==-v||d!=v&amp;amp;&amp;amp;l[y-1]&amp;lt;l[y+1]?D=l[y+1]:D=l[y-1]+1;for(var T=D-d;D&amp;lt;i&amp;amp;&amp;amp;T&amp;lt;s&amp;amp;&amp;amp;e.charAt(D)==t.charAt(T);)D++,T++;if(l[y]=D,D&amp;gt;i)g+=2;else if(T&amp;gt;s)_+=2;else if(f){var P=o+p-d;if(P&amp;gt;=0&amp;amp;&amp;amp;P&amp;lt;a&amp;amp;&amp;amp;c[P]!=-1){var A=i-c[P];if(D&amp;gt;=A)return this.diff_bisectSplit_(e,t,D,T,n)}}}for(var C=-v+m;C&amp;lt;=v-w;C+=2){var P=o+C,A;C==-v||C!=v&amp;amp;&amp;amp;c[P-1]&amp;lt;c[P+1]?A=c[P+1]:A=c[P-1]+1;for(var I=A-C;A&amp;lt;i&amp;amp;&amp;amp;I&amp;lt;s&amp;amp;&amp;amp;e.charAt(i-A-1)==t.charAt(s-I-1);)A++,I++;if(c[P]=A,A&amp;gt;i)w+=2;else if(I&amp;gt;s)m+=2;else if(!f){var y=o+p-C;if(y&amp;gt;=0&amp;amp;&amp;amp;y&amp;lt;a&amp;amp;&amp;amp;l[y]!=-1){var D=l[y],T=o+D-y;if(A=i-A,D&amp;gt;=A)return this.diff_bisectSplit_(e,t,D,T,n)}}}}return[new h.Diff(M,e),new h.Diff(E,t)]};h.prototype.diff_bisectSplit_=function(e,t,n,i,s){var r=e.substring(0,n),o=t.substring(0,i),a=e.substring(n),l=t.substring(i),c=this.diff_main(r,o,!1,s),u=this.diff_main(a,l,!1,s);return c.concat(u)};h.prototype.diff_linesToChars_=function(e,t){var n=[],i={};n[0]=&amp;quot;&amp;quot;;function s(l){for(var c=&amp;quot;&amp;quot;,u=0,p=-1,f=n.length;p&amp;lt;l.length-1;){p=l.indexOf(`&lt;br /&gt;
`,u),p==-1&amp;amp;&amp;amp;(p=l.length-1);var _=l.substring(u,p+1);(i.hasOwnProperty?i.hasOwnProperty(_):i[_]!==void 0)?c+=String.fromCharCode(i[_]):(f==r&amp;amp;&amp;amp;(_=l.substring(u),p=l.length),c+=String.fromCharCode(f),i[_]=f,n[f++]=_),u=p+1}return c}var r=4e4,o=s(e);r=65535;var a=s(t);return{chars1:o,chars2:a,lineArray:n}};h.prototype.diff_charsToLines_=function(e,t){for(var n=0;n&amp;lt;e.length;n++){for(var i=e[n][1],s=[],r=0;r&amp;lt;i.length;r++)s[r]=t[i.charCodeAt(r)];e[n][1]=s.join(&amp;quot;&amp;quot;)}};h.prototype.diff_commonPrefix=function(e,t){if(!e||!t||e.charAt(0)!=t.charAt(0))return 0;for(var n=0,i=Math.min(e.length,t.length),s=i,r=0;n&amp;lt;s;)e.substring(r,s)==t.substring(r,s)?(n=s,r=n):i=s,s=Math.floor((i-n)/2+n);return s};h.prototype.diff_commonSuffix=function(e,t){if(!e||!t||e.charAt(e.length-1)!=t.charAt(t.length-1))return 0;for(var n=0,i=Math.min(e.length,t.length),s=i,r=0;n&amp;lt;s;)e.substring(e.length-s,e.length-r)==t.substring(t.length-s,t.length-r)?(n=s,r=n):i=s,s=Math.floor((i-n)/2+n);return s};h.prototype.diff_commonOverlap_=function(e,t){var n=e.length,i=t.length;if(n==0||i==0)return 0;n&amp;gt;i?e=e.substring(n-i):n&amp;lt;i&amp;amp;&amp;amp;(t=t.substring(0,n));var s=Math.min(n,i);if(e==t)return s;for(var r=0,o=1;;){var a=e.substring(s-o),l=t.indexOf(a);if(l==-1)return r;o+=l,(l==0||e.substring(s-o)==t.substring(0,o))&amp;amp;&amp;amp;(r=o,o++)}};h.prototype.diff_halfMatch_=function(e,t){if(this.Diff_Timeout&amp;lt;=0)return null;var n=e.length&amp;gt;t.length?e:t,i=e.length&amp;gt;t.length?t:e;if(n.length&amp;lt;4||i.length*2&amp;lt;n.length)return null;var s=this;function r(g,m,w){for(var v=g.substring(w,w+Math.floor(g.length/4)),d=-1,y=&amp;quot;&amp;quot;,D,T,P,A;(d=m.indexOf(v,d+1))!=-1;){var C=s.diff_commonPrefix(g.substring(w),m.substring(d)),I=s.diff_commonSuffix(g.substring(0,w),m.substring(0,d));y.length&amp;lt;I+C&amp;amp;&amp;amp;(y=m.substring(d-I,d)+m.substring(d,d+C),D=g.substring(0,w-I),T=g.substring(w+C),P=m.substring(0,d-I),A=m.substring(d+C))}return y.length*2&amp;gt;=g.length?[D,T,P,A,y]:null}var o=r(n,i,Math.ceil(n.length/4)),a=r(n,i,Math.ceil(n.length/2)),l;if(!o&amp;amp;&amp;amp;!a)return null;a?o?l=o[4].length&amp;gt;a[4].length?o:a:l=a:l=o;var c,u,p,f;e.length&amp;gt;t.length?(c=l[0],u=l[1],p=l[2],f=l[3]):(p=l[0],f=l[1],c=l[2],u=l[3]);var _=l[4];return[c,u,p,f,_]};h.prototype.diff_cleanupSemantic=function(e){for(var t=!1,n=[],i=0,s=null,r=0,o=0,a=0,l=0,c=0;r&amp;lt;e.length;)e[r][0]==b?(n[i++]=r,o=l,a=c,l=0,c=0,s=e[r][1]):(e[r][0]==E?l+=e[r][1].length:c+=e[r][1].length,s&amp;amp;&amp;amp;s.length&amp;lt;=Math.max(o,a)&amp;amp;&amp;amp;s.length&amp;lt;=Math.max(l,c)&amp;amp;&amp;amp;(e.splice(n[i-1],0,new h.Diff(M,s)),e[n[i-1]+1][0]=E,i--,i--,r=i&amp;gt;0?n[i-1]:-1,o=0,a=0,l=0,c=0,s=null,t=!0)),r++;for(t&amp;amp;&amp;amp;this.diff_cleanupMerge(e),this.diff_cleanupSemanticLossless(e),r=1;r&amp;lt;e.length;){if(e[r-1][0]==M&amp;amp;&amp;amp;e[r][0]==E){var u=e[r-1][1],p=e[r][1],f=this.diff_commonOverlap_(u,p),_=this.diff_commonOverlap_(p,u);f&amp;gt;=_?(f&amp;gt;=u.length/2||f&amp;gt;=p.length/2)&amp;amp;&amp;amp;(e.splice(r,0,new h.Diff(b,p.substring(0,f))),e[r-1][1]=u.substring(0,u.length-f),e[r+1][1]=p.substring(f),r++):(_&amp;gt;=u.length/2||_&amp;gt;=p.length/2)&amp;amp;&amp;amp;(e.splice(r,0,new h.Diff(b,u.substring(0,_))),e[r-1][0]=E,e[r-1][1]=p.substring(0,p.length-_),e[r+1][0]=M,e[r+1][1]=u.substring(_),r++),r++}r++}};h.prototype.diff_cleanupSemanticLossless=function(e){function t(_,g){if(!_||!g)return 6;var m=_.charAt(_.length-1),w=g.charAt(0),v=m.match(h.nonAlphaNumericRegex_),d=w.match(h.nonAlphaNumericRegex_),y=v&amp;amp;&amp;amp;m.match(h.whitespaceRegex_),D=d&amp;amp;&amp;amp;w.match(h.whitespaceRegex_),T=y&amp;amp;&amp;amp;m.match(h.linebreakRegex_),P=D&amp;amp;&amp;amp;w.match(h.linebreakRegex_),A=T&amp;amp;&amp;amp;_.match(h.blanklineEndRegex_),C=P&amp;amp;&amp;amp;g.match(h.blanklineStartRegex_);return A||C?5:T||P?4:v&amp;amp;&amp;amp;!y&amp;amp;&amp;amp;D?3:y||D?2:v||d?1:0}for(var n=1;n&amp;lt;e.length-1;){if(e[n-1][0]==b&amp;amp;&amp;amp;e[n+1][0]==b){var i=e[n-1][1],s=e[n][1],r=e[n+1][1],o=this.diff_commonSuffix(i,s);if(o){var a=s.substring(s.length-o);i=i.substring(0,i.length-o),s=a+s.substring(0,s.length-o),r=a+r}for(var l=i,c=s,u=r,p=t(i,s)+t(s,r);s.charAt(0)===r.charAt(0);){i+=s.charAt(0),s=s.substring(1)+r.charAt(0),r=r.substring(1);var f=t(i,s)+t(s,r);f&amp;gt;=p&amp;amp;&amp;amp;(p=f,l=i,c=s,u=r)}e[n-1][1]!=l&amp;amp;&amp;amp;(l?e[n-1][1]=l:(e.splice(n-1,1),n--),e[n][1]=c,u?e[n+1][1]=u:(e.splice(n+1,1),n--))}n++}};h.nonAlphaNumericRegex_=/[^a-zA-Z0-9]/;h.whitespaceRegex_=/\s/;h.linebreakRegex_=/[\r\n]/;h.blanklineEndRegex_=/\n\r?\n$/;h.blanklineStartRegex_=/^\r?\n\r?\n/;h.prototype.diff_cleanupEfficiency=function(e){for(var t=!1,n=[],i=0,s=null,r=0,o=!1,a=!1,l=!1,c=!1;r&amp;lt;e.length;)e[r][0]==b?(e[r][1].length&amp;lt;this.Diff_EditCost&amp;amp;&amp;amp;(l||c)?(n[i++]=r,o=l,a=c,s=e[r][1]):(i=0,s=null),l=c=!1):(e[r][0]==M?c=!0:l=!0,s&amp;amp;&amp;amp;(o&amp;amp;&amp;amp;a&amp;amp;&amp;amp;l&amp;amp;&amp;amp;c||s.length&amp;lt;this.Diff_EditCost/2&amp;amp;&amp;amp;o+a+l+c==3)&amp;amp;&amp;amp;(e.splice(n[i-1],0,new h.Diff(M,s)),e[n[i-1]+1][0]=E,i--,s=null,o&amp;amp;&amp;amp;a?(l=c=!0,i=0):(i--,r=i&amp;gt;0?n[i-1]:-1,l=c=!1),t=!0)),r++;t&amp;amp;&amp;amp;this.diff_cleanupMerge(e)};h.prototype.diff_cleanupMerge=function(e){e.push(new h.Diff(b,&amp;quot;&amp;quot;));for(var t=0,n=0,i=0,s=&amp;quot;&amp;quot;,r=&amp;quot;&amp;quot;,o;t&amp;lt;e.length;)switch(e[t][0]){case E:i++,r+=e[t][1],t++;break;case M:n++,s+=e[t][1],t++;break;case b:n+i&amp;gt;1?(n!==0&amp;amp;&amp;amp;i!==0&amp;amp;&amp;amp;(o=this.diff_commonPrefix(r,s),o!==0&amp;amp;&amp;amp;(t-n-i&amp;gt;0&amp;amp;&amp;amp;e[t-n-i-1][0]==b?e[t-n-i-1][1]+=r.substring(0,o):(e.splice(0,0,new h.Diff(b,r.substring(0,o))),t++),r=r.substring(o),s=s.substring(o)),o=this.diff_commonSuffix(r,s),o!==0&amp;amp;&amp;amp;(e[t][1]=r.substring(r.length-o)+e[t][1],r=r.substring(0,r.length-o),s=s.substring(0,s.length-o))),t-=n+i,e.splice(t,n+i),s.length&amp;amp;&amp;amp;(e.splice(t,0,new h.Diff(M,s)),t++),r.length&amp;amp;&amp;amp;(e.splice(t,0,new h.Diff(E,r)),t++),t++):t!==0&amp;amp;&amp;amp;e[t-1][0]==b?(e[t-1][1]+=e[t][1],e.splice(t,1)):t++,i=0,n=0,s=&amp;quot;&amp;quot;,r=&amp;quot;&amp;quot;;break}e[e.length-1][1]===&amp;quot;&amp;quot;&amp;amp;&amp;amp;e.pop();var a=!1;for(t=1;t&amp;lt;e.length-1;)e[t-1][0]==b&amp;amp;&amp;amp;e[t+1][0]==b&amp;amp;&amp;amp;(e[t][1].substring(e[t][1].length-e[t-1][1].length)==e[t-1][1]?(e[t][1]=e[t-1][1]+e[t][1].substring(0,e[t][1].length-e[t-1][1].length),e[t+1][1]=e[t-1][1]+e[t+1][1],e.splice(t-1,1),a=!0):e[t][1].substring(0,e[t+1][1].length)==e[t+1][1]&amp;amp;&amp;amp;(e[t-1][1]+=e[t+1][1],e[t][1]=e[t][1].substring(e[t+1][1].length)+e[t+1][1],e.splice(t+1,1),a=!0)),t++;a&amp;amp;&amp;amp;this.diff_cleanupMerge(e)};h.prototype.diff_xIndex=function(e,t){var n=0,i=0,s=0,r=0,o;for(o=0;o&amp;lt;e.length&amp;amp;&amp;amp;(e[o][0]!==E&amp;amp;&amp;amp;(n+=e[o][1].length),e[o][0]!==M&amp;amp;&amp;amp;(i+=e[o][1].length),!(n&amp;gt;t));o++)s=n,r=i;return e.length!=o&amp;amp;&amp;amp;e[o][0]===M?r:r+(t-s)};h.prototype.diff_prettyHtml=function(e){for(var t=[],n=/&amp;amp;/g,i=/&amp;lt;/g,s=/&amp;gt;/g,r=/\n/g,o=0;o&amp;lt;e.length;o++){var a=e[o][0],l=e[o][1],c=l.replace(n,&amp;quot;&amp;amp;amp;&amp;quot;).replace(i,&amp;quot;&amp;amp;lt;&amp;quot;).replace(s,&amp;quot;&amp;amp;gt;&amp;quot;).replace(r,&amp;quot;&amp;amp;para;&amp;lt;br&amp;gt;&amp;quot;);switch(a){case E:t[o]=&#039;&amp;lt;ins style=&amp;quot;background:#e6ffe6;&amp;quot;&amp;gt;&#039;+c+&amp;quot;&amp;lt;/ins&amp;gt;&amp;quot;;break;case M:t[o]=&#039;&amp;lt;del style=&amp;quot;background:#ffe6e6;&amp;quot;&amp;gt;&#039;+c+&amp;quot;&amp;lt;/del&amp;gt;&amp;quot;;break;case b:t[o]=&amp;quot;&amp;lt;span&amp;gt;&amp;quot;+c+&amp;quot;&amp;lt;/span&amp;gt;&amp;quot;;break}}return t.join(&amp;quot;&amp;quot;)};h.prototype.diff_text1=function(e){for(var t=[],n=0;n&amp;lt;e.length;n++)e[n][0]!==E&amp;amp;&amp;amp;(t[n]=e[n][1]);return t.join(&amp;quot;&amp;quot;)};h.prototype.diff_text2=function(e){for(var t=[],n=0;n&amp;lt;e.length;n++)e[n][0]!==M&amp;amp;&amp;amp;(t[n]=e[n][1]);return t.join(&amp;quot;&amp;quot;)};h.prototype.diff_levenshtein=function(e){for(var t=0,n=0,i=0,s=0;s&amp;lt;e.length;s++){var r=e[s][0],o=e[s][1];switch(r){case E:n+=o.length;break;case M:i+=o.length;break;case b:t+=Math.max(n,i),n=0,i=0;break}}return t+=Math.max(n,i),t};h.prototype.diff_toDelta=function(e){for(var t=[],n=0;n&amp;lt;e.length;n++)switch(e[n][0]){case E:t[n]=&amp;quot;+&amp;quot;+encodeURI(e[n][1]);break;case M:t[n]=&amp;quot;-&amp;quot;+e[n][1].length;break;case b:t[n]=&amp;quot;=&amp;quot;+e[n][1].length;break}return t.join(&amp;quot;	&amp;quot;).replace(/%20/g,&amp;quot; &amp;quot;)};h.prototype.diff_fromDelta=function(e,t){for(var n=[],i=0,s=0,r=t.split(/\t/g),o=0;o&amp;lt;r.length;o++){var a=r[o].substring(1);switch(r[o].charAt(0)){case&amp;quot;+&amp;quot;:try{n[i++]=new h.Diff(E,decodeURI(a))}catch{throw new Error(&amp;quot;Illegal escape in diff_fromDelta: &amp;quot;+a)}break;case&amp;quot;-&amp;quot;:case&amp;quot;=&amp;quot;:var l=parseInt(a,10);if(isNaN(l)||l&amp;lt;0)throw new Error(&amp;quot;Invalid number in diff_fromDelta: &amp;quot;+a);var c=e.substring(s,s+=l);r[o].charAt(0)==&amp;quot;=&amp;quot;?n[i++]=new h.Diff(b,c):n[i++]=new h.Diff(M,c);break;default:if(r[o])throw new Error(&amp;quot;Invalid diff operation in diff_fromDelta: &amp;quot;+r[o])}}if(s!=e.length)throw new Error(&amp;quot;Delta length (&amp;quot;+s+&amp;quot;) does not equal source text length (&amp;quot;+e.length+&amp;quot;).&amp;quot;);return n};h.prototype.match_main=function(e,t,n){if(e==null||t==null||n==null)throw new Error(&amp;quot;Null input. (match_main)&amp;quot;);return n=Math.max(0,Math.min(n,e.length)),e==t?0:e.length?e.substring(n,n+t.length)==t?n:this.match_bitap_(e,t,n):-1};h.prototype.match_bitap_=function(e,t,n){if(t.length&amp;gt;this.Match_MaxBits)throw new Error(&amp;quot;Pattern too long for this browser.&amp;quot;);var i=this.match_alphabet_(t),s=this;function r(D,T){var P=D/t.length,A=Math.abs(n-T);return s.Match_Distance?P+A/s.Match_Distance:A?1:P}var o=this.Match_Threshold,a=e.indexOf(t,n);a!=-1&amp;amp;&amp;amp;(o=Math.min(r(0,a),o),a=e.lastIndexOf(t,n+t.length),a!=-1&amp;amp;&amp;amp;(o=Math.min(r(0,a),o)));var l=1&amp;lt;&amp;lt;t.length-1;a=-1;for(var c,u,p=t.length+e.length,f,_=0;_&amp;lt;t.length;_++){for(c=0,u=p;c&amp;lt;u;)r(_,n+u)&amp;lt;=o?c=u:p=u,u=Math.floor((p-c)/2+c);p=u;var g=Math.max(1,n-u+1),m=Math.min(n+u,e.length)+t.length,w=Array(m+2);w[m+1]=(1&amp;lt;&amp;lt;_)-1;for(var v=m;v&amp;gt;=g;v--){var d=i[e.charAt(v-1)];if(_===0?w[v]=(w[v+1]&amp;lt;&amp;lt;1|1)&amp;amp;d:w[v]=(w[v+1]&amp;lt;&amp;lt;1|1)&amp;amp;d|((f[v+1]|f[v])&amp;lt;&amp;lt;1|1)|f[v+1],w[v]&amp;amp;l){var y=r(_,v-1);if(y&amp;lt;=o)if(o=y,a=v-1,a&amp;gt;n)g=Math.max(1,2*n-a);else break}}if(r(_+1,n)&amp;gt;o)break;f=w}return a};h.prototype.match_alphabet_=function(e){for(var t={},n=0;n&amp;lt;e.length;n++)t[e.charAt(n)]=0;for(var n=0;n&amp;lt;e.length;n++)t[e.charAt(n)]|=1&amp;lt;&amp;lt;e.length-n-1;return t};h.prototype.patch_addContext_=function(e,t){if(t.length!=0){if(e.start2===null)throw Error(&amp;quot;patch not initialized&amp;quot;);for(var n=t.substring(e.start2,e.start2+e.length1),i=0;t.indexOf(n)!=t.lastIndexOf(n)&amp;amp;&amp;amp;n.length&amp;lt;this.Match_MaxBits-this.Patch_Margin-this.Patch_Margin;)i+=this.Patch_Margin,n=t.substring(e.start2-i,e.start2+e.length1+i);i+=this.Patch_Margin;var s=t.substring(e.start2-i,e.start2);s&amp;amp;&amp;amp;e.diffs.unshift(new h.Diff(b,s));var r=t.substring(e.start2+e.length1,e.start2+e.length1+i);r&amp;amp;&amp;amp;e.diffs.push(new h.Diff(b,r)),e.start1-=s.length,e.start2-=s.length,e.length1+=s.length+r.length,e.length2+=s.length+r.length}};h.prototype.patch_make=function(e,t,n){var i,s;if(typeof e==&amp;quot;string&amp;quot;&amp;amp;&amp;amp;typeof t==&amp;quot;string&amp;quot;&amp;amp;&amp;amp;typeof n&amp;gt;&amp;quot;u&amp;quot;)i=e,s=this.diff_main(i,t,!0),s.length&amp;gt;2&amp;amp;&amp;amp;(this.diff_cleanupSemantic(s),this.diff_cleanupEfficiency(s));else if(e&amp;amp;&amp;amp;typeof e==&amp;quot;object&amp;quot;&amp;amp;&amp;amp;typeof t&amp;gt;&amp;quot;u&amp;quot;&amp;amp;&amp;amp;typeof n&amp;gt;&amp;quot;u&amp;quot;)s=e,i=this.diff_text1(s);else if(typeof e==&amp;quot;string&amp;quot;&amp;amp;&amp;amp;t&amp;amp;&amp;amp;typeof t==&amp;quot;object&amp;quot;&amp;amp;&amp;amp;typeof n&amp;gt;&amp;quot;u&amp;quot;)i=e,s=t;else if(typeof e==&amp;quot;string&amp;quot;&amp;amp;&amp;amp;typeof t==&amp;quot;string&amp;quot;&amp;amp;&amp;amp;n&amp;amp;&amp;amp;typeof n==&amp;quot;object&amp;quot;)i=e,s=n;else throw new Error(&amp;quot;Unknown call format to patch_make.&amp;quot;);if(s.length===0)return[];for(var r=[],o=new h.patch_obj,a=0,l=0,c=0,u=i,p=i,f=0;f&amp;lt;s.length;f++){var _=s[f][0],g=s[f][1];switch(!a&amp;amp;&amp;amp;_!==b&amp;amp;&amp;amp;(o.start1=l,o.start2=c),_){case E:o.diffs[a++]=s[f],o.length2+=g.length,p=p.substring(0,c)+g+p.substring(c);break;case M:o.length1+=g.length,o.diffs[a++]=s[f],p=p.substring(0,c)+p.substring(c+g.length);break;case b:g.length&amp;lt;=2*this.Patch_Margin&amp;amp;&amp;amp;a&amp;amp;&amp;amp;s.length!=f+1?(o.diffs[a++]=s[f],o.length1+=g.length,o.length2+=g.length):g.length&amp;gt;=2*this.Patch_Margin&amp;amp;&amp;amp;a&amp;amp;&amp;amp;(this.patch_addContext_(o,u),r.push(o),o=new h.patch_obj,a=0,u=p,l=c);break}_!==E&amp;amp;&amp;amp;(l+=g.length),_!==M&amp;amp;&amp;amp;(c+=g.length)}return a&amp;amp;&amp;amp;(this.patch_addContext_(o,u),r.push(o)),r};h.prototype.patch_deepCopy=function(e){for(var t=[],n=0;n&amp;lt;e.length;n++){var i=e[n],s=new h.patch_obj;s.diffs=[];for(var r=0;r&amp;lt;i.diffs.length;r++)s.diffs[r]=new h.Diff(i.diffs[r][0],i.diffs[r][1]);s.start1=i.start1,s.start2=i.start2,s.length1=i.length1,s.length2=i.length2,t[n]=s}return t};h.prototype.patch_apply=function(e,t){if(e.length==0)return[t,[]];e=this.patch_deepCopy(e);var n=this.patch_addPadding(e);t=n+t+n,this.patch_splitMax(e);for(var i=0,s=[],r=0;r&amp;lt;e.length;r++){var o=e[r].start2+i,a=this.diff_text1(e[r].diffs),l,c=-1;if(a.length&amp;gt;this.Match_MaxBits?(l=this.match_main(t,a.substring(0,this.Match_MaxBits),o),l!=-1&amp;amp;&amp;amp;(c=this.match_main(t,a.substring(a.length-this.Match_MaxBits),o+a.length-this.Match_MaxBits),(c==-1||l&amp;gt;=c)&amp;amp;&amp;amp;(l=-1))):l=this.match_main(t,a,o),l==-1)s[r]=!1,i-=e[r].length2-e[r].length1;else{s[r]=!0,i=l-o;var u;if(c==-1?u=t.substring(l,l+a.length):u=t.substring(l,c+this.Match_MaxBits),a==u)t=t.substring(0,l)+this.diff_text2(e[r].diffs)+t.substring(l+a.length);else{var p=this.diff_main(a,u,!1);if(a.length&amp;gt;this.Match_MaxBits&amp;amp;&amp;amp;this.diff_levenshtein(p)/a.length&amp;gt;this.Patch_DeleteThreshold)s[r]=!1;else{this.diff_cleanupSemanticLossless(p);for(var f=0,_,g=0;g&amp;lt;e[r].diffs.length;g++){var m=e[r].diffs[g];m[0]!==b&amp;amp;&amp;amp;(_=this.diff_xIndex(p,f)),m[0]===E?t=t.substring(0,l+_)+m[1]+t.substring(l+_):m[0]===M&amp;amp;&amp;amp;(t=t.substring(0,l+_)+t.substring(l+this.diff_xIndex(p,f+m[1].length))),m[0]!==M&amp;amp;&amp;amp;(f+=m[1].length)}}}}}return t=t.substring(n.length,t.length-n.length),[t,s]};h.prototype.patch_addPadding=function(e){for(var t=this.Patch_Margin,n=&amp;quot;&amp;quot;,i=1;i&amp;lt;=t;i++)n+=String.fromCharCode(i);for(var i=0;i&amp;lt;e.length;i++)e[i].start1+=t,e[i].start2+=t;var s=e[0],r=s.diffs;if(r.length==0||r[0][0]!=b)r.unshift(new h.Diff(b,n)),s.start1-=t,s.start2-=t,s.length1+=t,s.length2+=t;else if(t&amp;gt;r[0][1].length){var o=t-r[0][1].length;r[0][1]=n.substring(r[0][1].length)+r[0][1],s.start1-=o,s.start2-=o,s.length1+=o,s.length2+=o}if(s=e[e.length-1],r=s.diffs,r.length==0||r[r.length-1][0]!=b)r.push(new h.Diff(b,n)),s.length1+=t,s.length2+=t;else if(t&amp;gt;r[r.length-1][1].length){var o=t-r[r.length-1][1].length;r[r.length-1][1]+=n.substring(0,o),s.length1+=o,s.length2+=o}return n};h.prototype.patch_splitMax=function(e){for(var t=this.Match_MaxBits,n=0;n&amp;lt;e.length;n++)if(!(e[n].length1&amp;lt;=t)){var i=e[n];e.splice(n--,1);for(var s=i.start1,r=i.start2,o=&amp;quot;&amp;quot;;i.diffs.length!==0;){var a=new h.patch_obj,l=!0;for(a.start1=s-o.length,a.start2=r-o.length,o!==&amp;quot;&amp;quot;&amp;amp;&amp;amp;(a.length1=a.length2=o.length,a.diffs.push(new h.Diff(b,o)));i.diffs.length!==0&amp;amp;&amp;amp;a.length1&amp;lt;t-this.Patch_Margin;){var c=i.diffs[0][0],u=i.diffs[0][1];c===E?(a.length2+=u.length,r+=u.length,a.diffs.push(i.diffs.shift()),l=!1):c===M&amp;amp;&amp;amp;a.diffs.length==1&amp;amp;&amp;amp;a.diffs[0][0]==b&amp;amp;&amp;amp;u.length&amp;gt;2*t?(a.length1+=u.length,s+=u.length,l=!1,a.diffs.push(new h.Diff(c,u)),i.diffs.shift()):(u=u.substring(0,t-a.length1-this.Patch_Margin),a.length1+=u.length,s+=u.length,c===b?(a.length2+=u.length,r+=u.length):l=!1,a.diffs.push(new h.Diff(c,u)),u==i.diffs[0][1]?i.diffs.shift():i.diffs[0][1]=i.diffs[0][1].substring(u.length))}o=this.diff_text2(a.diffs),o=o.substring(o.length-this.Patch_Margin);var p=this.diff_text1(i.diffs).substring(0,this.Patch_Margin);p!==&amp;quot;&amp;quot;&amp;amp;&amp;amp;(a.length1+=p.length,a.length2+=p.length,a.diffs.length!==0&amp;amp;&amp;amp;a.diffs[a.diffs.length-1][0]===b?a.diffs[a.diffs.length-1][1]+=p:a.diffs.push(new h.Diff(b,p))),l||e.splice(++n,0,a)}}};h.prototype.patch_toText=function(e){for(var t=[],n=0;n&amp;lt;e.length;n++)t[n]=e[n];return t.join(&amp;quot;&amp;quot;)};h.prototype.patch_fromText=function(e){var t=[];if(!e)return t;for(var n=e.split(`&lt;br /&gt;
`),i=0,s=/^@@ -(\d+),?(\d*) \+(\d+),?(\d*) @@$/;i&amp;lt;n.length;){var r=n[i].match(s);if(!r)throw new Error(&amp;quot;Invalid patch string: &amp;quot;+n[i]);var o=new h.patch_obj;for(t.push(o),o.start1=parseInt(r[1],10),r[2]===&amp;quot;&amp;quot;?(o.start1--,o.length1=1):r[2]==&amp;quot;0&amp;quot;?o.length1=0:(o.start1--,o.length1=parseInt(r[2],10)),o.start2=parseInt(r[3],10),r[4]===&amp;quot;&amp;quot;?(o.start2--,o.length2=1):r[4]==&amp;quot;0&amp;quot;?o.length2=0:(o.start2--,o.length2=parseInt(r[4],10)),i++;i&amp;lt;n.length;){var a=n[i].charAt(0);try{var l=decodeURI(n[i].substring(1))}catch{throw new Error(&amp;quot;Illegal escape in patch_fromText: &amp;quot;+l)}if(a==&amp;quot;-&amp;quot;)o.diffs.push(new h.Diff(M,l));else if(a==&amp;quot;+&amp;quot;)o.diffs.push(new h.Diff(E,l));else if(a==&amp;quot; &amp;quot;)o.diffs.push(new h.Diff(b,l));else{if(a==&amp;quot;@&amp;quot;)break;if(a!==&amp;quot;&amp;quot;)throw new Error(&#039;Invalid patch mode &amp;quot;&#039;+a+&#039;&amp;quot; in: &#039;+l)}i++}}return t};h.patch_obj=function(){this.diffs=[],this.start1=null,this.start2=null,this.length1=0,this.length2=0};h.patch_obj.prototype.toString=function(){var e,t;this.length1===0?e=this.start1+&amp;quot;,0&amp;quot;:this.length1==1?e=this.start1+1:e=this.start1+1+&amp;quot;,&amp;quot;+this.length1,this.length2===0?t=this.start2+&amp;quot;,0&amp;quot;:this.length2==1?t=this.start2+1:t=this.start2+1+&amp;quot;,&amp;quot;+this.length2;for(var n=[&amp;quot;@@ -&amp;quot;+e+&amp;quot; +&amp;quot;+t+` @@&lt;br /&gt;
`],i,s=0;s&amp;lt;this.diffs.length;s++){switch(this.diffs[s][0]){case E:i=&amp;quot;+&amp;quot;;break;case M:i=&amp;quot;-&amp;quot;;break;case b:i=&amp;quot; &amp;quot;;break}n[s+1]=i+encodeURI(this.diffs[s][1])+`&lt;br /&gt;
`}return n.join(&amp;quot;&amp;quot;).replace(/%20/g,&amp;quot; &amp;quot;)};X.exports=h;X.exports.diff_match_patch=h;X.exports.DIFF_DELETE=M;X.exports.DIFF_INSERT=E;X.exports.DIFF_EQUAL=b});var ce,S,Ue,Gt,j,$e,We,Be,we,ie,Y,Ge,De,ye,ke,zt,oe={},ae=[],Vt=/acit|ex(?:s|g|n|p|$)|rph|grid|ows|mnc|ntw|ine[ch]|zoo|^ord|itera/i,fe=Array.isArray;function H(e,t){for(var n in t)e[n]=t[n];return e}function Se(e){e&amp;amp;&amp;amp;e.parentNode&amp;amp;&amp;amp;e.parentNode.removeChild(e)}function Jt(e,t,n){var i,s,r,o={};for(r in t)r==&amp;quot;key&amp;quot;?i=t[r]:r==&amp;quot;ref&amp;quot;?s=t[r]:o[r]=t[r];if(arguments.length&amp;gt;2&amp;amp;&amp;amp;(o.children=arguments.length&amp;gt;3?ce.call(arguments,2):n),typeof e==&amp;quot;function&amp;quot;&amp;amp;&amp;amp;e.defaultProps!=null)for(r in e.defaultProps)o[r]===void 0&amp;amp;&amp;amp;(o[r]=e.defaultProps[r]);return se(e,o,i,s,null)}function se(e,t,n,i,s){var r={type:e,props:t,key:n,ref:i,__k:null,__:null,__b:0,__e:null,__c:null,constructor:void 0,__v:s??++Ue,__i:-1,__u:0};return s==null&amp;amp;&amp;amp;S.vnode!=null&amp;amp;&amp;amp;S.vnode(r),r}function ze(){return{current:null}}function V(e){return e.children}function z(e,t){this.props=e,this.context=t}function U(e,t){if(t==null)return e.__?U(e.__,e.__i+1):null;for(var n;t&amp;lt;e.__k.length;t++)if((n=e.__k[t])!=null&amp;amp;&amp;amp;n.__e!=null)return n.__e;return typeof e.type==&amp;quot;function&amp;quot;?U(e):null}function Zt(e){if(e.__P&amp;amp;&amp;amp;e.__d){var t=e.__v,n=t.__e,i=[],s=[],r=H({},t);r.__v=t.__v+1,S.vnode&amp;amp;&amp;amp;S.vnode(r),Me(e.__P,r,t,e.__n,e.__P.namespaceURI,32&amp;amp;t.__u?[n]:null,i,n??U(t),!!(32&amp;amp;t.__u),s),r.__v=t.__v,r.__.__k[r.__i]=r,qe(i,r,s),t.__e=t.__=null,r.__e!=n&amp;amp;&amp;amp;Ve(r)}}function Ve(e){if((e=e.__)!=null&amp;amp;&amp;amp;e.__c!=null)return e.__e=e.__c.base=null,e.__k.some(function(t){if(t!=null&amp;amp;&amp;amp;t.__e!=null)return e.__e=e.__c.base=t.__e}),Ve(e)}function Re(e){(!e.__d&amp;amp;&amp;amp;(e.__d=!0)&amp;amp;&amp;amp;j.push(e)&amp;amp;&amp;amp;!le.__r++||$e!=S.debounceRendering)&amp;amp;&amp;amp;(($e=S.debounceRendering)||We)(le)}function le(){try{for(var e,t=1;j.length;)j.length&amp;gt;t&amp;amp;&amp;amp;j.sort(Be),e=j.shift(),t=j.length,Zt(e)}finally{j.length=le.__r=0}}function Je(e,t,n,i,s,r,o,a,l,c,u){var p,f,_,g,m,w,v=i&amp;amp;&amp;amp;i.__k||ae,d=t.length;for(l=Kt(n,t,v,l,d),p=0;p&amp;lt;d;p++)(_=n.__k[p])!=null&amp;amp;&amp;amp;(f=_.__i!=-1&amp;amp;&amp;amp;v[_.__i]||oe,_.__i=p,w=Me(e,_,f,s,r,o,a,l,c,u),g=_.__e,_.ref&amp;amp;&amp;amp;f.ref!=_.ref&amp;amp;&amp;amp;(f.ref&amp;amp;&amp;amp;Ee(f.ref,null,_),u.push(_.ref,_.__c||g,_)),m==null&amp;amp;&amp;amp;g!=null&amp;amp;&amp;amp;(m=g),4&amp;amp;_.__u?(l=Ze(_,l,e),f.__e&amp;amp;&amp;amp;(f.__e=null)):typeof _.type==&amp;quot;function&amp;quot;&amp;amp;&amp;amp;w!==void 0?l=w:g&amp;amp;&amp;amp;(l=g.nextSibling),_.__u&amp;amp;=-7);return n.__e=m,l}function Kt(e,t,n,i,s){var r,o,a,l,c,u=n.length,p=u,f=0;for(e.__k=new Array(s),r=0;r&amp;lt;s;r++)(o=t[r])!=null&amp;amp;&amp;amp;typeof o!=&amp;quot;boolean&amp;quot;&amp;amp;&amp;amp;typeof o!=&amp;quot;function&amp;quot;?(typeof o==&amp;quot;string&amp;quot;||typeof o==&amp;quot;number&amp;quot;||typeof o==&amp;quot;bigint&amp;quot;||o.constructor==String?o=e.__k[r]=se(null,o,null,null,null):fe(o)?o=e.__k[r]=se(V,{children:o},null,null,null):o.constructor===void 0&amp;amp;&amp;amp;o.__b&amp;gt;0?o=e.__k[r]=se(o.type,o.props,o.key,o.ref?o.ref:null,o.__v):e.__k[r]=o,l=r+f,o.__=e,o.__b=e.__b+1,a=null,(c=o.__i=qt(o,n,l,p))!=-1&amp;amp;&amp;amp;(p--,(a=n[c])&amp;amp;&amp;amp;(a.__u|=2)),a==null||a.__v==null?(c==-1&amp;amp;&amp;amp;(s&amp;gt;u?f--:s&amp;lt;u&amp;amp;&amp;amp;f++),typeof o.type!=&amp;quot;function&amp;quot;&amp;amp;&amp;amp;(o.__u|=4)):c!=l&amp;amp;&amp;amp;(c==l-1?f--:c==l+1?f++:(c&amp;gt;l?f--:f++,o.__u|=4))):e.__k[r]=null;if(p)for(r=0;r&amp;lt;u;r++)(a=n[r])!=null&amp;amp;&amp;amp;(2&amp;amp;a.__u)==0&amp;amp;&amp;amp;(a.__e==i&amp;amp;&amp;amp;(i=U(a)),Xe(a,a));return i}function Ze(e,t,n){var i,s;if(typeof e.type==&amp;quot;function&amp;quot;){for(i=e.__k,s=0;i&amp;amp;&amp;amp;s&amp;lt;i.length;s++)i[s]&amp;amp;&amp;amp;(i[s].__=e,t=Ze(i[s],t,n));return t}e.__e!=t&amp;amp;&amp;amp;(t&amp;amp;&amp;amp;e.type&amp;amp;&amp;amp;!t.parentNode&amp;amp;&amp;amp;(t=U(e)),t=n.insertBefore(e.__e,t||null));do t=t&amp;amp;&amp;amp;t.nextSibling;while(t!=null&amp;amp;&amp;amp;t.nodeType==8);return t}function qt(e,t,n,i){var s,r,o,a=e.key,l=e.type,c=t[n],u=c!=null&amp;amp;&amp;amp;(2&amp;amp;c.__u)==0;if(c===null&amp;amp;&amp;amp;a==null||u&amp;amp;&amp;amp;a==c.key&amp;amp;&amp;amp;l==c.type)return n;if(i&amp;gt;(u?1:0)){for(s=n-1,r=n+1;s&amp;gt;=0||r&amp;lt;t.length;)if((c=t[o=s&amp;gt;=0?s--:r++])!=null&amp;amp;&amp;amp;(2&amp;amp;c.__u)==0&amp;amp;&amp;amp;a==c.key&amp;amp;&amp;amp;l==c.type)return o}return-1}function je(e,t,n){t[0]==&amp;quot;-&amp;quot;?e.setProperty(t,n??&amp;quot;&amp;quot;):e[t]=n==null?&amp;quot;&amp;quot;:typeof n!=&amp;quot;number&amp;quot;||Vt.test(t)?n:n+&amp;quot;px&amp;quot;}function re(e,t,n,i,s){var r,o;e:if(t==&amp;quot;style&amp;quot;)if(typeof n==&amp;quot;string&amp;quot;)e.style.cssText=n;else{if(typeof i==&amp;quot;string&amp;quot;&amp;amp;&amp;amp;(e.style.cssText=i=&amp;quot;&amp;quot;),i)for(t in i)n&amp;amp;&amp;amp;t in n||je(e.style,t,&amp;quot;&amp;quot;);if(n)for(t in n)i&amp;amp;&amp;amp;n[t]==i[t]||je(e.style,t,n[t])}else if(t[0]==&amp;quot;o&amp;quot;&amp;amp;&amp;amp;t[1]==&amp;quot;n&amp;quot;)r=t!=(t=t.replace(Ge,&amp;quot;$1&amp;quot;)),o=t.toLowerCase(),t=o in e||t==&amp;quot;onFocusOut&amp;quot;||t==&amp;quot;onFocusIn&amp;quot;?o.slice(2):t.slice(2),e.l||(e.l={}),e.l[t+r]=n,n?i?n[Y]=i[Y]:(n[Y]=De,e.addEventListener(t,r?ke:ye,r)):e.removeEventListener(t,r?ke:ye,r);else{if(s==&amp;quot;http://www.w3.org/2000/svg&amp;quot;)t=t.replace(/xlink(H|:h)/,&amp;quot;h&amp;quot;).replace(/sName$/,&amp;quot;s&amp;quot;);else if(t!=&amp;quot;width&amp;quot;&amp;amp;&amp;amp;t!=&amp;quot;height&amp;quot;&amp;amp;&amp;amp;t!=&amp;quot;href&amp;quot;&amp;amp;&amp;amp;t!=&amp;quot;list&amp;quot;&amp;amp;&amp;amp;t!=&amp;quot;form&amp;quot;&amp;amp;&amp;amp;t!=&amp;quot;tabIndex&amp;quot;&amp;amp;&amp;amp;t!=&amp;quot;download&amp;quot;&amp;amp;&amp;amp;t!=&amp;quot;rowSpan&amp;quot;&amp;amp;&amp;amp;t!=&amp;quot;colSpan&amp;quot;&amp;amp;&amp;amp;t!=&amp;quot;role&amp;quot;&amp;amp;&amp;amp;t!=&amp;quot;popover&amp;quot;&amp;amp;&amp;amp;t in e)try{e[t]=n??&amp;quot;&amp;quot;;break e}catch{}typeof n==&amp;quot;function&amp;quot;||(n==null||n===!1&amp;amp;&amp;amp;t[4]!=&amp;quot;-&amp;quot;?e.removeAttribute(t):e.setAttribute(t,t==&amp;quot;popover&amp;quot;&amp;amp;&amp;amp;n==1?&amp;quot;&amp;quot;:n))}}function Oe(e){return function(t){if(this.l){var n=this.l[t.type+e];if(t[ie]==null)t[ie]=De++;else if(t[ie]&amp;lt;n[Y])return;return n(S.event?S.event(t):t)}}}function Me(e,t,n,i,s,r,o,a,l,c){var u,p,f,_,g,m,w,v,d,y,D,T,P,A,C,I,N=t.type;if(t.constructor!==void 0)return null;128&amp;amp;n.__u&amp;amp;&amp;amp;(l=!!(32&amp;amp;n.__u),r=[a=t.__e=n.__e]),(u=S.__b)&amp;amp;&amp;amp;u(t);e:if(typeof N==&amp;quot;function&amp;quot;){p=o.length;try{if(d=t.props,y=N.prototype&amp;amp;&amp;amp;N.prototype.render,D=(u=N.contextType)&amp;amp;&amp;amp;i[u.__c],T=u?D?D.props.value:u.__:i,n.__c?v=(f=t.__c=n.__c).__=f.__E:(y?t.__c=f=new N(d,T):(t.__c=f=new z(d,T),f.constructor=N,f.render=Xt),D&amp;amp;&amp;amp;D.sub(f),f.state||(f.state={}),f.__n=i,_=f.__d=!0,f.__h=[],f._sb=[]),y&amp;amp;&amp;amp;f.__s==null&amp;amp;&amp;amp;(f.__s=f.state),y&amp;amp;&amp;amp;N.getDerivedStateFromProps!=null&amp;amp;&amp;amp;(f.__s==f.state&amp;amp;&amp;amp;(f.__s=H({},f.__s)),H(f.__s,N.getDerivedStateFromProps(d,f.__s))),g=f.props,m=f.state,f.__v=t,_)y&amp;amp;&amp;amp;N.getDerivedStateFromProps==null&amp;amp;&amp;amp;f.componentWillMount!=null&amp;amp;&amp;amp;f.componentWillMount(),y&amp;amp;&amp;amp;f.componentDidMount!=null&amp;amp;&amp;amp;f.__h.push(f.componentDidMount);else{if(y&amp;amp;&amp;amp;N.getDerivedStateFromProps==null&amp;amp;&amp;amp;d!==g&amp;amp;&amp;amp;f.componentWillReceiveProps!=null&amp;amp;&amp;amp;f.componentWillReceiveProps(d,T),t.__v==n.__v||!f.__e&amp;amp;&amp;amp;f.shouldComponentUpdate!=null&amp;amp;&amp;amp;f.shouldComponentUpdate(d,f.__s,T)===!1){t.__v!=n.__v&amp;amp;&amp;amp;(f.props=d,f.state=f.__s,f.__d=!1),t.__e=n.__e,t.__k=n.__k,t.__k.some(function(G){G&amp;amp;&amp;amp;(G.__=t)}),ae.push.apply(f.__h,f._sb),f._sb=[],f.__h.length&amp;amp;&amp;amp;o.push(f),a=U(n);break e}f.componentWillUpdate!=null&amp;amp;&amp;amp;f.componentWillUpdate(d,f.__s,T),y&amp;amp;&amp;amp;f.componentDidUpdate!=null&amp;amp;&amp;amp;f.__h.push(function(){f.componentDidUpdate(g,m,w)})}if(f.context=T,f.props=d,f.__P=e,f.__e=!1,P=S.__r,A=0,y)f.state=f.__s,f.__d=!1,P&amp;amp;&amp;amp;P(t),u=f.render(f.props,f.state,f.context),ae.push.apply(f.__h,f._sb),f._sb=[];else do f.__d=!1,P&amp;amp;&amp;amp;P(t),u=f.render(f.props,f.state,f.context),f.state=f.__s;while(f.__d&amp;amp;&amp;amp;++A&amp;lt;25);f.state=f.__s,f.getChildContext!=null&amp;amp;&amp;amp;(i=H(H({},i),f.getChildContext())),y&amp;amp;&amp;amp;!_&amp;amp;&amp;amp;f.getSnapshotBeforeUpdate!=null&amp;amp;&amp;amp;(w=f.getSnapshotBeforeUpdate(g,m)),C=u!=null&amp;amp;&amp;amp;u.type===V&amp;amp;&amp;amp;u.key==null?Qe(u.props.children):u,a=Je(e,fe(C)?C:[C],t,n,i,s,r,o,a,l,c),f.base=t.__e,t.__u&amp;amp;=-161,f.__h.length&amp;amp;&amp;amp;o.push(f),v&amp;amp;&amp;amp;(f.__E=f.__=null)}catch(G){if(o.length=p,t.__v=null,l||r!=null){if(G.then){for(t.__u|=l?160:128;a&amp;amp;&amp;amp;a.nodeType==8&amp;amp;&amp;amp;a.nextSibling;)a=a.nextSibling;r!=null&amp;amp;&amp;amp;(r[r.indexOf(a)]=null),t.__e=a}else if(r!=null)for(I=r.length;I--;)Se(r[I])}else t.__e=n.__e;t.__k==null&amp;amp;&amp;amp;(t.__k=n.__k||[]),G.then||Ke(t),S.__e(G,t,n)}}else r==null&amp;amp;&amp;amp;t.__v==n.__v?(t.__k=n.__k,t.__e=n.__e):a=t.__e=Qt(n.__e,t,n,i,s,r,o,l,c);return(u=S.diffed)&amp;amp;&amp;amp;u(t),128&amp;amp;t.__u?void 0:a}function Ke(e){e&amp;amp;&amp;amp;(e.__c&amp;amp;&amp;amp;(e.__c.__e=!0),e.__k&amp;amp;&amp;amp;e.__k.some(Ke))}function qe(e,t,n){for(var i=0;i&amp;lt;n.length;i++)Ee(n[i],n[++i],n[++i]);S.__c&amp;amp;&amp;amp;S.__c(t,e),e.some(function(s){try{e=s.__h,s.__h=[],e.some(function(r){r.call(s)})}catch(r){S.__e(r,s.__v)}})}function Qe(e){return typeof e!=&amp;quot;object&amp;quot;||e==null||e.__b&amp;gt;0?e:fe(e)?e.map(Qe):e.constructor!==void 0?null:H({},e)}function Qt(e,t,n,i,s,r,o,a,l){var c,u,p,f,_,g,m,w=n.props||oe,v=t.props,d=t.type;if(d==&amp;quot;svg&amp;quot;?s=&amp;quot;http://www.w3.org/2000/svg&amp;quot;:d==&amp;quot;math&amp;quot;?s=&amp;quot;http://www.w3.org/1998/Math/MathML&amp;quot;:s||(s=&amp;quot;http://www.w3.org/1999/xhtml&amp;quot;),r!=null){for(c=0;c&amp;lt;r.length;c++)if((_=r[c])&amp;amp;&amp;amp;&amp;quot;setAttribute&amp;quot;in _==!!d&amp;amp;&amp;amp;(d?_.localName==d:_.nodeType==3)){e=_,r[c]=null;break}}if(e==null){if(d==null)return document.createTextNode(v);e=document.createElementNS(s,d,v.is&amp;amp;&amp;amp;v),a&amp;amp;&amp;amp;(S.__m&amp;amp;&amp;amp;S.__m(t,r),a=!1),r=null}if(d==null)w===v||a&amp;amp;&amp;amp;e.data==v||(e.data=v);else{if(r=d==&amp;quot;textarea&amp;quot;&amp;amp;&amp;amp;v.defaultValue!=null?null:r&amp;amp;&amp;amp;ce.call(e.childNodes),!a&amp;amp;&amp;amp;r!=null)for(w={},c=0;c&amp;lt;e.attributes.length;c++)w[(_=e.attributes[c]).name]=_.value;for(c in w)_=w[c],c==&amp;quot;dangerouslySetInnerHTML&amp;quot;?p=_:c==&amp;quot;children&amp;quot;||c in v||c==&amp;quot;value&amp;quot;&amp;amp;&amp;amp;&amp;quot;defaultValue&amp;quot;in v||c==&amp;quot;checked&amp;quot;&amp;amp;&amp;amp;&amp;quot;defaultChecked&amp;quot;in v||re(e,c,null,_,s);for(c in v)_=v[c],c==&amp;quot;children&amp;quot;?f=_:c==&amp;quot;dangerouslySetInnerHTML&amp;quot;?u=_:c==&amp;quot;value&amp;quot;?g=_:c==&amp;quot;checked&amp;quot;?m=_:a&amp;amp;&amp;amp;typeof _!=&amp;quot;function&amp;quot;||w[c]===_||re(e,c,_,w[c],s);if(u)a||p&amp;amp;&amp;amp;(u.__html==p.__html||u.__html==e.innerHTML)||(e.innerHTML=u.__html),t.__k=[];else if(p&amp;amp;&amp;amp;(e.innerHTML=&amp;quot;&amp;quot;),Je(t.type==&amp;quot;template&amp;quot;?e.content:e,fe(f)?f:[f],t,n,i,d==&amp;quot;foreignObject&amp;quot;?&amp;quot;http://www.w3.org/1999/xhtml&amp;quot;:s,r,o,r?r[0]:n.__k&amp;amp;&amp;amp;U(n,0),a,l),r!=null)for(c=r.length;c--;)Se(r[c]);a&amp;amp;&amp;amp;d!=&amp;quot;textarea&amp;quot;||(c=&amp;quot;value&amp;quot;,d==&amp;quot;progress&amp;quot;&amp;amp;&amp;amp;g==null?e.removeAttribute(&amp;quot;value&amp;quot;):g!=null&amp;amp;&amp;amp;(g!==e[c]||d==&amp;quot;progress&amp;quot;&amp;amp;&amp;amp;!g||d==&amp;quot;option&amp;quot;&amp;amp;&amp;amp;g!=w[c])&amp;amp;&amp;amp;re(e,c,g,w[c],s),c=&amp;quot;checked&amp;quot;,m!=null&amp;amp;&amp;amp;m!=e[c]&amp;amp;&amp;amp;re(e,c,m,w[c],s))}return e}function Ee(e,t,n){try{if(typeof e==&amp;quot;function&amp;quot;){var i=typeof e.__u==&amp;quot;function&amp;quot;;i&amp;amp;&amp;amp;e.__u(),i&amp;amp;&amp;amp;t==null||(e.__u=e(t))}else e.current=t}catch(s){S.__e(s,n)}}function Xe(e,t,n){var i,s;if(S.unmount&amp;amp;&amp;amp;S.unmount(e),(i=e.ref)&amp;amp;&amp;amp;(i.current&amp;amp;&amp;amp;i.current!=e.__e||Ee(i,null,t)),(i=e.__c)!=null){if(i.componentWillUnmount)try{i.componentWillUnmount()}catch(r){S.__e(r,t)}i.base=i.__P=i.__n=null}if(i=e.__k)for(s=0;s&amp;lt;i.length;s++)i[s]&amp;amp;&amp;amp;Xe(i[s],t,n||typeof e.type!=&amp;quot;function&amp;quot;);n||Se(e.__e),e.__c=e.__=e.__e=void 0}function Xt(e,t,n){return this.constructor(e,n)}function Ye(e,t,n){var i,s,r,o;t==document&amp;amp;&amp;amp;(t=document.documentElement),S.__&amp;amp;&amp;amp;S.__(e,t),s=(i=typeof n==&amp;quot;function&amp;quot;)?null:n&amp;amp;&amp;amp;n.__k||t.__k,r=[],o=[],Me(t,e=(!i&amp;amp;&amp;amp;n||t).__k=Jt(V,null,[e]),s||oe,oe,t.namespaceURI,!i&amp;amp;&amp;amp;n?[n]:s?null:t.firstChild?ce.call(t.childNodes):null,r,!i&amp;amp;&amp;amp;n?n:s?s.__e:t.firstChild,i,o),qe(r,e,o),e.props.children=null}ce=ae.slice,S={__e:function(e,t,n,i){for(var s,r,o;t=t.__;)if((s=t.__c)&amp;amp;&amp;amp;!s.__)try{if((r=s.constructor)&amp;amp;&amp;amp;r.getDerivedStateFromError!=null&amp;amp;&amp;amp;(s.setState(r.getDerivedStateFromError(e)),o=s.__d),s.componentDidCatch!=null&amp;amp;&amp;amp;(s.componentDidCatch(e,i||{}),o=s.__d),o)return s.__E=s}catch(a){e=a}throw e}},Ue=0,Gt=function(e){return e!=null&amp;amp;&amp;amp;e.constructor===void 0},z.prototype.setState=function(e,t){var n;n=this.__s!=null&amp;amp;&amp;amp;this.__s!=this.state?this.__s:this.__s=H({},this.state),typeof e==&amp;quot;function&amp;quot;&amp;amp;&amp;amp;(e=e(H({},n),this.props)),e&amp;amp;&amp;amp;H(n,e),e!=null&amp;amp;&amp;amp;this.__v&amp;amp;&amp;amp;(t&amp;amp;&amp;amp;this._sb.push(t),Re(this))},z.prototype.forceUpdate=function(e){this.__v&amp;amp;&amp;amp;(this.__e=!0,e&amp;amp;&amp;amp;this.__h.push(e),Re(this))},z.prototype.render=V,j=[],We=typeof Promise==&amp;quot;function&amp;quot;?Promise.prototype.then.bind(Promise.resolve()):setTimeout,Be=function(e,t){return e.__v.__b-t.__v.__b},le.__r=0,we=Math.random().toString(8),ie=&amp;quot;__d&amp;quot;+we,Y=&amp;quot;__a&amp;quot;+we,Ge=/(PointerCapture)$|Capture$/i,De=0,ye=Oe(!1),ke=Oe(!0),zt=0;var Yt=0;function k(e,t,n,i,s,r){t||(t={});var o,a,l=t;if(&amp;quot;ref&amp;quot;in l)for(a in l={},t)a==&amp;quot;ref&amp;quot;?o=t[a]:l[a]=t[a];var c={type:e,props:l,key:n,ref:o,__k:null,__:null,__b:0,__e:null,__c:null,constructor:void 0,__v:--Yt,__i:-1,__u:0,__source:s,__self:r};if(typeof e==&amp;quot;function&amp;quot;&amp;amp;&amp;amp;(o=e.defaultProps))for(a in o)l[a]===void 0&amp;amp;&amp;amp;(l[a]=o[a]);return S.vnode&amp;amp;&amp;amp;S.vnode(c),c}var xe;function xt(e,t,n=0,i={}){xe={App:e,selector:t,importance:n,props:i},tt()===!1&amp;amp;&amp;amp;window.addEventListener(&amp;quot;load&amp;quot;,et)}function et(){window.removeEventListener(&amp;quot;load&amp;quot;,et),tt()}function tt(){let{App:e,selector:t,importance:n,props:i}=xe,s=document.querySelector(t);if(!s)return!1;if((Number(s.dataset.importance)||0)&amp;gt;=n){console.warn(&amp;quot;Refused to mount, not important enough!&amp;quot;);return}return s.dataset.importance=n,s.innerHTML=&amp;quot;&amp;quot;,Ye(k(e,{...i}),s),!0}var nt=xt;var en={data:&amp;quot;&amp;quot;},tn=e=&amp;gt;{if(typeof window==&amp;quot;object&amp;quot;){let t=(e?e.querySelector(&amp;quot;#_goober&amp;quot;):window._goober)||Object.assign(document.createElement(&amp;quot;style&amp;quot;),{innerHTML:&amp;quot; &amp;quot;,id:&amp;quot;_goober&amp;quot;});return t.nonce=window.__nonce__,t.parentNode||(e||document.head).appendChild(t),t.firstChild}return e||en};var nn=/(?:([\u0080-\uFFFF\w-%@]+) *:? *([^{;]+?);|([^;}{]*?) *{)|(}\s*)/g,rn=/\/\*[^]*?\*\/|  +/g,rt=/\n+/g,W=(e,t)=&amp;gt;{let n=&amp;quot;&amp;quot;,i=&amp;quot;&amp;quot;,s=&amp;quot;&amp;quot;;for(let r in e){let o=e[r];r[0]==&amp;quot;@&amp;quot;?r[1]==&amp;quot;i&amp;quot;?n=r+&amp;quot; &amp;quot;+o+&amp;quot;;&amp;quot;:i+=r[1]==&amp;quot;f&amp;quot;?W(o,r):r+&amp;quot;{&amp;quot;+W(o,r[1]==&amp;quot;k&amp;quot;?&amp;quot;&amp;quot;:t)+&amp;quot;}&amp;quot;:typeof o==&amp;quot;object&amp;quot;?i+=W(o,t?t.replace(/([^,])+/g,a=&amp;gt;r.replace(/([^,]*:\S+\([^)]*\))|([^,])+/g,l=&amp;gt;/&amp;amp;/.test(l)?l.replace(/&amp;amp;/g,a):a?a+&amp;quot; &amp;quot;+l:l)):r):o!=null&amp;amp;&amp;amp;(r=r[1]==&amp;quot;-&amp;quot;?r:r.replace(/[A-Z]/g,&amp;quot;-$&amp;amp;&amp;quot;).toLowerCase(),s+=W.p?W.p(r,o):r+&amp;quot;:&amp;quot;+o+&amp;quot;;&amp;quot;)}return n+(t&amp;amp;&amp;amp;s?t+&amp;quot;{&amp;quot;+s+&amp;quot;}&amp;quot;:s)+i},O={},it=e=&amp;gt;{if(typeof e==&amp;quot;object&amp;quot;){let t=&amp;quot;&amp;quot;;for(let n in e)t+=n+it(e[n]);return t}return e},sn=(e,t,n,i,s)=&amp;gt;{let r=it(e),o=O[r]||(O[r]=(l=&amp;gt;{let c=0,u=11;for(;c&amp;lt;l.length;)u=101*u+l.charCodeAt(c++)&amp;gt;&amp;gt;&amp;gt;0;return&amp;quot;go&amp;quot;+u})(r));if(!O[o]){let l=r!==e?e:(c=&amp;gt;{let u,p,f=[{}];for(;u=nn.exec(c.replace(rn,&amp;quot;&amp;quot;));)u[4]?f.shift():u[3]?(p=u[3].replace(rt,&amp;quot; &amp;quot;).trim(),f.unshift(f[0][p]=f[0][p]||{})):f[0][u[1]]=u[2].replace(rt,&amp;quot; &amp;quot;).trim();return f[0]})(e);O[o]=W(s?{[&amp;quot;@keyframes &amp;quot;+o]:l}:l,n?&amp;quot;&amp;quot;:&amp;quot;.&amp;quot;+o)}let a=n&amp;amp;&amp;amp;O.g;return n&amp;amp;&amp;amp;(O.g=O[o]),((l,c,u,p)=&amp;gt;{p?c.data=c.data.replace(p,l):c.data.indexOf(l)===-1&amp;amp;&amp;amp;(c.data=u?l+c.data:c.data+l)})(O[o],t,i,a),o},on=(e,t,n)=&amp;gt;e.reduce((i,s,r)=&amp;gt;{let o=t[r];if(o&amp;amp;&amp;amp;o.call){let a=o(n),l=a&amp;amp;&amp;amp;a.props&amp;amp;&amp;amp;a.props.className||/^go/.test(a)&amp;amp;&amp;amp;a;o=l?&amp;quot;.&amp;quot;+l:a&amp;amp;&amp;amp;typeof a==&amp;quot;object&amp;quot;?a.props?&amp;quot;&amp;quot;:W(a,&amp;quot;&amp;quot;):a===!1?&amp;quot;&amp;quot;:a}return i+s+(o??&amp;quot;&amp;quot;)},&amp;quot;&amp;quot;);function $(e){let t=this||{},n=e.call?e(t.p):e;return sn(n.unshift?n.raw?on(n,[].slice.call(arguments,1),t.p):n.reduce((i,s)=&amp;gt;Object.assign(i,s&amp;amp;&amp;amp;s.call?s(t.p):s),{}):n,tn(t.target),t.g,t.o,t.k)}var Dr=$.bind({g:1}),Sr=$.bind({k:1});function an(e,...t){let n=[],{length:i}=e;for(let r=0;r&amp;lt;i;r++)n.push(e[r],t[r]);n.pop();let s=n.join(&amp;quot;&amp;quot;);return s=s.replaceAll(/\/\*[\s\S]*?\*\//g,&amp;quot;&amp;quot;),s=s.replaceAll(/\s\/\/.*/g,&amp;quot;&amp;quot;),s}var ue=an;var J,st,ln={info:&amp;quot;\u2139\uFE0F&amp;quot;,warning:&amp;quot;\u26A0\uFE0F&amp;quot;,error:&amp;quot;\u26D4&amp;quot;},F=&amp;quot;tool-log&amp;quot;,cn=ue`&lt;br /&gt;
    .${F} {&lt;br /&gt;
        overflow-y: scroll;&lt;br /&gt;
        height: 200px;&lt;br /&gt;
        flex-shrink: 0;&lt;br /&gt;
    }&lt;br /&gt;
&lt;br /&gt;
    .${F} table {&lt;br /&gt;
        width: 100%;&lt;br /&gt;
        border-collapse: collapse;&lt;br /&gt;
        margin: 0;&lt;br /&gt;
    }&lt;br /&gt;
&lt;br /&gt;
    .${F} th {&lt;br /&gt;
        text-align: left;&lt;br /&gt;
    }&lt;br /&gt;
&lt;br /&gt;
    .${F} th,&lt;br /&gt;
    .${F} td {&lt;br /&gt;
        border: solid 1px rgba(255, 255, 255, 0.1);&lt;br /&gt;
        border-left: none;&lt;br /&gt;
        border-right: none;&lt;br /&gt;
        vertical-align: top;&lt;br /&gt;
        padding: 4px;&lt;br /&gt;
    }&lt;br /&gt;
&lt;br /&gt;
    .${F} th {&lt;br /&gt;
        border-top: none;&lt;br /&gt;
    }&lt;br /&gt;
&lt;br /&gt;
    .${F} table {&lt;br /&gt;
        border: solid 1px rgba(255, 255, 255, 0.1);&lt;br /&gt;
    }&lt;br /&gt;
&lt;br /&gt;
    .${F} th {&lt;br /&gt;
        background: rgba(255, 255, 255, 0.1);&lt;br /&gt;
    }&lt;br /&gt;
&lt;br /&gt;
    .${F} td:nth-child(1) {&lt;br /&gt;
        width: 90px;&lt;br /&gt;
    }&lt;br /&gt;
&lt;br /&gt;
    .${F} td:nth-child(2),&lt;br /&gt;
    .${F} th:nth-child(2) {&lt;br /&gt;
        width: 20px;&lt;br /&gt;
        text-align: center;&lt;br /&gt;
    }&lt;br /&gt;
&lt;br /&gt;
    .${F} td &amp;gt; div &amp;gt; div {&lt;br /&gt;
        cursor: pointer;&lt;br /&gt;
        color: yellow;&lt;br /&gt;
    }&lt;br /&gt;
&lt;br /&gt;
    .${F} textarea {&lt;br /&gt;
        width: calc(100% - 8px);&lt;br /&gt;
        height: 200px;&lt;br /&gt;
    }&lt;br /&gt;
`;function fn(e,...t){let n=e.endsWith(&amp;quot;!&amp;quot;)?e.startsWith(&amp;quot;!&amp;quot;)?&amp;quot;error&amp;quot;:&amp;quot;warning&amp;quot;:&amp;quot;info&amp;quot;;un(n,e,t)}function ot(e){J=e,J.classList.add(F),J.innerHTML=`&lt;br /&gt;
        &amp;lt;style&amp;gt;${cn}&amp;lt;/style&amp;gt;&lt;br /&gt;
        &amp;lt;table class=&#039;wikitable&#039;&amp;gt;&lt;br /&gt;
            &amp;lt;tr&amp;gt;&lt;br /&gt;
                &amp;lt;th&amp;gt;Timestamp&amp;lt;/th&amp;gt;&lt;br /&gt;
                &amp;lt;th&amp;gt;\u{1F197}&amp;lt;/th&amp;gt;&lt;br /&gt;
                &amp;lt;th&amp;gt;Message&amp;lt;/th&amp;gt;&lt;br /&gt;
            &amp;lt;/tr&amp;gt;&lt;br /&gt;
        &amp;lt;/table&amp;gt;`,st=J.querySelector(&amp;quot;table&amp;quot;)}function un(e,t,n){let s=new Date().toLocaleTimeString(&amp;quot;en-GB&amp;quot;,{hour12:!1,hour:&amp;quot;2-digit&amp;quot;,minute:&amp;quot;2-digit&amp;quot;,second:&amp;quot;2-digit&amp;quot;,fractionalSecondDigits:3}),r=document.createElement(&amp;quot;tr&amp;quot;);Pe(r,s),Pe(r,ln[e]),Pe(r,hn(t,n)),st.appendChild(r),J.scrollTo({top:J.scrollHeight,behavior:&amp;quot;smooth&amp;quot;})}function Pe(e,t){let n=document.createElement(&amp;quot;td&amp;quot;);t=t instanceof Node?t:document.createTextNode(t),n.appendChild(t),e.appendChild(n)}function hn(e,t){if(e=e.replace(/^!/,&amp;quot;&amp;quot;),console.log(e,...t),!t.length)return document.createTextNode(e);let n=document.createElement(&amp;quot;div&amp;quot;),i=document.createElement(&amp;quot;div&amp;quot;);i.innerHTML=e,i.onclick=function(){let r=this.nextElementSibling.style.display!==&amp;quot;none&amp;quot;;this.nextElementSibling.style.display=r?&amp;quot;none&amp;quot;:&amp;quot;block&amp;quot;},n.appendChild(i);let s=document.createElement(&amp;quot;textarea&amp;quot;);return s.style.display=&amp;quot;none&amp;quot;,s.innerHTML=pn(t),n.appendChild(s),n}function pn(e){let t=[];for(let n of e)typeof n==&amp;quot;object&amp;quot;&amp;amp;&amp;amp;n?n instanceof Error?t.push(n.stack):t.push(JSON.stringify(n,null,4)):t.push(n);return t.join(`&lt;br /&gt;
`)}var L=fn;function _n(e,...t){if(typeof e==&amp;quot;function&amp;quot;)try{let n=e(...t);return n&amp;amp;&amp;amp;typeof n.then==&amp;quot;function&amp;quot;?n.then(i=&amp;gt;[i,null]).catch(i=&amp;gt;[null,i]):[n,null]}catch(n){return[null,n]}return e&amp;amp;&amp;amp;typeof e.then==&amp;quot;function&amp;quot;?e.then(n=&amp;gt;[n,null]).catch(n=&amp;gt;[null,n]):[e,null]}var x=_n;var at=window.location.host||&amp;quot;localhost&amp;quot;,Z=&amp;quot;store&amp;quot;;async function lt(e){if(!(await indexedDB.databases()).find(i=&amp;gt;i.name===at))return;let n=await ft();if(!n.objectStoreNames.contains(Z)){n.close();return}return new Promise((i,s)=&amp;gt;{let r=n.transaction(Z).objectStore(Z).get(e);r.onsuccess=()=&amp;gt;{i(r.result),n.close()},r.onerror=()=&amp;gt;{s(r.error),n.close()}})}async function ct(e,t){let n=await ft();return new Promise((i,s)=&amp;gt;{let r=n.transaction(Z,&amp;quot;readwrite&amp;quot;);r.objectStore(Z).put(t,e),r.oncomplete=()=&amp;gt;{i(),n.close()},r.onerror=()=&amp;gt;{s(r.error),n.close()}})}function ft(){return new Promise((e,t)=&amp;gt;{let n=indexedDB.open(at);n.onupgradeneeded=i=&amp;gt;i.target.result.createObjectStore(Z),n.onsuccess=()=&amp;gt;e(n.result),n.onerror=()=&amp;gt;t(n.error)})}var Ae=&amp;quot;gameDirHandle&amp;quot;,ee=&amp;quot;diff-list&amp;quot;,R=&amp;quot;diff-path&amp;quot;,he=&amp;quot;diff-label&amp;quot;,te=&amp;quot;diff-new&amp;quot;,K=&amp;quot;diff-identical&amp;quot;,q=&amp;quot;diff-changed&amp;quot;,B=&amp;quot;diff-content&amp;quot;,Q=&amp;quot;diff-collapsed&amp;quot;;var Te=new Proxy(()=&amp;gt;{},{get:()=&amp;gt;Te,apply:()=&amp;gt;Te}),ut=Te;function gn(e,...t){if(typeof e==&amp;quot;function&amp;quot;)try{let n=e(...t);return n&amp;amp;&amp;amp;typeof n.then==&amp;quot;function&amp;quot;?n.then(i=&amp;gt;[i,null]).catch(i=&amp;gt;[null,i]):[n,null]}catch(n){return[null,n]}return e&amp;amp;&amp;amp;typeof e.then==&amp;quot;function&amp;quot;?e.then(n=&amp;gt;[n,null]).catch(n=&amp;gt;[null,n]):[e,null]}var pe=gn;var ht=new Map;async function dn(e,t){let n=await vn(e,t);return ht.set(n,t),n.on(&amp;quot;message&amp;quot;,mn.bind(null,n)),{run:async()=&amp;gt;await bn(n,&amp;quot;run&amp;quot;)}}async function vn(e,t){let n=new ut.Worker(e);return n.on(&amp;quot;error&amp;quot;,()=&amp;gt;t.log(&amp;quot;!Worker error!&amp;quot;)),new Promise(i=&amp;gt;{let s=r=&amp;gt;{r?.type===&amp;quot;ready&amp;quot;&amp;amp;&amp;amp;(n.off(&amp;quot;message&amp;quot;,s),i(n))};n.on(&amp;quot;message&amp;quot;,s)})}async function mn(e,t){let n=ht.get(e),{type:i,payload:s}=t;if(typeof n[i]!=&amp;quot;function&amp;quot;)return;let[r,o]=await pe(n[i],...s);o||e.postMessage({type:i,payload:r})}async function bn(e,t,n){return new Promise(i=&amp;gt;{let s=r=&amp;gt;{r.type===t&amp;amp;&amp;amp;(e.off(&amp;quot;message&amp;quot;,s),i(r.payload))};e.on(&amp;quot;message&amp;quot;,s),e.postMessage({type:t,payload:n})})}var pt=dn;var _t=new Map;async function wn(e,t){let n=await yn(e,t);return _t.set(n,t),n.addEventListener(&amp;quot;message&amp;quot;,kn.bind(null,n)),{run:async()=&amp;gt;await Dn(n,&amp;quot;run&amp;quot;)}}async function yn(e,t){let n;return window.mw?n=await Sn(e,t):n=new Worker(`data:application/javascript,importScripts(&#039;${e}?${Math.random()}&#039;);`),n&amp;amp;&amp;amp;n.addEventListener(&amp;quot;error&amp;quot;,()=&amp;gt;t.log(&amp;quot;!Worker error!&amp;quot;)),new Promise(i=&amp;gt;{let s=r=&amp;gt;{(r.data&amp;amp;&amp;amp;typeof r.data==&amp;quot;object&amp;quot;?r.data:{}).type===&amp;quot;ready&amp;quot;&amp;amp;&amp;amp;(n.removeEventListener(&amp;quot;message&amp;quot;,s),i(n))};n.addEventListener(&amp;quot;message&amp;quot;,s)})}async function kn(e,t){let n=_t.get(e),{type:i,payload:s}=t.data;if(typeof n[i]!=&amp;quot;function&amp;quot;)return;let[r,o]=await pe(n[i],...s);o||e.postMessage({type:i,payload:r})}async function Dn(e,t,n){return new Promise(i=&amp;gt;{let s=r=&amp;gt;{let o=r.data&amp;amp;&amp;amp;typeof r.data==&amp;quot;object&amp;quot;?r.data:{};o.type===t&amp;amp;&amp;amp;(e.removeEventListener(&amp;quot;message&amp;quot;,s),i(o.payload))};e.addEventListener(&amp;quot;message&amp;quot;,s),e.postMessage({type:t,payload:n})})}async function Sn(e,t){let n=mw.util.getUrl(e,{action:&amp;quot;raw&amp;quot;,ctype:&amp;quot;text/javascript&amp;quot;,v:Date.now()}),i=await fetch(n,{cache:&amp;quot;no-cache&amp;quot;});if(!i.ok){t.log(&amp;quot;!Failed to load wiki worker!&amp;quot;,i.statusText);return}let s=await i.text(),r=new Blob([s],{type:&amp;quot;application/javascript&amp;quot;}),o=URL.createObjectURL(r),a=new Worker(o);return URL.revokeObjectURL(o),a}var gt=wn;async function Mn(e,t){if(typeof e==&amp;quot;string&amp;quot;){let n=e;return typeof process&amp;lt;&amp;quot;u&amp;quot;&amp;amp;&amp;amp;process.versions?.node!==null?await pt(n,t):await gt(n,t)}else return await En(e,t)}async function En(e,t){return{run:()=&amp;gt;e(t)}}var dt=Mn;var vt=console.log,Pn=!1,An=[];function Tn(...e){if(Pn){let t=[];for(let n of e)t.push(typeof n==&amp;quot;object&amp;quot;?JSON.stringify(n,null,4):n);An.push(t.join(`&lt;br /&gt;
`))}vt(...e)}function mt(e){vt=e}var Le=Tn;async function Ln(e,t){mt(e.log),Le(&amp;quot;Beginning to parse...&amp;quot;);let n=Date.now(),s=await(await dt(t,e)).run();return Le(`Finished parsing in ${Date.now()-n} ms.`),s}var bt=Ln;async function Cn(e,t,n,i){return wt(e,&amp;quot;&amp;quot;,t,n,i)}async function wt(e,t,n,i,s){t+=t?&amp;quot;/&amp;quot;:&amp;quot;&amp;quot;;let r={},o=await Fn(e);for(let[a,l]of o){let c=t+a;if(!(i&amp;amp;&amp;amp;c.match(i))){if(l.kind===&amp;quot;directory&amp;quot;){let u=await wt(l,c,n,i,s);if(u instanceof File)return u;Object.assign(r,u)}else if(c.match(n)){let u=await l.getFile();if(s)return u;r[c]=u}}}return r}async function Fn(e){let t=[];try{for await(let n of e.entries())t.push(n)}catch{}return t}var yt=Cn;var kt;async function In(...e){let[t,n,i]=e;return await yt(kt,t,n,i)}function Nn(...e){L(...e)}function Hn(e){kt=e}var $n={find:In,log:Nn,setDirHandle:Hn},Ce=$n;async function Rn(e){return await e?.queryPermission()===&amp;quot;granted&amp;quot;}var Fe=Rn;var jn=new RegExp(&amp;quot;[ :]&amp;quot;);function On(e){if(e.match(jn)){L(&amp;quot;Path contains an illegal character!&amp;quot;,e);return}if(e.match(&amp;quot;/.*?/&amp;quot;)){L(&amp;quot;Path contains too many slashes!&amp;quot;,e);return}let t=e;return t=t.replace(/^Main\//,&amp;quot;&amp;quot;),t=t.replace(&amp;quot;/&amp;quot;,&amp;quot;:&amp;quot;),t=t.replaceAll(&amp;quot;~&amp;quot;,&amp;quot;/&amp;quot;),t=t.replaceAll(&amp;quot;_&amp;quot;,&amp;quot; &amp;quot;),t=t.replaceAll(&amp;quot;#&amp;quot;,&amp;quot;:&amp;quot;),t=t.replace(/\.lua$/,&amp;quot;&amp;quot;),t=t.replace(/\.wiki$/,&amp;quot;&amp;quot;),t}var _e=On;var Un=new Set([&amp;quot;Main&amp;quot;,&amp;quot;Data&amp;quot;,&amp;quot;Media&amp;quot;,&amp;quot;Special&amp;quot;,&amp;quot;Talk&amp;quot;,&amp;quot;User&amp;quot;,&amp;quot;User talk&amp;quot;,&amp;quot;Project&amp;quot;,&amp;quot;Project talk&amp;quot;,&amp;quot;File&amp;quot;,&amp;quot;File talk&amp;quot;,&amp;quot;MediaWiki&amp;quot;,&amp;quot;MediaWiki talk&amp;quot;,&amp;quot;Template&amp;quot;,&amp;quot;Template talk&amp;quot;,&amp;quot;Help&amp;quot;,&amp;quot;Help talk&amp;quot;,&amp;quot;Category&amp;quot;,&amp;quot;Category talk&amp;quot;,&amp;quot;Module&amp;quot;,&amp;quot;Module talk&amp;quot;]),Wn=new Set([&amp;quot;css&amp;quot;]),Bn=new RegExp(&amp;quot;~&amp;quot;);function Gn(e){e.match(Bn)&amp;amp;&amp;amp;L(&amp;quot;Title contains an illegal character!&amp;quot;,e);let{namespace:t,titleWithoutNamespace:n}=zn(e),i=n;return i=i.replaceAll(&amp;quot;/&amp;quot;,&amp;quot;~&amp;quot;),i=i.replaceAll(&amp;quot; &amp;quot;,&amp;quot;_&amp;quot;),i=i.replaceAll(&amp;quot;:&amp;quot;,&amp;quot;#&amp;quot;),i=Vn(i),i=Jn(i,t),t.replace(&amp;quot; &amp;quot;,&amp;quot;_&amp;quot;)+&amp;quot;/&amp;quot;+i}function zn(e){let[,t,n]=e.match(/(.*?):(.*)/)||[null,&amp;quot;&amp;quot;,e];return Un.has(t)||(t=&amp;quot;&amp;quot;,n=e),t=t||&amp;quot;Main&amp;quot;,{namespace:t,titleWithoutNamespace:n}}function Vn(e){let t=(e.match(/\.([a-zA-Z]+)$/)||[null,&amp;quot;&amp;quot;])[1].toLowerCase();return t===&amp;quot;url&amp;quot;?e.replace(/\.url$/,&amp;quot;&amp;quot;):Wn.has(t)?e:e+&amp;quot;.wiki&amp;quot;}function Jn(e,t){return t!==&amp;quot;Module&amp;quot;||e.endsWith(&amp;quot;~doc.wiki&amp;quot;)||e.endsWith(&amp;quot;.css&amp;quot;)?e:e.replace(&amp;quot;.wiki&amp;quot;,&amp;quot;.lua&amp;quot;)}var Dt=Gn;var Ie;async function ne(e){if(!Ie){console.log(&amp;quot;Please call applySettings() prior to asking!&amp;quot;);return}let t={method:Zn(e)},n=new URL(Ie.API_URL),i=Kn(e);t.method===&amp;quot;GET&amp;quot;?n.search=i.toString():t.body=i;let[s,r]=await x(fetch(n,t));if(!s){L(&amp;quot;Failed to fetch!&amp;quot;,r);return}let[o,a]=await x(s.json());if(!o){L(&amp;quot;Invalid json!&amp;quot;,a);return}return o}function St(e){let{API_URL:t}=e;Ie={API_URL:t}}function Zn(e){return!e.method||e.method===&amp;quot;GET&amp;quot;?&amp;quot;GET&amp;quot;:&amp;quot;POST&amp;quot;}function Kn(e){let t={...e,format:&amp;quot;json&amp;quot;,formatversion:2},{method:n}=t;if(delete t.method,n===&amp;quot;FORM&amp;quot;){let i=new FormData;for(let s in t){let r=t[s];Array.isArray(r)?i.append(s,r[0],r[1]):i.append(s,r)}return i}return new URLSearchParams(t)}var Mt=50;async function qn(e){let t=Object.keys(e).map(s=&amp;gt;_e(s)),n=await Qn(t);if(!n)return;let i={};for(let s in n){let r=Dt(s);r&amp;amp;&amp;amp;(n[s]===void 0?L(&amp;quot;Invalid page content!&amp;quot;,s):i[r]=n[s])}return L(`Retrieved ${Object.keys(i).length} pages.`),i}async function Qn(e){let t={};for(let n=0;n&amp;lt;e.length;n+=Mt){let i=Math.min(n+Mt,e.length),s=e.slice(n,i);L(`Retrieving ${n+1}-${i} of ${e.length} pages (${s[0]})...`);let r=await ne({action:&amp;quot;query&amp;quot;,prop:&amp;quot;revisions&amp;quot;,rvprop:&amp;quot;content&amp;quot;,rvslots:&amp;quot;main&amp;quot;,titles:s.join(&amp;quot;|&amp;quot;),origin:&amp;quot;*&amp;quot;});if(!r)continue;let o=r.query?.pages||[];for(let a of o)a.missing||(t[a.title]=a.revisions?.[0]?.slots?.main?.content)}return t}var Et=qn;var Xn=ue`&lt;br /&gt;
    html, body {&lt;br /&gt;
        padding: 0;&lt;br /&gt;
        margin: 0;&lt;br /&gt;
        height: 100%;&lt;br /&gt;
        font-size: 13px;&lt;br /&gt;
        font-family: &amp;quot;JetBrains Mono&amp;quot;, monospace;&lt;br /&gt;
    }&lt;br /&gt;
&lt;br /&gt;
    .${ee} pre {&lt;br /&gt;
        font-family: &amp;quot;JetBrains Mono&amp;quot;, monospace;&lt;br /&gt;
        white-space: pre-wrap;&lt;br /&gt;
    }&lt;br /&gt;
&lt;br /&gt;
    .${R} {&lt;br /&gt;
        font-weight: bold;&lt;br /&gt;
        background: silver;&lt;br /&gt;
        padding: 8px;&lt;br /&gt;
        cursor: pointer;&lt;br /&gt;
    }&lt;br /&gt;
&lt;br /&gt;
    .${he} {&lt;br /&gt;
        float: right;&lt;br /&gt;
        border: solid 1px rgba(0, 0, 0, 0.5);&lt;br /&gt;
        border-radius: 4px;&lt;br /&gt;
        padding: 4px;&lt;br /&gt;
        margin-right: -5px;&lt;br /&gt;
        margin-top: -5px;&lt;br /&gt;
    }&lt;br /&gt;
&lt;br /&gt;
    .${R}.${te} {&lt;br /&gt;
        background: rgba(0, 0, 255, 0.2);&lt;br /&gt;
        border-top: solid 1px rgba(0, 0, 255, 0.4);&lt;br /&gt;
    }&lt;br /&gt;
&lt;br /&gt;
    .${R}.${K} {&lt;br /&gt;
        background: rgba(0, 255, 0, 0.2);&lt;br /&gt;
        border-top: solid 1px rgba(0, 255, 0, 0.4);&lt;br /&gt;
    }&lt;br /&gt;
&lt;br /&gt;
    .${R}.${q} {&lt;br /&gt;
        background: rgba(255, 100, 0, 0.2);&lt;br /&gt;
        border-top: solid 1px rgba(255, 100, 0, 0.4);&lt;br /&gt;
    }&lt;br /&gt;
&lt;br /&gt;
    .${B} {&lt;br /&gt;
        display: flex;&lt;br /&gt;
        flex-direction: row;&lt;br /&gt;
    }&lt;br /&gt;
&lt;br /&gt;
    .${B}.${Q} {&lt;br /&gt;
        display: none;&lt;br /&gt;
    }&lt;br /&gt;
&lt;br /&gt;
    .${B} pre {&lt;br /&gt;
        margin: 0;&lt;br /&gt;
        flex: 1;&lt;br /&gt;
        min-width: 0;&lt;br /&gt;
        padding: 8px;&lt;br /&gt;
    }&lt;br /&gt;
&lt;br /&gt;
    .${B} pre:nth-child(2) {&lt;br /&gt;
        border-left: solid 2px rgba(255, 100, 0, 0.2);&lt;br /&gt;
    }&lt;br /&gt;
&lt;br /&gt;
    del {&lt;br /&gt;
        background: #f5a7a7;&lt;br /&gt;
        text-decoration: none;&lt;br /&gt;
        outline: solid 1px #f5a7a7;&lt;br /&gt;
    }&lt;br /&gt;
&lt;br /&gt;
    ins {&lt;br /&gt;
        background: #BEE6BE;&lt;br /&gt;
        text-decoration: none;&lt;br /&gt;
        outline: solid 1px #BEE6BE;&lt;br /&gt;
    }&lt;br /&gt;
`,Pt=Xn;var ge=Bt(At(),1),Yn=new ge.default;function xn(e,t){let n=Tt(e),i=Tt(t),s=Yn.diff_main(n,i),r=[],o=[];for(let[u,p]of s)switch(u){case ge.default.DIFF_DELETE:r.push(&amp;quot;&amp;lt;del&amp;gt;&amp;quot;+p+&amp;quot;&amp;lt;/del&amp;gt;&amp;quot;),o.push(&amp;quot;&amp;lt;del&amp;gt;&amp;lt;/del&amp;gt;&amp;quot;);break;case ge.default.DIFF_INSERT:r.push(&amp;quot;&amp;lt;ins&amp;gt;&amp;lt;/ins&amp;gt;&amp;quot;),o.push(&amp;quot;&amp;lt;ins&amp;gt;&amp;quot;+p+&amp;quot;&amp;lt;/ins&amp;gt;&amp;quot;);break;default:r.push(p),o.push(p)}let a=r.join(&amp;quot;&amp;quot;).replaceAll(&amp;quot;&amp;lt;/del&amp;gt;&amp;lt;ins&amp;gt;&amp;lt;/ins&amp;gt;&amp;quot;,&amp;quot;&amp;lt;/del&amp;gt;&amp;quot;),l=o.join(&amp;quot;&amp;quot;).replaceAll(&amp;quot;&amp;lt;del&amp;gt;&amp;lt;/del&amp;gt;&amp;lt;ins&amp;gt;&amp;quot;,&amp;quot;&amp;lt;ins&amp;gt;&amp;quot;),c=l.split(&amp;quot;&amp;lt;&amp;quot;).length-1;return{text1:a,text2:l,differences:c/2}}function Tt(e){return e.split(&amp;quot;&amp;amp;&amp;quot;).join(&amp;quot;&amp;amp;amp;&amp;quot;).split(&amp;quot;&amp;lt;&amp;quot;).join(&amp;quot;&amp;amp;lt;&amp;quot;).split(&amp;quot;&amp;gt;&amp;quot;).join(&amp;quot;&amp;amp;gt;&amp;quot;)}var Lt=xn;var er={[te]:&amp;quot;new&amp;quot;,[K]:&amp;quot;identical&amp;quot;,[q]:&amp;quot;changed&amp;quot;};function tr(e,t,n){let i=[];for(let r in t){let o=t[r],a=e[r];if(a!==void 0){let{text1:c,text2:u}=Lt(a,o);a=c,o=u}else o=rr(o);let l=nr(r,a,o);i.push(...l)}n.innerHTML=i.join(&amp;quot;&amp;quot;),Array.from(n.querySelectorAll(&amp;quot;.&amp;quot;+R)).map(r=&amp;gt;r.addEventListener(&amp;quot;click&amp;quot;,ir)),sr(n)}function nr(e,t,n){let i=t===void 0?te:t===n?K:q,s=`&amp;lt;div class=&amp;quot;${he}&amp;quot;&amp;gt;${er[i]}&amp;lt;/div&amp;gt;`,r=i===K?Q:&amp;quot;&amp;quot;,o=[];return o.push(`&amp;lt;div class=&amp;quot;${R} ${i}&amp;quot;&amp;gt;${s}${e}&amp;lt;/div&amp;gt;`),o.push(`&amp;lt;div class=&amp;quot;${B} ${r}&amp;quot;&amp;gt;`),i===q&amp;amp;&amp;amp;o.push(`&amp;lt;pre&amp;gt;${t}&amp;lt;/pre&amp;gt;`),o.push(`&amp;lt;pre&amp;gt;${n}&amp;lt;/pre&amp;gt;`),o.push(&amp;quot;&amp;lt;/div&amp;gt;&amp;quot;),o}function rr(e){return e.split(&amp;quot;&amp;amp;&amp;quot;).join(&amp;quot;&amp;amp;amp;&amp;quot;).split(&amp;quot;&amp;lt;&amp;quot;).join(&amp;quot;&amp;amp;lt;&amp;quot;).split(&amp;quot;&amp;gt;&amp;quot;).join(&amp;quot;&amp;amp;gt;&amp;quot;)}function ir(e){e.currentTarget.nextElementSibling.classList.toggle(Q)}function sr(e){let t=e.querySelectorAll(&amp;quot;.&amp;quot;+R);for(let n of t)if(!n.nextElementSibling.classList.contains(Q)){n.scrollIntoView({behavior:&amp;quot;smooth&amp;quot;,block:&amp;quot;start&amp;quot;});break}}var Ct=tr;function or(e,t){let n=window.open(&amp;quot;&amp;quot;,&amp;quot;Preview&amp;quot;);if(!n)return;let i=n.document;i.open(),i.write(`&lt;br /&gt;
        &amp;lt;!DOCTYPE html&amp;gt;&lt;br /&gt;
        &amp;lt;html lang=&amp;quot;en&amp;quot;&amp;gt;&lt;br /&gt;
        &amp;lt;head&amp;gt;&lt;br /&gt;
            &amp;lt;title&amp;gt;Preview&amp;lt;/title&amp;gt;&lt;br /&gt;
            &amp;lt;style&amp;gt;${Pt}&amp;lt;/style&amp;gt;&lt;br /&gt;
        &amp;lt;/head&amp;gt;&lt;br /&gt;
        &amp;lt;body&amp;gt;&lt;br /&gt;
            &amp;lt;div class=&#039;${ee}&#039;&amp;gt;&amp;lt;/div&amp;gt;&lt;br /&gt;
        &amp;lt;/body&amp;gt;&lt;br /&gt;
        &amp;lt;/html&amp;gt;&lt;br /&gt;
    `),i.close(),Ct(e||{},t,i.querySelector(&amp;quot;.&amp;quot;+ee))}var Ft=or;async function ar(e,t){let n=lr(e,t);if(!n.length)return L(&amp;quot;All pages are already updated.&amp;quot;),!0;let i=await cr();if(!i)return L(&amp;quot;Cannot get csrf token!&amp;quot;),!1;let s=0;for(let{title:r,content:o}of n)await fr(r,o,i)&amp;amp;&amp;amp;s++;return L(`Successfully saved ${s} pages.`),!0}function lr(e,t){let n=[];t=t||{};for(let i in e){let s=e[i],r=t[i];if(s!==r){let o=_e(i);n.push({title:o,content:s})}}return n}async function cr(){return(await ne({action:&amp;quot;query&amp;quot;,meta:&amp;quot;tokens&amp;quot;}))?.query?.tokens?.csrftoken}async function fr(e,t,n){return L(`Saving content for &amp;quot;${e}&amp;quot;...`),(await ne({method:&amp;quot;POST&amp;quot;,action:&amp;quot;edit&amp;quot;,title:e,text:t,token:n}))?.edit?.result!==&amp;quot;Success&amp;quot;?(L(&amp;quot;Save failed!&amp;quot;,e,t),!1):!0}var It=ar;var ur=$`&lt;br /&gt;
    color: #fff;&lt;br /&gt;
`,de=$`&lt;br /&gt;
    padding: 16px;&lt;br /&gt;
    border-top: solid 1px #cbced1;&lt;br /&gt;
    &amp;amp;:first-child {&lt;br /&gt;
        border: none;&lt;br /&gt;
    }&lt;br /&gt;
`,ve=$`&lt;br /&gt;
    font-size: 150%;&lt;br /&gt;
    font-weight: bold;&lt;br /&gt;
    color: #c8b36c;&lt;br /&gt;
`,me=$`&lt;br /&gt;
    margin-top: 8px;&lt;br /&gt;
`,be=$`&lt;br /&gt;
    &amp;amp;:after {&lt;br /&gt;
        content: &#039; ✅&#039;;&lt;br /&gt;
    }&lt;br /&gt;
`,hr=$`&lt;br /&gt;
    &amp;amp;:after {&lt;br /&gt;
        content: &#039; ⚠️&#039;;&lt;br /&gt;
    }&lt;br /&gt;
`,pr=&amp;quot;MediaWiki:ParseCore.js&amp;quot;,Ne=class extends z{vars={logRef:ze(),dirHandle:null};state={busy:0,hasDirAccess:!1,parsedHub:null,mirrorHub:null,isPreviewed:!1,isSaved:!1};render(){let{logRef:t}=this.vars,{busy:n,hasDirAccess:i,isPreviewed:s,isSaved:r,mirrorHub:o}=this.state;return k(&amp;quot;div&amp;quot;,{class:ur,children:[k(&amp;quot;div&amp;quot;,{class:de,children:[k(&amp;quot;div&amp;quot;,{class:ve,children:&amp;quot;1. Select game data directory&amp;quot;}),k(&amp;quot;div&amp;quot;,{children:&amp;quot;Give read-access to the local install directory of the game so the parser can choose what files it needs.&amp;quot;}),k(&amp;quot;div&amp;quot;,{class:me,children:k(&amp;quot;button&amp;quot;,{disabled:!!n,class:i?be:hr,onClick:this.onPickDirectoryClick,children:&amp;quot;Pick directory&amp;quot;})})]}),k(&amp;quot;div&amp;quot;,{class:de,children:[k(&amp;quot;div&amp;quot;,{class:ve,children:&amp;quot;2. Retrieve wiki data pages&amp;quot;}),k(&amp;quot;div&amp;quot;,{children:[&amp;quot;Temporarily download all relevant data pages from this wiki so they can be used as a comparison base. &amp;quot;,k(&amp;quot;br&amp;quot;,{}),&amp;quot;This step is optional, but recommended, because it gives awareness in the following steps and reduces the number of updates needed.&amp;quot;]}),k(&amp;quot;div&amp;quot;,{class:me,children:k(&amp;quot;button&amp;quot;,{disabled:!!n||!i,class:o&amp;amp;&amp;amp;be,onClick:this.onRetrieveClick,children:[&amp;quot;Retrieve &amp;quot;,n===2&amp;amp;&amp;amp;k(&amp;quot;progress&amp;quot;,{})]})})]}),k(&amp;quot;div&amp;quot;,{class:de,children:[k(&amp;quot;div&amp;quot;,{class:ve,children:&amp;quot;3. Preview changes&amp;quot;}),k(&amp;quot;div&amp;quot;,{children:&amp;quot;Open a popup window listing each page that is about to be updated, potentially highlighting differences.&amp;quot;}),k(&amp;quot;div&amp;quot;,{class:me,children:k(&amp;quot;button&amp;quot;,{disabled:!!n||!i||!o,class:s&amp;amp;&amp;amp;be,onClick:this.onPreviewClick,children:[&amp;quot;Preview &amp;quot;,n===3&amp;amp;&amp;amp;k(&amp;quot;progress&amp;quot;,{})]})})]}),k(&amp;quot;div&amp;quot;,{class:de,children:[k(&amp;quot;div&amp;quot;,{class:ve,children:&amp;quot;4. Save changes&amp;quot;}),k(&amp;quot;div&amp;quot;,{children:&amp;quot;Write the changes to each page using the current account, just as if you had done them manually.&amp;quot;}),k(&amp;quot;div&amp;quot;,{class:me,children:k(&amp;quot;button&amp;quot;,{disabled:!!n||!i,class:r&amp;amp;&amp;amp;be,onClick:this.onSaveClick,children:[&amp;quot;SAVE &amp;quot;,n===4&amp;amp;&amp;amp;k(&amp;quot;progress&amp;quot;,{})]})})]}),&amp;quot;Log:&amp;quot;,k(&amp;quot;div&amp;quot;,{ref:t})]})}async componentDidMount(){let{logRef:t}=this.vars;ot(t.current),L(&amp;quot;Initialized.&amp;quot;);let n=this.vars.dirHandle=await lt(Ae),i=await Fe(n);this.setState({hasDirAccess:i}),St({API_URL:document.location.href.replace(/[^\/]*$/,&amp;quot;&amp;quot;)+&amp;quot;api.php&amp;quot;})}onPickDirectoryClick=async()=&amp;gt;{let{hasDirAccess:t}=this.state,{dirHandle:n}=this.vars,i=!1;if(n?t?i=!0:await n.requestPermission():i=!0,i){let[s]=await x(window.showDirectoryPicker,{mode:&amp;quot;read&amp;quot;});n=this.vars.dirHandle=s,await ct(Ae,n)}t=await Fe(n),t||this.setState({parsedHub:null,mirrorHub:null,isPreviewed:!1,isSaved:!1}),this.setState({hasDirAccess:t})};onRetrieveClick=async()=&amp;gt;{await this.ensureParsedHub(2);let t=await Et(this.state.parsedHub);this.setState({mirrorHub:t})};onPreviewClick=async()=&amp;gt;{await this.ensureParsedHub(3);let{mirrorHub:t,parsedHub:n}=this.state;Ft(t,n),this.setState({isPreviewed:!0})};onSaveClick=async()=&amp;gt;{await this.ensureParsedHub(4);let{mirrorHub:t,parsedHub:n}=this.state;this.setState({busy:4});let i=await It(n,t);this.setState({busy:0,isSaved:i})};ensureParsedHub=async t=&amp;gt;{this.state.parsedHub||(this.setState({busy:t}),Ce.setDirHandle(this.vars.dirHandle),this.setState({busy:0,parsedHub:await bt(Ce,pr)}))}},Nt=Ne;function _r(){nt(Nt,&amp;quot;.update-tool&amp;quot;,0)}_r();})();&lt;/div&gt;</summary>
		<author><name>76561198048502585</name></author>
	</entry>
	<entry>
		<id>https://wiki.hoodedhorse.com/Heroes_of_Might_and_Magic_Olden_Era/index.php?title=Data:Update&amp;diff=41539</id>
		<title>Data:Update</title>
		<link rel="alternate" type="text/html" href="https://wiki.hoodedhorse.com/Heroes_of_Might_and_Magic_Olden_Era/index.php?title=Data:Update&amp;diff=41539"/>
		<updated>2026-10-13T15:36:14Z</updated>

		<summary type="html">&lt;p&gt;76561198048502585: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;Use this page to update the wiki with information taken directly from the game&#039;s install directory:&lt;br /&gt;
* Windows: &amp;lt;code&amp;gt;C:\Program Files (x86)\Steam\steamapps\common\Heroes of Might and Magic Olden Era&amp;lt;/code&amp;gt;&lt;br /&gt;
* Linux: &amp;lt;code&amp;gt;/home/user/.steam/debian-installation/steamapps/common/Heroes of Might and Magic Olden Era&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==Steps==&lt;br /&gt;
&amp;lt;div class=&#039;update-tool&#039;&amp;gt;&amp;lt;/div&amp;gt;&lt;/div&gt;</summary>
		<author><name>76561198048502585</name></author>
	</entry>
	<entry>
		<id>https://wiki.hoodedhorse.com/Heroes_of_Might_and_Magic_Olden_Era/index.php?title=MediaWiki:DiffTool.js&amp;diff=41538</id>
		<title>MediaWiki:DiffTool.js</title>
		<link rel="alternate" type="text/html" href="https://wiki.hoodedhorse.com/Heroes_of_Might_and_Magic_Olden_Era/index.php?title=MediaWiki:DiffTool.js&amp;diff=41538"/>
		<updated>2026-10-13T15:06:34Z</updated>

		<summary type="html">&lt;p&gt;76561198048502585: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;//Source:https://github.com/Aurelain/oe-wiki/tree/main/src/diff&lt;br /&gt;
(()=&amp;gt;{var I,d,_e,Ce,x,te,le,ie,z,D,F,se,J,Z,G,Pe,O={},H=[],Se=/acit|ex(?:s|g|n|p|$)|rph|grid|ows|mnc|ntw|ine[ch]|zoo|^ord|itera/i,$=Array.isArray;function w(t,e){for(var n in e)t[n]=e[n];return t}function K(t){t&amp;amp;&amp;amp;t.parentNode&amp;amp;&amp;amp;t.parentNode.removeChild(t)}function je(t,e,n){var i,_,r,l={};for(r in e)r==&amp;quot;key&amp;quot;?i=e[r]:r==&amp;quot;ref&amp;quot;?_=e[r]:l[r]=e[r];if(arguments.length&amp;gt;2&amp;amp;&amp;amp;(l.children=arguments.length&amp;gt;3?I.call(arguments,2):n),typeof t==&amp;quot;function&amp;quot;&amp;amp;&amp;amp;t.defaultProps!=null)for(r in t.defaultProps)l[r]===void 0&amp;amp;&amp;amp;(l[r]=t.defaultProps[r]);return W(t,l,i,_,null)}function W(t,e,n,i,_){var r={type:t,props:e,key:n,ref:i,__k:null,__:null,__b:0,__e:null,__c:null,constructor:void 0,__v:_??++_e,__i:-1,__u:0};return _==null&amp;amp;&amp;amp;d.vnode!=null&amp;amp;&amp;amp;d.vnode(r),r}function A(t){return t.children}function T(t,e){this.props=t,this.context=e}function S(t,e){if(e==null)return t.__?S(t.__,t.__i+1):null;for(var n;e&amp;lt;t.__k.length;e++)if((n=t.__k[e])!=null&amp;amp;&amp;amp;n.__e!=null)return n.__e;return typeof t.type==&amp;quot;function&amp;quot;?S(t):null}function Ee(t){if(t.__P&amp;amp;&amp;amp;t.__d){var e=t.__v,n=e.__e,i=[],_=[],r=w({},e);r.__v=e.__v+1,d.vnode&amp;amp;&amp;amp;d.vnode(r),Q(t.__P,r,e,t.__n,t.__P.namespaceURI,32&amp;amp;e.__u?[n]:null,i,n??S(e),!!(32&amp;amp;e.__u),_),r.__v=e.__v,r.__.__k[r.__i]=r,pe(i,r,_),e.__e=e.__=null,r.__e!=n&amp;amp;&amp;amp;ae(r)}}function ae(t){if((t=t.__)!=null&amp;amp;&amp;amp;t.__c!=null)return t.__e=t.__c.base=null,t.__k.some(function(e){if(e!=null&amp;amp;&amp;amp;e.__e!=null)return t.__e=t.__c.base=e.__e}),ae(t)}function ne(t){(!t.__d&amp;amp;&amp;amp;(t.__d=!0)&amp;amp;&amp;amp;x.push(t)&amp;amp;&amp;amp;!R.__r++||te!=d.debounceRendering)&amp;amp;&amp;amp;((te=d.debounceRendering)||le)(R)}function R(){try{for(var t,e=1;x.length;)x.length&amp;gt;e&amp;amp;&amp;amp;x.sort(ie),t=x.shift(),e=x.length,Ee(t)}finally{x.length=R.__r=0}}function ce(t,e,n,i,_,r,l,a,c,s,u){var h,o,f,m,g,v,y=i&amp;amp;&amp;amp;i.__k||H,p=e.length;for(c=Te(n,e,y,c,p),h=0;h&amp;lt;p;h++)(f=n.__k[h])!=null&amp;amp;&amp;amp;(o=f.__i!=-1&amp;amp;&amp;amp;y[f.__i]||O,f.__i=h,v=Q(t,f,o,_,r,l,a,c,s,u),m=f.__e,f.ref&amp;amp;&amp;amp;o.ref!=f.ref&amp;amp;&amp;amp;(o.ref&amp;amp;&amp;amp;X(o.ref,null,f),u.push(f.ref,f.__c||m,f)),g==null&amp;amp;&amp;amp;m!=null&amp;amp;&amp;amp;(g=m),4&amp;amp;f.__u?(c=ue(f,c,t),o.__e&amp;amp;&amp;amp;(o.__e=null)):typeof f.type==&amp;quot;function&amp;quot;&amp;amp;&amp;amp;v!==void 0?c=v:m&amp;amp;&amp;amp;(c=m.nextSibling),f.__u&amp;amp;=-7);return n.__e=g,c}function Te(t,e,n,i,_){var r,l,a,c,s,u=n.length,h=u,o=0;for(t.__k=new Array(_),r=0;r&amp;lt;_;r++)(l=e[r])!=null&amp;amp;&amp;amp;typeof l!=&amp;quot;boolean&amp;quot;&amp;amp;&amp;amp;typeof l!=&amp;quot;function&amp;quot;?(typeof l==&amp;quot;string&amp;quot;||typeof l==&amp;quot;number&amp;quot;||typeof l==&amp;quot;bigint&amp;quot;||l.constructor==String?l=t.__k[r]=W(null,l,null,null,null):$(l)?l=t.__k[r]=W(A,{children:l},null,null,null):l.constructor===void 0&amp;amp;&amp;amp;l.__b&amp;gt;0?l=t.__k[r]=W(l.type,l.props,l.key,l.ref?l.ref:null,l.__v):t.__k[r]=l,c=r+o,l.__=t,l.__b=t.__b+1,a=null,(s=l.__i=Ae(l,n,c,h))!=-1&amp;amp;&amp;amp;(h--,(a=n[s])&amp;amp;&amp;amp;(a.__u|=2)),a==null||a.__v==null?(s==-1&amp;amp;&amp;amp;(_&amp;gt;u?o--:_&amp;lt;u&amp;amp;&amp;amp;o++),typeof l.type!=&amp;quot;function&amp;quot;&amp;amp;&amp;amp;(l.__u|=4)):s!=c&amp;amp;&amp;amp;(s==c-1?o--:s==c+1?o++:(s&amp;gt;c?o--:o++,l.__u|=4))):t.__k[r]=null;if(h)for(r=0;r&amp;lt;u;r++)(a=n[r])!=null&amp;amp;&amp;amp;(2&amp;amp;a.__u)==0&amp;amp;&amp;amp;(a.__e==i&amp;amp;&amp;amp;(i=S(a)),he(a,a));return i}function ue(t,e,n){var i,_;if(typeof t.type==&amp;quot;function&amp;quot;){for(i=t.__k,_=0;i&amp;amp;&amp;amp;_&amp;lt;i.length;_++)i[_]&amp;amp;&amp;amp;(i[_].__=t,e=ue(i[_],e,n));return e}t.__e!=e&amp;amp;&amp;amp;(e&amp;amp;&amp;amp;t.type&amp;amp;&amp;amp;!e.parentNode&amp;amp;&amp;amp;(e=S(t)),e=n.insertBefore(t.__e,e||null));do e=e&amp;amp;&amp;amp;e.nextSibling;while(e!=null&amp;amp;&amp;amp;e.nodeType==8);return e}function Ae(t,e,n,i){var _,r,l,a=t.key,c=t.type,s=e[n],u=s!=null&amp;amp;&amp;amp;(2&amp;amp;s.__u)==0;if(s===null&amp;amp;&amp;amp;a==null||u&amp;amp;&amp;amp;a==s.key&amp;amp;&amp;amp;c==s.type)return n;if(i&amp;gt;(u?1:0)){for(_=n-1,r=n+1;_&amp;gt;=0||r&amp;lt;e.length;)if((s=e[l=_&amp;gt;=0?_--:r++])!=null&amp;amp;&amp;amp;(2&amp;amp;s.__u)==0&amp;amp;&amp;amp;a==s.key&amp;amp;&amp;amp;c==s.type)return l}return-1}function re(t,e,n){e[0]==&amp;quot;-&amp;quot;?t.setProperty(e,n??&amp;quot;&amp;quot;):t[e]=n==null?&amp;quot;&amp;quot;:typeof n!=&amp;quot;number&amp;quot;||Se.test(e)?n:n+&amp;quot;px&amp;quot;}function N(t,e,n,i,_){var r,l;e:if(e==&amp;quot;style&amp;quot;)if(typeof n==&amp;quot;string&amp;quot;)t.style.cssText=n;else{if(typeof i==&amp;quot;string&amp;quot;&amp;amp;&amp;amp;(t.style.cssText=i=&amp;quot;&amp;quot;),i)for(e in i)n&amp;amp;&amp;amp;e in n||re(t.style,e,&amp;quot;&amp;quot;);if(n)for(e in n)i&amp;amp;&amp;amp;n[e]==i[e]||re(t.style,e,n[e])}else if(e[0]==&amp;quot;o&amp;quot;&amp;amp;&amp;amp;e[1]==&amp;quot;n&amp;quot;)r=e!=(e=e.replace(se,&amp;quot;$1&amp;quot;)),l=e.toLowerCase(),e=l in t||e==&amp;quot;onFocusOut&amp;quot;||e==&amp;quot;onFocusIn&amp;quot;?l.slice(2):e.slice(2),t.l||(t.l={}),t.l[e+r]=n,n?i?n[F]=i[F]:(n[F]=J,t.addEventListener(e,r?G:Z,r)):t.removeEventListener(e,r?G:Z,r);else{if(_==&amp;quot;http://www.w3.org/2000/svg&amp;quot;)e=e.replace(/xlink(H|:h)/,&amp;quot;h&amp;quot;).replace(/sName$/,&amp;quot;s&amp;quot;);else if(e!=&amp;quot;width&amp;quot;&amp;amp;&amp;amp;e!=&amp;quot;height&amp;quot;&amp;amp;&amp;amp;e!=&amp;quot;href&amp;quot;&amp;amp;&amp;amp;e!=&amp;quot;list&amp;quot;&amp;amp;&amp;amp;e!=&amp;quot;form&amp;quot;&amp;amp;&amp;amp;e!=&amp;quot;tabIndex&amp;quot;&amp;amp;&amp;amp;e!=&amp;quot;download&amp;quot;&amp;amp;&amp;amp;e!=&amp;quot;rowSpan&amp;quot;&amp;amp;&amp;amp;e!=&amp;quot;colSpan&amp;quot;&amp;amp;&amp;amp;e!=&amp;quot;role&amp;quot;&amp;amp;&amp;amp;e!=&amp;quot;popover&amp;quot;&amp;amp;&amp;amp;e in t)try{t[e]=n??&amp;quot;&amp;quot;;break e}catch{}typeof n==&amp;quot;function&amp;quot;||(n==null||n===!1&amp;amp;&amp;amp;e[4]!=&amp;quot;-&amp;quot;?t.removeAttribute(e):t.setAttribute(e,e==&amp;quot;popover&amp;quot;&amp;amp;&amp;amp;n==1?&amp;quot;&amp;quot;:n))}}function oe(t){return function(e){if(this.l){var n=this.l[e.type+t];if(e[D]==null)e[D]=J++;else if(e[D]&amp;lt;n[F])return;return n(d.event?d.event(e):e)}}}function Q(t,e,n,i,_,r,l,a,c,s){var u,h,o,f,m,g,v,y,p,b,M,P,U,ee,L,B,k=e.type;if(e.constructor!==void 0)return null;128&amp;amp;n.__u&amp;amp;&amp;amp;(c=!!(32&amp;amp;n.__u),r=[a=e.__e=n.__e]),(u=d.__b)&amp;amp;&amp;amp;u(e);e:if(typeof k==&amp;quot;function&amp;quot;){h=l.length;try{if(p=e.props,b=k.prototype&amp;amp;&amp;amp;k.prototype.render,M=(u=k.contextType)&amp;amp;&amp;amp;i[u.__c],P=u?M?M.props.value:u.__:i,n.__c?y=(o=e.__c=n.__c).__=o.__E:(b?e.__c=o=new k(p,P):(e.__c=o=new T(p,P),o.constructor=k,o.render=Ue),M&amp;amp;&amp;amp;M.sub(o),o.state||(o.state={}),o.__n=i,f=o.__d=!0,o.__h=[],o._sb=[]),b&amp;amp;&amp;amp;o.__s==null&amp;amp;&amp;amp;(o.__s=o.state),b&amp;amp;&amp;amp;k.getDerivedStateFromProps!=null&amp;amp;&amp;amp;(o.__s==o.state&amp;amp;&amp;amp;(o.__s=w({},o.__s)),w(o.__s,k.getDerivedStateFromProps(p,o.__s))),m=o.props,g=o.state,o.__v=e,f)b&amp;amp;&amp;amp;k.getDerivedStateFromProps==null&amp;amp;&amp;amp;o.componentWillMount!=null&amp;amp;&amp;amp;o.componentWillMount(),b&amp;amp;&amp;amp;o.componentDidMount!=null&amp;amp;&amp;amp;o.__h.push(o.componentDidMount);else{if(b&amp;amp;&amp;amp;k.getDerivedStateFromProps==null&amp;amp;&amp;amp;p!==m&amp;amp;&amp;amp;o.componentWillReceiveProps!=null&amp;amp;&amp;amp;o.componentWillReceiveProps(p,P),e.__v==n.__v||!o.__e&amp;amp;&amp;amp;o.shouldComponentUpdate!=null&amp;amp;&amp;amp;o.shouldComponentUpdate(p,o.__s,P)===!1){e.__v!=n.__v&amp;amp;&amp;amp;(o.props=p,o.state=o.__s,o.__d=!1),e.__e=n.__e,e.__k=n.__k,e.__k.some(function(E){E&amp;amp;&amp;amp;(E.__=e)}),H.push.apply(o.__h,o._sb),o._sb=[],o.__h.length&amp;amp;&amp;amp;l.push(o),a=S(n);break e}o.componentWillUpdate!=null&amp;amp;&amp;amp;o.componentWillUpdate(p,o.__s,P),b&amp;amp;&amp;amp;o.componentDidUpdate!=null&amp;amp;&amp;amp;o.__h.push(function(){o.componentDidUpdate(m,g,v)})}if(o.context=P,o.props=p,o.__P=t,o.__e=!1,U=d.__r,ee=0,b)o.state=o.__s,o.__d=!1,U&amp;amp;&amp;amp;U(e),u=o.render(o.props,o.state,o.context),H.push.apply(o.__h,o._sb),o._sb=[];else do o.__d=!1,U&amp;amp;&amp;amp;U(e),u=o.render(o.props,o.state,o.context),o.state=o.__s;while(o.__d&amp;amp;&amp;amp;++ee&amp;lt;25);o.state=o.__s,o.getChildContext!=null&amp;amp;&amp;amp;(i=w(w({},i),o.getChildContext())),b&amp;amp;&amp;amp;!f&amp;amp;&amp;amp;o.getSnapshotBeforeUpdate!=null&amp;amp;&amp;amp;(v=o.getSnapshotBeforeUpdate(m,g)),L=u!=null&amp;amp;&amp;amp;u.type===A&amp;amp;&amp;amp;u.key==null?de(u.props.children):u,a=ce(t,$(L)?L:[L],e,n,i,_,r,l,a,c,s),o.base=e.__e,e.__u&amp;amp;=-161,o.__h.length&amp;amp;&amp;amp;l.push(o),y&amp;amp;&amp;amp;(o.__E=o.__=null)}catch(E){if(l.length=h,e.__v=null,c||r!=null){if(E.then){for(e.__u|=c?160:128;a&amp;amp;&amp;amp;a.nodeType==8&amp;amp;&amp;amp;a.nextSibling;)a=a.nextSibling;r!=null&amp;amp;&amp;amp;(r[r.indexOf(a)]=null),e.__e=a}else if(r!=null)for(B=r.length;B--;)K(r[B])}else e.__e=n.__e;e.__k==null&amp;amp;&amp;amp;(e.__k=n.__k||[]),E.then||fe(e),d.__e(E,e,n)}}else r==null&amp;amp;&amp;amp;e.__v==n.__v?(e.__k=n.__k,e.__e=n.__e):a=e.__e=Me(n.__e,e,n,i,_,r,l,c,s);return(u=d.diffed)&amp;amp;&amp;amp;u(e),128&amp;amp;e.__u?void 0:a}function fe(t){t&amp;amp;&amp;amp;(t.__c&amp;amp;&amp;amp;(t.__c.__e=!0),t.__k&amp;amp;&amp;amp;t.__k.some(fe))}function pe(t,e,n){for(var i=0;i&amp;lt;n.length;i++)X(n[i],n[++i],n[++i]);d.__c&amp;amp;&amp;amp;d.__c(e,t),t.some(function(_){try{t=_.__h,_.__h=[],t.some(function(r){r.call(_)})}catch(r){d.__e(r,_.__v)}})}function de(t){return typeof t!=&amp;quot;object&amp;quot;||t==null||t.__b&amp;gt;0?t:$(t)?t.map(de):t.constructor!==void 0?null:w({},t)}function Me(t,e,n,i,_,r,l,a,c){var s,u,h,o,f,m,g,v=n.props||O,y=e.props,p=e.type;if(p==&amp;quot;svg&amp;quot;?_=&amp;quot;http://www.w3.org/2000/svg&amp;quot;:p==&amp;quot;math&amp;quot;?_=&amp;quot;http://www.w3.org/1998/Math/MathML&amp;quot;:_||(_=&amp;quot;http://www.w3.org/1999/xhtml&amp;quot;),r!=null){for(s=0;s&amp;lt;r.length;s++)if((f=r[s])&amp;amp;&amp;amp;&amp;quot;setAttribute&amp;quot;in f==!!p&amp;amp;&amp;amp;(p?f.localName==p:f.nodeType==3)){t=f,r[s]=null;break}}if(t==null){if(p==null)return document.createTextNode(y);t=document.createElementNS(_,p,y.is&amp;amp;&amp;amp;y),a&amp;amp;&amp;amp;(d.__m&amp;amp;&amp;amp;d.__m(e,r),a=!1),r=null}if(p==null)v===y||a&amp;amp;&amp;amp;t.data==y||(t.data=y);else{if(r=p==&amp;quot;textarea&amp;quot;&amp;amp;&amp;amp;y.defaultValue!=null?null:r&amp;amp;&amp;amp;I.call(t.childNodes),!a&amp;amp;&amp;amp;r!=null)for(v={},s=0;s&amp;lt;t.attributes.length;s++)v[(f=t.attributes[s]).name]=f.value;for(s in v)f=v[s],s==&amp;quot;dangerouslySetInnerHTML&amp;quot;?h=f:s==&amp;quot;children&amp;quot;||s in y||s==&amp;quot;value&amp;quot;&amp;amp;&amp;amp;&amp;quot;defaultValue&amp;quot;in y||s==&amp;quot;checked&amp;quot;&amp;amp;&amp;amp;&amp;quot;defaultChecked&amp;quot;in y||N(t,s,null,f,_);for(s in y)f=y[s],s==&amp;quot;children&amp;quot;?o=f:s==&amp;quot;dangerouslySetInnerHTML&amp;quot;?u=f:s==&amp;quot;value&amp;quot;?m=f:s==&amp;quot;checked&amp;quot;?g=f:a&amp;amp;&amp;amp;typeof f!=&amp;quot;function&amp;quot;||v[s]===f||N(t,s,f,v[s],_);if(u)a||h&amp;amp;&amp;amp;(u.__html==h.__html||u.__html==t.innerHTML)||(t.innerHTML=u.__html),e.__k=[];else if(h&amp;amp;&amp;amp;(t.innerHTML=&amp;quot;&amp;quot;),ce(e.type==&amp;quot;template&amp;quot;?t.content:t,$(o)?o:[o],e,n,i,p==&amp;quot;foreignObject&amp;quot;?&amp;quot;http://www.w3.org/1999/xhtml&amp;quot;:_,r,l,r?r[0]:n.__k&amp;amp;&amp;amp;S(n,0),a,c),r!=null)for(s=r.length;s--;)K(r[s]);a&amp;amp;&amp;amp;p!=&amp;quot;textarea&amp;quot;||(s=&amp;quot;value&amp;quot;,p==&amp;quot;progress&amp;quot;&amp;amp;&amp;amp;m==null?t.removeAttribute(&amp;quot;value&amp;quot;):m!=null&amp;amp;&amp;amp;(m!==t[s]||p==&amp;quot;progress&amp;quot;&amp;amp;&amp;amp;!m||p==&amp;quot;option&amp;quot;&amp;amp;&amp;amp;m!=v[s])&amp;amp;&amp;amp;N(t,s,m,v[s],_),s=&amp;quot;checked&amp;quot;,g!=null&amp;amp;&amp;amp;g!=t[s]&amp;amp;&amp;amp;N(t,s,g,v[s],_))}return t}function X(t,e,n){try{if(typeof t==&amp;quot;function&amp;quot;){var i=typeof t.__u==&amp;quot;function&amp;quot;;i&amp;amp;&amp;amp;t.__u(),i&amp;amp;&amp;amp;e==null||(t.__u=t(e))}else t.current=e}catch(_){d.__e(_,n)}}function he(t,e,n){var i,_;if(d.unmount&amp;amp;&amp;amp;d.unmount(t),(i=t.ref)&amp;amp;&amp;amp;(i.current&amp;amp;&amp;amp;i.current!=t.__e||X(i,null,e)),(i=t.__c)!=null){if(i.componentWillUnmount)try{i.componentWillUnmount()}catch(r){d.__e(r,e)}i.base=i.__P=i.__n=null}if(i=t.__k)for(_=0;_&amp;lt;i.length;_++)i[_]&amp;amp;&amp;amp;he(i[_],e,n||typeof t.type!=&amp;quot;function&amp;quot;);n||K(t.__e),t.__c=t.__=t.__e=void 0}function Ue(t,e,n){return this.constructor(t,n)}function me(t,e,n){var i,_,r,l;e==document&amp;amp;&amp;amp;(e=document.documentElement),d.__&amp;amp;&amp;amp;d.__(t,e),_=(i=typeof n==&amp;quot;function&amp;quot;)?null:n&amp;amp;&amp;amp;n.__k||e.__k,r=[],l=[],Q(e,t=(!i&amp;amp;&amp;amp;n||e).__k=je(A,null,[t]),_||O,O,e.namespaceURI,!i&amp;amp;&amp;amp;n?[n]:_?null:e.firstChild?I.call(e.childNodes):null,r,!i&amp;amp;&amp;amp;n?n:_?_.__e:e.firstChild,i,l),pe(r,t,l),t.props.children=null}I=H.slice,d={__e:function(t,e,n,i){for(var _,r,l;e=e.__;)if((_=e.__c)&amp;amp;&amp;amp;!_.__)try{if((r=_.constructor)&amp;amp;&amp;amp;r.getDerivedStateFromError!=null&amp;amp;&amp;amp;(_.setState(r.getDerivedStateFromError(t)),l=_.__d),_.componentDidCatch!=null&amp;amp;&amp;amp;(_.componentDidCatch(t,i||{}),l=_.__d),l)return _.__E=_}catch(a){t=a}throw t}},_e=0,Ce=function(t){return t!=null&amp;amp;&amp;amp;t.constructor===void 0},T.prototype.setState=function(t,e){var n;n=this.__s!=null&amp;amp;&amp;amp;this.__s!=this.state?this.__s:this.__s=w({},this.state),typeof t==&amp;quot;function&amp;quot;&amp;amp;&amp;amp;(t=t(w({},n),this.props)),t&amp;amp;&amp;amp;w(n,t),t!=null&amp;amp;&amp;amp;this.__v&amp;amp;&amp;amp;(e&amp;amp;&amp;amp;this._sb.push(e),ne(this))},T.prototype.forceUpdate=function(t){this.__v&amp;amp;&amp;amp;(this.__e=!0,t&amp;amp;&amp;amp;this.__h.push(t),ne(this))},T.prototype.render=A,x=[],le=typeof Promise==&amp;quot;function&amp;quot;?Promise.prototype.then.bind(Promise.resolve()):setTimeout,ie=function(t,e){return t.__v.__b-e.__v.__b},R.__r=0,z=Math.random().toString(8),D=&amp;quot;__d&amp;quot;+z,F=&amp;quot;__a&amp;quot;+z,se=/(PointerCapture)$|Capture$/i,J=0,Z=oe(!1),G=oe(!0),Pe=0;var Fe=0;function V(t,e,n,i,_,r){e||(e={});var l,a,c=e;if(&amp;quot;ref&amp;quot;in c)for(a in c={},e)a==&amp;quot;ref&amp;quot;?l=e[a]:c[a]=e[a];var s={type:t,props:c,key:n,ref:l,__k:null,__:null,__b:0,__e:null,__c:null,constructor:void 0,__v:--Fe,__i:-1,__u:0,__source:_,__self:r};if(typeof t==&amp;quot;function&amp;quot;&amp;amp;&amp;amp;(l=t.defaultProps))for(a in l)c[a]===void 0&amp;amp;&amp;amp;(c[a]=l[a]);return d.vnode&amp;amp;&amp;amp;d.vnode(s),s}var ye;function Le(t,e,n=0,i={}){ye={App:t,selector:e,importance:n,props:i},ge()===!1&amp;amp;&amp;amp;window.addEventListener(&amp;quot;load&amp;quot;,ve)}function ve(){window.removeEventListener(&amp;quot;load&amp;quot;,ve),ge()}function ge(){let{App:t,selector:e,importance:n,props:i}=ye,_=document.querySelector(e);if(!_)return!1;if((Number(_.dataset.importance)||0)&amp;gt;n){console.warn(&amp;quot;Refused to mount, as the existing content is more important!&amp;quot;);return}return _.dataset.importance=n,_.innerHTML=&amp;quot;&amp;quot;,me(V(t,{...i}),_),!0}var be=Le;var Ne={data:&amp;quot;&amp;quot;},De=t=&amp;gt;{if(typeof window==&amp;quot;object&amp;quot;){let e=(t?t.querySelector(&amp;quot;#_goober&amp;quot;):window._goober)||Object.assign(document.createElement(&amp;quot;style&amp;quot;),{innerHTML:&amp;quot; &amp;quot;,id:&amp;quot;_goober&amp;quot;});return e.nonce=window.__nonce__,e.parentNode||(t||document.head).appendChild(e),e.firstChild}return t||Ne};var We=/(?:([\u0080-\uFFFF\w-%@]+) *:? *([^{;]+?);|([^;}{]*?) *{)|(}\s*)/g,Oe=/\/\*[^]*?\*\/|  +/g,ke=/\n+/g,j=(t,e)=&amp;gt;{let n=&amp;quot;&amp;quot;,i=&amp;quot;&amp;quot;,_=&amp;quot;&amp;quot;;for(let r in t){let l=t[r];r[0]==&amp;quot;@&amp;quot;?r[1]==&amp;quot;i&amp;quot;?n=r+&amp;quot; &amp;quot;+l+&amp;quot;;&amp;quot;:i+=r[1]==&amp;quot;f&amp;quot;?j(l,r):r+&amp;quot;{&amp;quot;+j(l,r[1]==&amp;quot;k&amp;quot;?&amp;quot;&amp;quot;:e)+&amp;quot;}&amp;quot;:typeof l==&amp;quot;object&amp;quot;?i+=j(l,e?e.replace(/([^,])+/g,a=&amp;gt;r.replace(/([^,]*:\S+\([^)]*\))|([^,])+/g,c=&amp;gt;/&amp;amp;/.test(c)?c.replace(/&amp;amp;/g,a):a?a+&amp;quot; &amp;quot;+c:c)):r):l!=null&amp;amp;&amp;amp;(r=r[1]==&amp;quot;-&amp;quot;?r:r.replace(/[A-Z]/g,&amp;quot;-$&amp;amp;&amp;quot;).toLowerCase(),_+=j.p?j.p(r,l):r+&amp;quot;:&amp;quot;+l+&amp;quot;;&amp;quot;)}return n+(e&amp;amp;&amp;amp;_?e+&amp;quot;{&amp;quot;+_+&amp;quot;}&amp;quot;:_)+i},C={},we=t=&amp;gt;{if(typeof t==&amp;quot;object&amp;quot;){let e=&amp;quot;&amp;quot;;for(let n in t)e+=n+we(t[n]);return e}return t},He=(t,e,n,i,_)=&amp;gt;{let r=we(t),l=C[r]||(C[r]=(c=&amp;gt;{let s=0,u=11;for(;s&amp;lt;c.length;)u=101*u+c.charCodeAt(s++)&amp;gt;&amp;gt;&amp;gt;0;return&amp;quot;go&amp;quot;+u})(r));if(!C[l]){let c=r!==t?t:(s=&amp;gt;{let u,h,o=[{}];for(;u=We.exec(s.replace(Oe,&amp;quot;&amp;quot;));)u[4]?o.shift():u[3]?(h=u[3].replace(ke,&amp;quot; &amp;quot;).trim(),o.unshift(o[0][h]=o[0][h]||{})):o[0][u[1]]=u[2].replace(ke,&amp;quot; &amp;quot;).trim();return o[0]})(t);C[l]=j(_?{[&amp;quot;@keyframes &amp;quot;+l]:c}:c,n?&amp;quot;&amp;quot;:&amp;quot;.&amp;quot;+l)}let a=n&amp;amp;&amp;amp;C.g;return n&amp;amp;&amp;amp;(C.g=C[l]),((c,s,u,h)=&amp;gt;{h?s.data=s.data.replace(h,c):s.data.indexOf(c)===-1&amp;amp;&amp;amp;(s.data=u?c+s.data:s.data+c)})(C[l],e,i,a),l},Re=(t,e,n)=&amp;gt;t.reduce((i,_,r)=&amp;gt;{let l=e[r];if(l&amp;amp;&amp;amp;l.call){let a=l(n),c=a&amp;amp;&amp;amp;a.props&amp;amp;&amp;amp;a.props.className||/^go/.test(a)&amp;amp;&amp;amp;a;l=c?&amp;quot;.&amp;quot;+c:a&amp;amp;&amp;amp;typeof a==&amp;quot;object&amp;quot;?a.props?&amp;quot;&amp;quot;:j(a,&amp;quot;&amp;quot;):a===!1?&amp;quot;&amp;quot;:a}return i+_+(l??&amp;quot;&amp;quot;)},&amp;quot;&amp;quot;);function q(t){let e=this||{},n=t.call?t(e.p):t;return He(n.unshift?n.raw?Re(n,[].slice.call(arguments,1),e.p):n.reduce((i,_)=&amp;gt;Object.assign(i,_&amp;amp;&amp;amp;_.call?_(e.p):_),{}):n,De(e.target),e.g,e.o,e.k)}var Ke=q.bind({g:1}),Qe=q.bind({k:1});var Ie=q`&lt;br /&gt;
    color: #fff;&lt;br /&gt;
`;var Y=class extends T{render(){return V(&amp;quot;div&amp;quot;,{class:Ie,children:&amp;quot;Hello&amp;quot;})}onPickDirectoryClick=async()=&amp;gt;{}},xe=Y;function $e(){be(xe,&amp;quot;.diff-root&amp;quot;,0)}$e();})();&lt;/div&gt;</summary>
		<author><name>76561198048502585</name></author>
	</entry>
	<entry>
		<id>https://wiki.hoodedhorse.com/Heroes_of_Might_and_Magic_Olden_Era/index.php?title=MediaWiki:UpdateTool.js&amp;diff=41537</id>
		<title>MediaWiki:UpdateTool.js</title>
		<link rel="alternate" type="text/html" href="https://wiki.hoodedhorse.com/Heroes_of_Might_and_Magic_Olden_Era/index.php?title=MediaWiki:UpdateTool.js&amp;diff=41537"/>
		<updated>2026-10-13T14:28:07Z</updated>

		<summary type="html">&lt;p&gt;76561198048502585: Created page with &amp;quot;//Source:https://github.com/Aurelain/oe-wiki/tree/main/src/update (()=&amp;gt;{var It=Object.create;var Ne=Object.defineProperty;var Ht=Object.getOwnPropertyDescriptor;var Nt=Object.getOwnPropertyNames;var $t=Object.getPrototypeOf,Rt=Object.prototype.hasOwnProperty;var jt=(e,t)=&amp;gt;()=&amp;gt;{try{return t||e((t={exports:{}}).exports,t),t.exports}catch(n){throw t=0,n}};var Ot=(e,t,n,i)=&amp;gt;{if(t&amp;amp;&amp;amp;typeof t==&amp;quot;object&amp;quot;||typeof t==&amp;quot;function&amp;quot;)for(let s of Nt(t))!Rt.call(e,s)&amp;amp;&amp;amp;s!==n&amp;amp;&amp;amp;Ne(e,s,{get:(...&amp;quot;&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;//Source:https://github.com/Aurelain/oe-wiki/tree/main/src/update&lt;br /&gt;
(()=&amp;gt;{var It=Object.create;var Ne=Object.defineProperty;var Ht=Object.getOwnPropertyDescriptor;var Nt=Object.getOwnPropertyNames;var $t=Object.getPrototypeOf,Rt=Object.prototype.hasOwnProperty;var jt=(e,t)=&amp;gt;()=&amp;gt;{try{return t||e((t={exports:{}}).exports,t),t.exports}catch(n){throw t=0,n}};var Ot=(e,t,n,i)=&amp;gt;{if(t&amp;amp;&amp;amp;typeof t==&amp;quot;object&amp;quot;||typeof t==&amp;quot;function&amp;quot;)for(let s of Nt(t))!Rt.call(e,s)&amp;amp;&amp;amp;s!==n&amp;amp;&amp;amp;Ne(e,s,{get:()=&amp;gt;t[s],enumerable:!(i=Ht(t,s))||i.enumerable});return e};var Ut=(e,t,n)=&amp;gt;(n=e!=null?It($t(e)):{},Ot(t||!e||!e.__esModule?Ne(n,&amp;quot;default&amp;quot;,{value:e,enumerable:!0}):n,e));var Mt=jt((fi,X)=&amp;gt;{var h=function(){this.Diff_Timeout=1,this.Diff_EditCost=4,this.Match_Threshold=.5,this.Match_Distance=1e3,this.Patch_DeleteThreshold=.5,this.Patch_Margin=4,this.Match_MaxBits=32},M=-1,E=1,b=0;h.Diff=function(e,t){return[e,t]};h.prototype.diff_main=function(e,t,n,i){typeof i&amp;gt;&amp;quot;u&amp;quot;&amp;amp;&amp;amp;(this.Diff_Timeout&amp;lt;=0?i=Number.MAX_VALUE:i=new Date().getTime()+this.Diff_Timeout*1e3);var s=i;if(e==null||t==null)throw new Error(&amp;quot;Null input. (diff_main)&amp;quot;);if(e==t)return e?[new h.Diff(b,e)]:[];typeof n&amp;gt;&amp;quot;u&amp;quot;&amp;amp;&amp;amp;(n=!0);var r=n,o=this.diff_commonPrefix(e,t),a=e.substring(0,o);e=e.substring(o),t=t.substring(o),o=this.diff_commonSuffix(e,t);var l=e.substring(e.length-o);e=e.substring(0,e.length-o),t=t.substring(0,t.length-o);var c=this.diff_compute_(e,t,r,s);return a&amp;amp;&amp;amp;c.unshift(new h.Diff(b,a)),l&amp;amp;&amp;amp;c.push(new h.Diff(b,l)),this.diff_cleanupMerge(c),c};h.prototype.diff_compute_=function(e,t,n,i){var s;if(!e)return[new h.Diff(E,t)];if(!t)return[new h.Diff(M,e)];var r=e.length&amp;gt;t.length?e:t,o=e.length&amp;gt;t.length?t:e,a=r.indexOf(o);if(a!=-1)return s=[new h.Diff(E,r.substring(0,a)),new h.Diff(b,o),new h.Diff(E,r.substring(a+o.length))],e.length&amp;gt;t.length&amp;amp;&amp;amp;(s[0][0]=s[2][0]=M),s;if(o.length==1)return[new h.Diff(M,e),new h.Diff(E,t)];var l=this.diff_halfMatch_(e,t);if(l){var c=l[0],u=l[1],_=l[2],f=l[3],p=l[4],g=this.diff_main(c,_,n,i),m=this.diff_main(u,f,n,i);return g.concat([new h.Diff(b,p)],m)}return n&amp;amp;&amp;amp;e.length&amp;gt;100&amp;amp;&amp;amp;t.length&amp;gt;100?this.diff_lineMode_(e,t,i):this.diff_bisect_(e,t,i)};h.prototype.diff_lineMode_=function(e,t,n){var i=this.diff_linesToChars_(e,t);e=i.chars1,t=i.chars2;var s=i.lineArray,r=this.diff_main(e,t,!1,n);this.diff_charsToLines_(r,s),this.diff_cleanupSemantic(r),r.push(new h.Diff(b,&amp;quot;&amp;quot;));for(var o=0,a=0,l=0,c=&amp;quot;&amp;quot;,u=&amp;quot;&amp;quot;;o&amp;lt;r.length;){switch(r[o][0]){case E:l++,u+=r[o][1];break;case M:a++,c+=r[o][1];break;case b:if(a&amp;gt;=1&amp;amp;&amp;amp;l&amp;gt;=1){r.splice(o-a-l,a+l),o=o-a-l;for(var _=this.diff_main(c,u,!1,n),f=_.length-1;f&amp;gt;=0;f--)r.splice(o,0,_[f]);o=o+_.length}l=0,a=0,c=&amp;quot;&amp;quot;,u=&amp;quot;&amp;quot;;break}o++}return r.pop(),r};h.prototype.diff_bisect_=function(e,t,n){for(var i=e.length,s=t.length,r=Math.ceil((i+s)/2),o=r,a=2*r,l=new Array(a),c=new Array(a),u=0;u&amp;lt;a;u++)l[u]=-1,c[u]=-1;l[o+1]=0,c[o+1]=0;for(var _=i-s,f=_%2!=0,p=0,g=0,m=0,w=0,v=0;v&amp;lt;r&amp;amp;&amp;amp;!(new Date().getTime()&amp;gt;n);v++){for(var d=-v+p;d&amp;lt;=v-g;d+=2){var y=o+d,D;d==-v||d!=v&amp;amp;&amp;amp;l[y-1]&amp;lt;l[y+1]?D=l[y+1]:D=l[y-1]+1;for(var T=D-d;D&amp;lt;i&amp;amp;&amp;amp;T&amp;lt;s&amp;amp;&amp;amp;e.charAt(D)==t.charAt(T);)D++,T++;if(l[y]=D,D&amp;gt;i)g+=2;else if(T&amp;gt;s)p+=2;else if(f){var P=o+_-d;if(P&amp;gt;=0&amp;amp;&amp;amp;P&amp;lt;a&amp;amp;&amp;amp;c[P]!=-1){var A=i-c[P];if(D&amp;gt;=A)return this.diff_bisectSplit_(e,t,D,T,n)}}}for(var C=-v+m;C&amp;lt;=v-w;C+=2){var P=o+C,A;C==-v||C!=v&amp;amp;&amp;amp;c[P-1]&amp;lt;c[P+1]?A=c[P+1]:A=c[P-1]+1;for(var I=A-C;A&amp;lt;i&amp;amp;&amp;amp;I&amp;lt;s&amp;amp;&amp;amp;e.charAt(i-A-1)==t.charAt(s-I-1);)A++,I++;if(c[P]=A,A&amp;gt;i)w+=2;else if(I&amp;gt;s)m+=2;else if(!f){var y=o+_-C;if(y&amp;gt;=0&amp;amp;&amp;amp;y&amp;lt;a&amp;amp;&amp;amp;l[y]!=-1){var D=l[y],T=o+D-y;if(A=i-A,D&amp;gt;=A)return this.diff_bisectSplit_(e,t,D,T,n)}}}}return[new h.Diff(M,e),new h.Diff(E,t)]};h.prototype.diff_bisectSplit_=function(e,t,n,i,s){var r=e.substring(0,n),o=t.substring(0,i),a=e.substring(n),l=t.substring(i),c=this.diff_main(r,o,!1,s),u=this.diff_main(a,l,!1,s);return c.concat(u)};h.prototype.diff_linesToChars_=function(e,t){var n=[],i={};n[0]=&amp;quot;&amp;quot;;function s(l){for(var c=&amp;quot;&amp;quot;,u=0,_=-1,f=n.length;_&amp;lt;l.length-1;){_=l.indexOf(`&lt;br /&gt;
`,u),_==-1&amp;amp;&amp;amp;(_=l.length-1);var p=l.substring(u,_+1);(i.hasOwnProperty?i.hasOwnProperty(p):i[p]!==void 0)?c+=String.fromCharCode(i[p]):(f==r&amp;amp;&amp;amp;(p=l.substring(u),_=l.length),c+=String.fromCharCode(f),i[p]=f,n[f++]=p),u=_+1}return c}var r=4e4,o=s(e);r=65535;var a=s(t);return{chars1:o,chars2:a,lineArray:n}};h.prototype.diff_charsToLines_=function(e,t){for(var n=0;n&amp;lt;e.length;n++){for(var i=e[n][1],s=[],r=0;r&amp;lt;i.length;r++)s[r]=t[i.charCodeAt(r)];e[n][1]=s.join(&amp;quot;&amp;quot;)}};h.prototype.diff_commonPrefix=function(e,t){if(!e||!t||e.charAt(0)!=t.charAt(0))return 0;for(var n=0,i=Math.min(e.length,t.length),s=i,r=0;n&amp;lt;s;)e.substring(r,s)==t.substring(r,s)?(n=s,r=n):i=s,s=Math.floor((i-n)/2+n);return s};h.prototype.diff_commonSuffix=function(e,t){if(!e||!t||e.charAt(e.length-1)!=t.charAt(t.length-1))return 0;for(var n=0,i=Math.min(e.length,t.length),s=i,r=0;n&amp;lt;s;)e.substring(e.length-s,e.length-r)==t.substring(t.length-s,t.length-r)?(n=s,r=n):i=s,s=Math.floor((i-n)/2+n);return s};h.prototype.diff_commonOverlap_=function(e,t){var n=e.length,i=t.length;if(n==0||i==0)return 0;n&amp;gt;i?e=e.substring(n-i):n&amp;lt;i&amp;amp;&amp;amp;(t=t.substring(0,n));var s=Math.min(n,i);if(e==t)return s;for(var r=0,o=1;;){var a=e.substring(s-o),l=t.indexOf(a);if(l==-1)return r;o+=l,(l==0||e.substring(s-o)==t.substring(0,o))&amp;amp;&amp;amp;(r=o,o++)}};h.prototype.diff_halfMatch_=function(e,t){if(this.Diff_Timeout&amp;lt;=0)return null;var n=e.length&amp;gt;t.length?e:t,i=e.length&amp;gt;t.length?t:e;if(n.length&amp;lt;4||i.length*2&amp;lt;n.length)return null;var s=this;function r(g,m,w){for(var v=g.substring(w,w+Math.floor(g.length/4)),d=-1,y=&amp;quot;&amp;quot;,D,T,P,A;(d=m.indexOf(v,d+1))!=-1;){var C=s.diff_commonPrefix(g.substring(w),m.substring(d)),I=s.diff_commonSuffix(g.substring(0,w),m.substring(0,d));y.length&amp;lt;I+C&amp;amp;&amp;amp;(y=m.substring(d-I,d)+m.substring(d,d+C),D=g.substring(0,w-I),T=g.substring(w+C),P=m.substring(0,d-I),A=m.substring(d+C))}return y.length*2&amp;gt;=g.length?[D,T,P,A,y]:null}var o=r(n,i,Math.ceil(n.length/4)),a=r(n,i,Math.ceil(n.length/2)),l;if(!o&amp;amp;&amp;amp;!a)return null;a?o?l=o[4].length&amp;gt;a[4].length?o:a:l=a:l=o;var c,u,_,f;e.length&amp;gt;t.length?(c=l[0],u=l[1],_=l[2],f=l[3]):(_=l[0],f=l[1],c=l[2],u=l[3]);var p=l[4];return[c,u,_,f,p]};h.prototype.diff_cleanupSemantic=function(e){for(var t=!1,n=[],i=0,s=null,r=0,o=0,a=0,l=0,c=0;r&amp;lt;e.length;)e[r][0]==b?(n[i++]=r,o=l,a=c,l=0,c=0,s=e[r][1]):(e[r][0]==E?l+=e[r][1].length:c+=e[r][1].length,s&amp;amp;&amp;amp;s.length&amp;lt;=Math.max(o,a)&amp;amp;&amp;amp;s.length&amp;lt;=Math.max(l,c)&amp;amp;&amp;amp;(e.splice(n[i-1],0,new h.Diff(M,s)),e[n[i-1]+1][0]=E,i--,i--,r=i&amp;gt;0?n[i-1]:-1,o=0,a=0,l=0,c=0,s=null,t=!0)),r++;for(t&amp;amp;&amp;amp;this.diff_cleanupMerge(e),this.diff_cleanupSemanticLossless(e),r=1;r&amp;lt;e.length;){if(e[r-1][0]==M&amp;amp;&amp;amp;e[r][0]==E){var u=e[r-1][1],_=e[r][1],f=this.diff_commonOverlap_(u,_),p=this.diff_commonOverlap_(_,u);f&amp;gt;=p?(f&amp;gt;=u.length/2||f&amp;gt;=_.length/2)&amp;amp;&amp;amp;(e.splice(r,0,new h.Diff(b,_.substring(0,f))),e[r-1][1]=u.substring(0,u.length-f),e[r+1][1]=_.substring(f),r++):(p&amp;gt;=u.length/2||p&amp;gt;=_.length/2)&amp;amp;&amp;amp;(e.splice(r,0,new h.Diff(b,u.substring(0,p))),e[r-1][0]=E,e[r-1][1]=_.substring(0,_.length-p),e[r+1][0]=M,e[r+1][1]=u.substring(p),r++),r++}r++}};h.prototype.diff_cleanupSemanticLossless=function(e){function t(p,g){if(!p||!g)return 6;var m=p.charAt(p.length-1),w=g.charAt(0),v=m.match(h.nonAlphaNumericRegex_),d=w.match(h.nonAlphaNumericRegex_),y=v&amp;amp;&amp;amp;m.match(h.whitespaceRegex_),D=d&amp;amp;&amp;amp;w.match(h.whitespaceRegex_),T=y&amp;amp;&amp;amp;m.match(h.linebreakRegex_),P=D&amp;amp;&amp;amp;w.match(h.linebreakRegex_),A=T&amp;amp;&amp;amp;p.match(h.blanklineEndRegex_),C=P&amp;amp;&amp;amp;g.match(h.blanklineStartRegex_);return A||C?5:T||P?4:v&amp;amp;&amp;amp;!y&amp;amp;&amp;amp;D?3:y||D?2:v||d?1:0}for(var n=1;n&amp;lt;e.length-1;){if(e[n-1][0]==b&amp;amp;&amp;amp;e[n+1][0]==b){var i=e[n-1][1],s=e[n][1],r=e[n+1][1],o=this.diff_commonSuffix(i,s);if(o){var a=s.substring(s.length-o);i=i.substring(0,i.length-o),s=a+s.substring(0,s.length-o),r=a+r}for(var l=i,c=s,u=r,_=t(i,s)+t(s,r);s.charAt(0)===r.charAt(0);){i+=s.charAt(0),s=s.substring(1)+r.charAt(0),r=r.substring(1);var f=t(i,s)+t(s,r);f&amp;gt;=_&amp;amp;&amp;amp;(_=f,l=i,c=s,u=r)}e[n-1][1]!=l&amp;amp;&amp;amp;(l?e[n-1][1]=l:(e.splice(n-1,1),n--),e[n][1]=c,u?e[n+1][1]=u:(e.splice(n+1,1),n--))}n++}};h.nonAlphaNumericRegex_=/[^a-zA-Z0-9]/;h.whitespaceRegex_=/\s/;h.linebreakRegex_=/[\r\n]/;h.blanklineEndRegex_=/\n\r?\n$/;h.blanklineStartRegex_=/^\r?\n\r?\n/;h.prototype.diff_cleanupEfficiency=function(e){for(var t=!1,n=[],i=0,s=null,r=0,o=!1,a=!1,l=!1,c=!1;r&amp;lt;e.length;)e[r][0]==b?(e[r][1].length&amp;lt;this.Diff_EditCost&amp;amp;&amp;amp;(l||c)?(n[i++]=r,o=l,a=c,s=e[r][1]):(i=0,s=null),l=c=!1):(e[r][0]==M?c=!0:l=!0,s&amp;amp;&amp;amp;(o&amp;amp;&amp;amp;a&amp;amp;&amp;amp;l&amp;amp;&amp;amp;c||s.length&amp;lt;this.Diff_EditCost/2&amp;amp;&amp;amp;o+a+l+c==3)&amp;amp;&amp;amp;(e.splice(n[i-1],0,new h.Diff(M,s)),e[n[i-1]+1][0]=E,i--,s=null,o&amp;amp;&amp;amp;a?(l=c=!0,i=0):(i--,r=i&amp;gt;0?n[i-1]:-1,l=c=!1),t=!0)),r++;t&amp;amp;&amp;amp;this.diff_cleanupMerge(e)};h.prototype.diff_cleanupMerge=function(e){e.push(new h.Diff(b,&amp;quot;&amp;quot;));for(var t=0,n=0,i=0,s=&amp;quot;&amp;quot;,r=&amp;quot;&amp;quot;,o;t&amp;lt;e.length;)switch(e[t][0]){case E:i++,r+=e[t][1],t++;break;case M:n++,s+=e[t][1],t++;break;case b:n+i&amp;gt;1?(n!==0&amp;amp;&amp;amp;i!==0&amp;amp;&amp;amp;(o=this.diff_commonPrefix(r,s),o!==0&amp;amp;&amp;amp;(t-n-i&amp;gt;0&amp;amp;&amp;amp;e[t-n-i-1][0]==b?e[t-n-i-1][1]+=r.substring(0,o):(e.splice(0,0,new h.Diff(b,r.substring(0,o))),t++),r=r.substring(o),s=s.substring(o)),o=this.diff_commonSuffix(r,s),o!==0&amp;amp;&amp;amp;(e[t][1]=r.substring(r.length-o)+e[t][1],r=r.substring(0,r.length-o),s=s.substring(0,s.length-o))),t-=n+i,e.splice(t,n+i),s.length&amp;amp;&amp;amp;(e.splice(t,0,new h.Diff(M,s)),t++),r.length&amp;amp;&amp;amp;(e.splice(t,0,new h.Diff(E,r)),t++),t++):t!==0&amp;amp;&amp;amp;e[t-1][0]==b?(e[t-1][1]+=e[t][1],e.splice(t,1)):t++,i=0,n=0,s=&amp;quot;&amp;quot;,r=&amp;quot;&amp;quot;;break}e[e.length-1][1]===&amp;quot;&amp;quot;&amp;amp;&amp;amp;e.pop();var a=!1;for(t=1;t&amp;lt;e.length-1;)e[t-1][0]==b&amp;amp;&amp;amp;e[t+1][0]==b&amp;amp;&amp;amp;(e[t][1].substring(e[t][1].length-e[t-1][1].length)==e[t-1][1]?(e[t][1]=e[t-1][1]+e[t][1].substring(0,e[t][1].length-e[t-1][1].length),e[t+1][1]=e[t-1][1]+e[t+1][1],e.splice(t-1,1),a=!0):e[t][1].substring(0,e[t+1][1].length)==e[t+1][1]&amp;amp;&amp;amp;(e[t-1][1]+=e[t+1][1],e[t][1]=e[t][1].substring(e[t+1][1].length)+e[t+1][1],e.splice(t+1,1),a=!0)),t++;a&amp;amp;&amp;amp;this.diff_cleanupMerge(e)};h.prototype.diff_xIndex=function(e,t){var n=0,i=0,s=0,r=0,o;for(o=0;o&amp;lt;e.length&amp;amp;&amp;amp;(e[o][0]!==E&amp;amp;&amp;amp;(n+=e[o][1].length),e[o][0]!==M&amp;amp;&amp;amp;(i+=e[o][1].length),!(n&amp;gt;t));o++)s=n,r=i;return e.length!=o&amp;amp;&amp;amp;e[o][0]===M?r:r+(t-s)};h.prototype.diff_prettyHtml=function(e){for(var t=[],n=/&amp;amp;/g,i=/&amp;lt;/g,s=/&amp;gt;/g,r=/\n/g,o=0;o&amp;lt;e.length;o++){var a=e[o][0],l=e[o][1],c=l.replace(n,&amp;quot;&amp;amp;amp;&amp;quot;).replace(i,&amp;quot;&amp;amp;lt;&amp;quot;).replace(s,&amp;quot;&amp;amp;gt;&amp;quot;).replace(r,&amp;quot;&amp;amp;para;&amp;lt;br&amp;gt;&amp;quot;);switch(a){case E:t[o]=&#039;&amp;lt;ins style=&amp;quot;background:#e6ffe6;&amp;quot;&amp;gt;&#039;+c+&amp;quot;&amp;lt;/ins&amp;gt;&amp;quot;;break;case M:t[o]=&#039;&amp;lt;del style=&amp;quot;background:#ffe6e6;&amp;quot;&amp;gt;&#039;+c+&amp;quot;&amp;lt;/del&amp;gt;&amp;quot;;break;case b:t[o]=&amp;quot;&amp;lt;span&amp;gt;&amp;quot;+c+&amp;quot;&amp;lt;/span&amp;gt;&amp;quot;;break}}return t.join(&amp;quot;&amp;quot;)};h.prototype.diff_text1=function(e){for(var t=[],n=0;n&amp;lt;e.length;n++)e[n][0]!==E&amp;amp;&amp;amp;(t[n]=e[n][1]);return t.join(&amp;quot;&amp;quot;)};h.prototype.diff_text2=function(e){for(var t=[],n=0;n&amp;lt;e.length;n++)e[n][0]!==M&amp;amp;&amp;amp;(t[n]=e[n][1]);return t.join(&amp;quot;&amp;quot;)};h.prototype.diff_levenshtein=function(e){for(var t=0,n=0,i=0,s=0;s&amp;lt;e.length;s++){var r=e[s][0],o=e[s][1];switch(r){case E:n+=o.length;break;case M:i+=o.length;break;case b:t+=Math.max(n,i),n=0,i=0;break}}return t+=Math.max(n,i),t};h.prototype.diff_toDelta=function(e){for(var t=[],n=0;n&amp;lt;e.length;n++)switch(e[n][0]){case E:t[n]=&amp;quot;+&amp;quot;+encodeURI(e[n][1]);break;case M:t[n]=&amp;quot;-&amp;quot;+e[n][1].length;break;case b:t[n]=&amp;quot;=&amp;quot;+e[n][1].length;break}return t.join(&amp;quot;	&amp;quot;).replace(/%20/g,&amp;quot; &amp;quot;)};h.prototype.diff_fromDelta=function(e,t){for(var n=[],i=0,s=0,r=t.split(/\t/g),o=0;o&amp;lt;r.length;o++){var a=r[o].substring(1);switch(r[o].charAt(0)){case&amp;quot;+&amp;quot;:try{n[i++]=new h.Diff(E,decodeURI(a))}catch{throw new Error(&amp;quot;Illegal escape in diff_fromDelta: &amp;quot;+a)}break;case&amp;quot;-&amp;quot;:case&amp;quot;=&amp;quot;:var l=parseInt(a,10);if(isNaN(l)||l&amp;lt;0)throw new Error(&amp;quot;Invalid number in diff_fromDelta: &amp;quot;+a);var c=e.substring(s,s+=l);r[o].charAt(0)==&amp;quot;=&amp;quot;?n[i++]=new h.Diff(b,c):n[i++]=new h.Diff(M,c);break;default:if(r[o])throw new Error(&amp;quot;Invalid diff operation in diff_fromDelta: &amp;quot;+r[o])}}if(s!=e.length)throw new Error(&amp;quot;Delta length (&amp;quot;+s+&amp;quot;) does not equal source text length (&amp;quot;+e.length+&amp;quot;).&amp;quot;);return n};h.prototype.match_main=function(e,t,n){if(e==null||t==null||n==null)throw new Error(&amp;quot;Null input. (match_main)&amp;quot;);return n=Math.max(0,Math.min(n,e.length)),e==t?0:e.length?e.substring(n,n+t.length)==t?n:this.match_bitap_(e,t,n):-1};h.prototype.match_bitap_=function(e,t,n){if(t.length&amp;gt;this.Match_MaxBits)throw new Error(&amp;quot;Pattern too long for this browser.&amp;quot;);var i=this.match_alphabet_(t),s=this;function r(D,T){var P=D/t.length,A=Math.abs(n-T);return s.Match_Distance?P+A/s.Match_Distance:A?1:P}var o=this.Match_Threshold,a=e.indexOf(t,n);a!=-1&amp;amp;&amp;amp;(o=Math.min(r(0,a),o),a=e.lastIndexOf(t,n+t.length),a!=-1&amp;amp;&amp;amp;(o=Math.min(r(0,a),o)));var l=1&amp;lt;&amp;lt;t.length-1;a=-1;for(var c,u,_=t.length+e.length,f,p=0;p&amp;lt;t.length;p++){for(c=0,u=_;c&amp;lt;u;)r(p,n+u)&amp;lt;=o?c=u:_=u,u=Math.floor((_-c)/2+c);_=u;var g=Math.max(1,n-u+1),m=Math.min(n+u,e.length)+t.length,w=Array(m+2);w[m+1]=(1&amp;lt;&amp;lt;p)-1;for(var v=m;v&amp;gt;=g;v--){var d=i[e.charAt(v-1)];if(p===0?w[v]=(w[v+1]&amp;lt;&amp;lt;1|1)&amp;amp;d:w[v]=(w[v+1]&amp;lt;&amp;lt;1|1)&amp;amp;d|((f[v+1]|f[v])&amp;lt;&amp;lt;1|1)|f[v+1],w[v]&amp;amp;l){var y=r(p,v-1);if(y&amp;lt;=o)if(o=y,a=v-1,a&amp;gt;n)g=Math.max(1,2*n-a);else break}}if(r(p+1,n)&amp;gt;o)break;f=w}return a};h.prototype.match_alphabet_=function(e){for(var t={},n=0;n&amp;lt;e.length;n++)t[e.charAt(n)]=0;for(var n=0;n&amp;lt;e.length;n++)t[e.charAt(n)]|=1&amp;lt;&amp;lt;e.length-n-1;return t};h.prototype.patch_addContext_=function(e,t){if(t.length!=0){if(e.start2===null)throw Error(&amp;quot;patch not initialized&amp;quot;);for(var n=t.substring(e.start2,e.start2+e.length1),i=0;t.indexOf(n)!=t.lastIndexOf(n)&amp;amp;&amp;amp;n.length&amp;lt;this.Match_MaxBits-this.Patch_Margin-this.Patch_Margin;)i+=this.Patch_Margin,n=t.substring(e.start2-i,e.start2+e.length1+i);i+=this.Patch_Margin;var s=t.substring(e.start2-i,e.start2);s&amp;amp;&amp;amp;e.diffs.unshift(new h.Diff(b,s));var r=t.substring(e.start2+e.length1,e.start2+e.length1+i);r&amp;amp;&amp;amp;e.diffs.push(new h.Diff(b,r)),e.start1-=s.length,e.start2-=s.length,e.length1+=s.length+r.length,e.length2+=s.length+r.length}};h.prototype.patch_make=function(e,t,n){var i,s;if(typeof e==&amp;quot;string&amp;quot;&amp;amp;&amp;amp;typeof t==&amp;quot;string&amp;quot;&amp;amp;&amp;amp;typeof n&amp;gt;&amp;quot;u&amp;quot;)i=e,s=this.diff_main(i,t,!0),s.length&amp;gt;2&amp;amp;&amp;amp;(this.diff_cleanupSemantic(s),this.diff_cleanupEfficiency(s));else if(e&amp;amp;&amp;amp;typeof e==&amp;quot;object&amp;quot;&amp;amp;&amp;amp;typeof t&amp;gt;&amp;quot;u&amp;quot;&amp;amp;&amp;amp;typeof n&amp;gt;&amp;quot;u&amp;quot;)s=e,i=this.diff_text1(s);else if(typeof e==&amp;quot;string&amp;quot;&amp;amp;&amp;amp;t&amp;amp;&amp;amp;typeof t==&amp;quot;object&amp;quot;&amp;amp;&amp;amp;typeof n&amp;gt;&amp;quot;u&amp;quot;)i=e,s=t;else if(typeof e==&amp;quot;string&amp;quot;&amp;amp;&amp;amp;typeof t==&amp;quot;string&amp;quot;&amp;amp;&amp;amp;n&amp;amp;&amp;amp;typeof n==&amp;quot;object&amp;quot;)i=e,s=n;else throw new Error(&amp;quot;Unknown call format to patch_make.&amp;quot;);if(s.length===0)return[];for(var r=[],o=new h.patch_obj,a=0,l=0,c=0,u=i,_=i,f=0;f&amp;lt;s.length;f++){var p=s[f][0],g=s[f][1];switch(!a&amp;amp;&amp;amp;p!==b&amp;amp;&amp;amp;(o.start1=l,o.start2=c),p){case E:o.diffs[a++]=s[f],o.length2+=g.length,_=_.substring(0,c)+g+_.substring(c);break;case M:o.length1+=g.length,o.diffs[a++]=s[f],_=_.substring(0,c)+_.substring(c+g.length);break;case b:g.length&amp;lt;=2*this.Patch_Margin&amp;amp;&amp;amp;a&amp;amp;&amp;amp;s.length!=f+1?(o.diffs[a++]=s[f],o.length1+=g.length,o.length2+=g.length):g.length&amp;gt;=2*this.Patch_Margin&amp;amp;&amp;amp;a&amp;amp;&amp;amp;(this.patch_addContext_(o,u),r.push(o),o=new h.patch_obj,a=0,u=_,l=c);break}p!==E&amp;amp;&amp;amp;(l+=g.length),p!==M&amp;amp;&amp;amp;(c+=g.length)}return a&amp;amp;&amp;amp;(this.patch_addContext_(o,u),r.push(o)),r};h.prototype.patch_deepCopy=function(e){for(var t=[],n=0;n&amp;lt;e.length;n++){var i=e[n],s=new h.patch_obj;s.diffs=[];for(var r=0;r&amp;lt;i.diffs.length;r++)s.diffs[r]=new h.Diff(i.diffs[r][0],i.diffs[r][1]);s.start1=i.start1,s.start2=i.start2,s.length1=i.length1,s.length2=i.length2,t[n]=s}return t};h.prototype.patch_apply=function(e,t){if(e.length==0)return[t,[]];e=this.patch_deepCopy(e);var n=this.patch_addPadding(e);t=n+t+n,this.patch_splitMax(e);for(var i=0,s=[],r=0;r&amp;lt;e.length;r++){var o=e[r].start2+i,a=this.diff_text1(e[r].diffs),l,c=-1;if(a.length&amp;gt;this.Match_MaxBits?(l=this.match_main(t,a.substring(0,this.Match_MaxBits),o),l!=-1&amp;amp;&amp;amp;(c=this.match_main(t,a.substring(a.length-this.Match_MaxBits),o+a.length-this.Match_MaxBits),(c==-1||l&amp;gt;=c)&amp;amp;&amp;amp;(l=-1))):l=this.match_main(t,a,o),l==-1)s[r]=!1,i-=e[r].length2-e[r].length1;else{s[r]=!0,i=l-o;var u;if(c==-1?u=t.substring(l,l+a.length):u=t.substring(l,c+this.Match_MaxBits),a==u)t=t.substring(0,l)+this.diff_text2(e[r].diffs)+t.substring(l+a.length);else{var _=this.diff_main(a,u,!1);if(a.length&amp;gt;this.Match_MaxBits&amp;amp;&amp;amp;this.diff_levenshtein(_)/a.length&amp;gt;this.Patch_DeleteThreshold)s[r]=!1;else{this.diff_cleanupSemanticLossless(_);for(var f=0,p,g=0;g&amp;lt;e[r].diffs.length;g++){var m=e[r].diffs[g];m[0]!==b&amp;amp;&amp;amp;(p=this.diff_xIndex(_,f)),m[0]===E?t=t.substring(0,l+p)+m[1]+t.substring(l+p):m[0]===M&amp;amp;&amp;amp;(t=t.substring(0,l+p)+t.substring(l+this.diff_xIndex(_,f+m[1].length))),m[0]!==M&amp;amp;&amp;amp;(f+=m[1].length)}}}}}return t=t.substring(n.length,t.length-n.length),[t,s]};h.prototype.patch_addPadding=function(e){for(var t=this.Patch_Margin,n=&amp;quot;&amp;quot;,i=1;i&amp;lt;=t;i++)n+=String.fromCharCode(i);for(var i=0;i&amp;lt;e.length;i++)e[i].start1+=t,e[i].start2+=t;var s=e[0],r=s.diffs;if(r.length==0||r[0][0]!=b)r.unshift(new h.Diff(b,n)),s.start1-=t,s.start2-=t,s.length1+=t,s.length2+=t;else if(t&amp;gt;r[0][1].length){var o=t-r[0][1].length;r[0][1]=n.substring(r[0][1].length)+r[0][1],s.start1-=o,s.start2-=o,s.length1+=o,s.length2+=o}if(s=e[e.length-1],r=s.diffs,r.length==0||r[r.length-1][0]!=b)r.push(new h.Diff(b,n)),s.length1+=t,s.length2+=t;else if(t&amp;gt;r[r.length-1][1].length){var o=t-r[r.length-1][1].length;r[r.length-1][1]+=n.substring(0,o),s.length1+=o,s.length2+=o}return n};h.prototype.patch_splitMax=function(e){for(var t=this.Match_MaxBits,n=0;n&amp;lt;e.length;n++)if(!(e[n].length1&amp;lt;=t)){var i=e[n];e.splice(n--,1);for(var s=i.start1,r=i.start2,o=&amp;quot;&amp;quot;;i.diffs.length!==0;){var a=new h.patch_obj,l=!0;for(a.start1=s-o.length,a.start2=r-o.length,o!==&amp;quot;&amp;quot;&amp;amp;&amp;amp;(a.length1=a.length2=o.length,a.diffs.push(new h.Diff(b,o)));i.diffs.length!==0&amp;amp;&amp;amp;a.length1&amp;lt;t-this.Patch_Margin;){var c=i.diffs[0][0],u=i.diffs[0][1];c===E?(a.length2+=u.length,r+=u.length,a.diffs.push(i.diffs.shift()),l=!1):c===M&amp;amp;&amp;amp;a.diffs.length==1&amp;amp;&amp;amp;a.diffs[0][0]==b&amp;amp;&amp;amp;u.length&amp;gt;2*t?(a.length1+=u.length,s+=u.length,l=!1,a.diffs.push(new h.Diff(c,u)),i.diffs.shift()):(u=u.substring(0,t-a.length1-this.Patch_Margin),a.length1+=u.length,s+=u.length,c===b?(a.length2+=u.length,r+=u.length):l=!1,a.diffs.push(new h.Diff(c,u)),u==i.diffs[0][1]?i.diffs.shift():i.diffs[0][1]=i.diffs[0][1].substring(u.length))}o=this.diff_text2(a.diffs),o=o.substring(o.length-this.Patch_Margin);var _=this.diff_text1(i.diffs).substring(0,this.Patch_Margin);_!==&amp;quot;&amp;quot;&amp;amp;&amp;amp;(a.length1+=_.length,a.length2+=_.length,a.diffs.length!==0&amp;amp;&amp;amp;a.diffs[a.diffs.length-1][0]===b?a.diffs[a.diffs.length-1][1]+=_:a.diffs.push(new h.Diff(b,_))),l||e.splice(++n,0,a)}}};h.prototype.patch_toText=function(e){for(var t=[],n=0;n&amp;lt;e.length;n++)t[n]=e[n];return t.join(&amp;quot;&amp;quot;)};h.prototype.patch_fromText=function(e){var t=[];if(!e)return t;for(var n=e.split(`&lt;br /&gt;
`),i=0,s=/^@@ -(\d+),?(\d*) \+(\d+),?(\d*) @@$/;i&amp;lt;n.length;){var r=n[i].match(s);if(!r)throw new Error(&amp;quot;Invalid patch string: &amp;quot;+n[i]);var o=new h.patch_obj;for(t.push(o),o.start1=parseInt(r[1],10),r[2]===&amp;quot;&amp;quot;?(o.start1--,o.length1=1):r[2]==&amp;quot;0&amp;quot;?o.length1=0:(o.start1--,o.length1=parseInt(r[2],10)),o.start2=parseInt(r[3],10),r[4]===&amp;quot;&amp;quot;?(o.start2--,o.length2=1):r[4]==&amp;quot;0&amp;quot;?o.length2=0:(o.start2--,o.length2=parseInt(r[4],10)),i++;i&amp;lt;n.length;){var a=n[i].charAt(0);try{var l=decodeURI(n[i].substring(1))}catch{throw new Error(&amp;quot;Illegal escape in patch_fromText: &amp;quot;+l)}if(a==&amp;quot;-&amp;quot;)o.diffs.push(new h.Diff(M,l));else if(a==&amp;quot;+&amp;quot;)o.diffs.push(new h.Diff(E,l));else if(a==&amp;quot; &amp;quot;)o.diffs.push(new h.Diff(b,l));else{if(a==&amp;quot;@&amp;quot;)break;if(a!==&amp;quot;&amp;quot;)throw new Error(&#039;Invalid patch mode &amp;quot;&#039;+a+&#039;&amp;quot; in: &#039;+l)}i++}}return t};h.patch_obj=function(){this.diffs=[],this.start1=null,this.start2=null,this.length1=0,this.length2=0};h.patch_obj.prototype.toString=function(){var e,t;this.length1===0?e=this.start1+&amp;quot;,0&amp;quot;:this.length1==1?e=this.start1+1:e=this.start1+1+&amp;quot;,&amp;quot;+this.length1,this.length2===0?t=this.start2+&amp;quot;,0&amp;quot;:this.length2==1?t=this.start2+1:t=this.start2+1+&amp;quot;,&amp;quot;+this.length2;for(var n=[&amp;quot;@@ -&amp;quot;+e+&amp;quot; +&amp;quot;+t+` @@&lt;br /&gt;
`],i,s=0;s&amp;lt;this.diffs.length;s++){switch(this.diffs[s][0]){case E:i=&amp;quot;+&amp;quot;;break;case M:i=&amp;quot;-&amp;quot;;break;case b:i=&amp;quot; &amp;quot;;break}n[s+1]=i+encodeURI(this.diffs[s][1])+`&lt;br /&gt;
`}return n.join(&amp;quot;&amp;quot;).replace(/%20/g,&amp;quot; &amp;quot;)};X.exports=h;X.exports.diff_match_patch=h;X.exports.DIFF_DELETE=M;X.exports.DIFF_INSERT=E;X.exports.DIFF_EQUAL=b});var ce,S,Ue,Wt,j,$e,We,Be,we,ie,Y,Ge,De,ye,ke,Bt,oe={},ae=[],Gt=/acit|ex(?:s|g|n|p|$)|rph|grid|ows|mnc|ntw|ine[ch]|zoo|^ord|itera/i,fe=Array.isArray;function N(e,t){for(var n in t)e[n]=t[n];return e}function Se(e){e&amp;amp;&amp;amp;e.parentNode&amp;amp;&amp;amp;e.parentNode.removeChild(e)}function zt(e,t,n){var i,s,r,o={};for(r in t)r==&amp;quot;key&amp;quot;?i=t[r]:r==&amp;quot;ref&amp;quot;?s=t[r]:o[r]=t[r];if(arguments.length&amp;gt;2&amp;amp;&amp;amp;(o.children=arguments.length&amp;gt;3?ce.call(arguments,2):n),typeof e==&amp;quot;function&amp;quot;&amp;amp;&amp;amp;e.defaultProps!=null)for(r in e.defaultProps)o[r]===void 0&amp;amp;&amp;amp;(o[r]=e.defaultProps[r]);return se(e,o,i,s,null)}function se(e,t,n,i,s){var r={type:e,props:t,key:n,ref:i,__k:null,__:null,__b:0,__e:null,__c:null,constructor:void 0,__v:s??++Ue,__i:-1,__u:0};return s==null&amp;amp;&amp;amp;S.vnode!=null&amp;amp;&amp;amp;S.vnode(r),r}function ze(){return{current:null}}function V(e){return e.children}function z(e,t){this.props=e,this.context=t}function U(e,t){if(t==null)return e.__?U(e.__,e.__i+1):null;for(var n;t&amp;lt;e.__k.length;t++)if((n=e.__k[t])!=null&amp;amp;&amp;amp;n.__e!=null)return n.__e;return typeof e.type==&amp;quot;function&amp;quot;?U(e):null}function Vt(e){if(e.__P&amp;amp;&amp;amp;e.__d){var t=e.__v,n=t.__e,i=[],s=[],r=N({},t);r.__v=t.__v+1,S.vnode&amp;amp;&amp;amp;S.vnode(r),Me(e.__P,r,t,e.__n,e.__P.namespaceURI,32&amp;amp;t.__u?[n]:null,i,n??U(t),!!(32&amp;amp;t.__u),s),r.__v=t.__v,r.__.__k[r.__i]=r,qe(i,r,s),t.__e=t.__=null,r.__e!=n&amp;amp;&amp;amp;Ve(r)}}function Ve(e){if((e=e.__)!=null&amp;amp;&amp;amp;e.__c!=null)return e.__e=e.__c.base=null,e.__k.some(function(t){if(t!=null&amp;amp;&amp;amp;t.__e!=null)return e.__e=e.__c.base=t.__e}),Ve(e)}function Re(e){(!e.__d&amp;amp;&amp;amp;(e.__d=!0)&amp;amp;&amp;amp;j.push(e)&amp;amp;&amp;amp;!le.__r++||$e!=S.debounceRendering)&amp;amp;&amp;amp;(($e=S.debounceRendering)||We)(le)}function le(){try{for(var e,t=1;j.length;)j.length&amp;gt;t&amp;amp;&amp;amp;j.sort(Be),e=j.shift(),t=j.length,Vt(e)}finally{j.length=le.__r=0}}function Je(e,t,n,i,s,r,o,a,l,c,u){var _,f,p,g,m,w,v=i&amp;amp;&amp;amp;i.__k||ae,d=t.length;for(l=Jt(n,t,v,l,d),_=0;_&amp;lt;d;_++)(p=n.__k[_])!=null&amp;amp;&amp;amp;(f=p.__i!=-1&amp;amp;&amp;amp;v[p.__i]||oe,p.__i=_,w=Me(e,p,f,s,r,o,a,l,c,u),g=p.__e,p.ref&amp;amp;&amp;amp;f.ref!=p.ref&amp;amp;&amp;amp;(f.ref&amp;amp;&amp;amp;Ee(f.ref,null,p),u.push(p.ref,p.__c||g,p)),m==null&amp;amp;&amp;amp;g!=null&amp;amp;&amp;amp;(m=g),4&amp;amp;p.__u?(l=Ze(p,l,e),f.__e&amp;amp;&amp;amp;(f.__e=null)):typeof p.type==&amp;quot;function&amp;quot;&amp;amp;&amp;amp;w!==void 0?l=w:g&amp;amp;&amp;amp;(l=g.nextSibling),p.__u&amp;amp;=-7);return n.__e=m,l}function Jt(e,t,n,i,s){var r,o,a,l,c,u=n.length,_=u,f=0;for(e.__k=new Array(s),r=0;r&amp;lt;s;r++)(o=t[r])!=null&amp;amp;&amp;amp;typeof o!=&amp;quot;boolean&amp;quot;&amp;amp;&amp;amp;typeof o!=&amp;quot;function&amp;quot;?(typeof o==&amp;quot;string&amp;quot;||typeof o==&amp;quot;number&amp;quot;||typeof o==&amp;quot;bigint&amp;quot;||o.constructor==String?o=e.__k[r]=se(null,o,null,null,null):fe(o)?o=e.__k[r]=se(V,{children:o},null,null,null):o.constructor===void 0&amp;amp;&amp;amp;o.__b&amp;gt;0?o=e.__k[r]=se(o.type,o.props,o.key,o.ref?o.ref:null,o.__v):e.__k[r]=o,l=r+f,o.__=e,o.__b=e.__b+1,a=null,(c=o.__i=Zt(o,n,l,_))!=-1&amp;amp;&amp;amp;(_--,(a=n[c])&amp;amp;&amp;amp;(a.__u|=2)),a==null||a.__v==null?(c==-1&amp;amp;&amp;amp;(s&amp;gt;u?f--:s&amp;lt;u&amp;amp;&amp;amp;f++),typeof o.type!=&amp;quot;function&amp;quot;&amp;amp;&amp;amp;(o.__u|=4)):c!=l&amp;amp;&amp;amp;(c==l-1?f--:c==l+1?f++:(c&amp;gt;l?f--:f++,o.__u|=4))):e.__k[r]=null;if(_)for(r=0;r&amp;lt;u;r++)(a=n[r])!=null&amp;amp;&amp;amp;(2&amp;amp;a.__u)==0&amp;amp;&amp;amp;(a.__e==i&amp;amp;&amp;amp;(i=U(a)),Xe(a,a));return i}function Ze(e,t,n){var i,s;if(typeof e.type==&amp;quot;function&amp;quot;){for(i=e.__k,s=0;i&amp;amp;&amp;amp;s&amp;lt;i.length;s++)i[s]&amp;amp;&amp;amp;(i[s].__=e,t=Ze(i[s],t,n));return t}e.__e!=t&amp;amp;&amp;amp;(t&amp;amp;&amp;amp;e.type&amp;amp;&amp;amp;!t.parentNode&amp;amp;&amp;amp;(t=U(e)),t=n.insertBefore(e.__e,t||null));do t=t&amp;amp;&amp;amp;t.nextSibling;while(t!=null&amp;amp;&amp;amp;t.nodeType==8);return t}function Zt(e,t,n,i){var s,r,o,a=e.key,l=e.type,c=t[n],u=c!=null&amp;amp;&amp;amp;(2&amp;amp;c.__u)==0;if(c===null&amp;amp;&amp;amp;a==null||u&amp;amp;&amp;amp;a==c.key&amp;amp;&amp;amp;l==c.type)return n;if(i&amp;gt;(u?1:0)){for(s=n-1,r=n+1;s&amp;gt;=0||r&amp;lt;t.length;)if((c=t[o=s&amp;gt;=0?s--:r++])!=null&amp;amp;&amp;amp;(2&amp;amp;c.__u)==0&amp;amp;&amp;amp;a==c.key&amp;amp;&amp;amp;l==c.type)return o}return-1}function je(e,t,n){t[0]==&amp;quot;-&amp;quot;?e.setProperty(t,n??&amp;quot;&amp;quot;):e[t]=n==null?&amp;quot;&amp;quot;:typeof n!=&amp;quot;number&amp;quot;||Gt.test(t)?n:n+&amp;quot;px&amp;quot;}function re(e,t,n,i,s){var r,o;e:if(t==&amp;quot;style&amp;quot;)if(typeof n==&amp;quot;string&amp;quot;)e.style.cssText=n;else{if(typeof i==&amp;quot;string&amp;quot;&amp;amp;&amp;amp;(e.style.cssText=i=&amp;quot;&amp;quot;),i)for(t in i)n&amp;amp;&amp;amp;t in n||je(e.style,t,&amp;quot;&amp;quot;);if(n)for(t in n)i&amp;amp;&amp;amp;n[t]==i[t]||je(e.style,t,n[t])}else if(t[0]==&amp;quot;o&amp;quot;&amp;amp;&amp;amp;t[1]==&amp;quot;n&amp;quot;)r=t!=(t=t.replace(Ge,&amp;quot;$1&amp;quot;)),o=t.toLowerCase(),t=o in e||t==&amp;quot;onFocusOut&amp;quot;||t==&amp;quot;onFocusIn&amp;quot;?o.slice(2):t.slice(2),e.l||(e.l={}),e.l[t+r]=n,n?i?n[Y]=i[Y]:(n[Y]=De,e.addEventListener(t,r?ke:ye,r)):e.removeEventListener(t,r?ke:ye,r);else{if(s==&amp;quot;http://www.w3.org/2000/svg&amp;quot;)t=t.replace(/xlink(H|:h)/,&amp;quot;h&amp;quot;).replace(/sName$/,&amp;quot;s&amp;quot;);else if(t!=&amp;quot;width&amp;quot;&amp;amp;&amp;amp;t!=&amp;quot;height&amp;quot;&amp;amp;&amp;amp;t!=&amp;quot;href&amp;quot;&amp;amp;&amp;amp;t!=&amp;quot;list&amp;quot;&amp;amp;&amp;amp;t!=&amp;quot;form&amp;quot;&amp;amp;&amp;amp;t!=&amp;quot;tabIndex&amp;quot;&amp;amp;&amp;amp;t!=&amp;quot;download&amp;quot;&amp;amp;&amp;amp;t!=&amp;quot;rowSpan&amp;quot;&amp;amp;&amp;amp;t!=&amp;quot;colSpan&amp;quot;&amp;amp;&amp;amp;t!=&amp;quot;role&amp;quot;&amp;amp;&amp;amp;t!=&amp;quot;popover&amp;quot;&amp;amp;&amp;amp;t in e)try{e[t]=n??&amp;quot;&amp;quot;;break e}catch{}typeof n==&amp;quot;function&amp;quot;||(n==null||n===!1&amp;amp;&amp;amp;t[4]!=&amp;quot;-&amp;quot;?e.removeAttribute(t):e.setAttribute(t,t==&amp;quot;popover&amp;quot;&amp;amp;&amp;amp;n==1?&amp;quot;&amp;quot;:n))}}function Oe(e){return function(t){if(this.l){var n=this.l[t.type+e];if(t[ie]==null)t[ie]=De++;else if(t[ie]&amp;lt;n[Y])return;return n(S.event?S.event(t):t)}}}function Me(e,t,n,i,s,r,o,a,l,c){var u,_,f,p,g,m,w,v,d,y,D,T,P,A,C,I,H=t.type;if(t.constructor!==void 0)return null;128&amp;amp;n.__u&amp;amp;&amp;amp;(l=!!(32&amp;amp;n.__u),r=[a=t.__e=n.__e]),(u=S.__b)&amp;amp;&amp;amp;u(t);e:if(typeof H==&amp;quot;function&amp;quot;){_=o.length;try{if(d=t.props,y=H.prototype&amp;amp;&amp;amp;H.prototype.render,D=(u=H.contextType)&amp;amp;&amp;amp;i[u.__c],T=u?D?D.props.value:u.__:i,n.__c?v=(f=t.__c=n.__c).__=f.__E:(y?t.__c=f=new H(d,T):(t.__c=f=new z(d,T),f.constructor=H,f.render=qt),D&amp;amp;&amp;amp;D.sub(f),f.state||(f.state={}),f.__n=i,p=f.__d=!0,f.__h=[],f._sb=[]),y&amp;amp;&amp;amp;f.__s==null&amp;amp;&amp;amp;(f.__s=f.state),y&amp;amp;&amp;amp;H.getDerivedStateFromProps!=null&amp;amp;&amp;amp;(f.__s==f.state&amp;amp;&amp;amp;(f.__s=N({},f.__s)),N(f.__s,H.getDerivedStateFromProps(d,f.__s))),g=f.props,m=f.state,f.__v=t,p)y&amp;amp;&amp;amp;H.getDerivedStateFromProps==null&amp;amp;&amp;amp;f.componentWillMount!=null&amp;amp;&amp;amp;f.componentWillMount(),y&amp;amp;&amp;amp;f.componentDidMount!=null&amp;amp;&amp;amp;f.__h.push(f.componentDidMount);else{if(y&amp;amp;&amp;amp;H.getDerivedStateFromProps==null&amp;amp;&amp;amp;d!==g&amp;amp;&amp;amp;f.componentWillReceiveProps!=null&amp;amp;&amp;amp;f.componentWillReceiveProps(d,T),t.__v==n.__v||!f.__e&amp;amp;&amp;amp;f.shouldComponentUpdate!=null&amp;amp;&amp;amp;f.shouldComponentUpdate(d,f.__s,T)===!1){t.__v!=n.__v&amp;amp;&amp;amp;(f.props=d,f.state=f.__s,f.__d=!1),t.__e=n.__e,t.__k=n.__k,t.__k.some(function(G){G&amp;amp;&amp;amp;(G.__=t)}),ae.push.apply(f.__h,f._sb),f._sb=[],f.__h.length&amp;amp;&amp;amp;o.push(f),a=U(n);break e}f.componentWillUpdate!=null&amp;amp;&amp;amp;f.componentWillUpdate(d,f.__s,T),y&amp;amp;&amp;amp;f.componentDidUpdate!=null&amp;amp;&amp;amp;f.__h.push(function(){f.componentDidUpdate(g,m,w)})}if(f.context=T,f.props=d,f.__P=e,f.__e=!1,P=S.__r,A=0,y)f.state=f.__s,f.__d=!1,P&amp;amp;&amp;amp;P(t),u=f.render(f.props,f.state,f.context),ae.push.apply(f.__h,f._sb),f._sb=[];else do f.__d=!1,P&amp;amp;&amp;amp;P(t),u=f.render(f.props,f.state,f.context),f.state=f.__s;while(f.__d&amp;amp;&amp;amp;++A&amp;lt;25);f.state=f.__s,f.getChildContext!=null&amp;amp;&amp;amp;(i=N(N({},i),f.getChildContext())),y&amp;amp;&amp;amp;!p&amp;amp;&amp;amp;f.getSnapshotBeforeUpdate!=null&amp;amp;&amp;amp;(w=f.getSnapshotBeforeUpdate(g,m)),C=u!=null&amp;amp;&amp;amp;u.type===V&amp;amp;&amp;amp;u.key==null?Qe(u.props.children):u,a=Je(e,fe(C)?C:[C],t,n,i,s,r,o,a,l,c),f.base=t.__e,t.__u&amp;amp;=-161,f.__h.length&amp;amp;&amp;amp;o.push(f),v&amp;amp;&amp;amp;(f.__E=f.__=null)}catch(G){if(o.length=_,t.__v=null,l||r!=null){if(G.then){for(t.__u|=l?160:128;a&amp;amp;&amp;amp;a.nodeType==8&amp;amp;&amp;amp;a.nextSibling;)a=a.nextSibling;r!=null&amp;amp;&amp;amp;(r[r.indexOf(a)]=null),t.__e=a}else if(r!=null)for(I=r.length;I--;)Se(r[I])}else t.__e=n.__e;t.__k==null&amp;amp;&amp;amp;(t.__k=n.__k||[]),G.then||Ke(t),S.__e(G,t,n)}}else r==null&amp;amp;&amp;amp;t.__v==n.__v?(t.__k=n.__k,t.__e=n.__e):a=t.__e=Kt(n.__e,t,n,i,s,r,o,l,c);return(u=S.diffed)&amp;amp;&amp;amp;u(t),128&amp;amp;t.__u?void 0:a}function Ke(e){e&amp;amp;&amp;amp;(e.__c&amp;amp;&amp;amp;(e.__c.__e=!0),e.__k&amp;amp;&amp;amp;e.__k.some(Ke))}function qe(e,t,n){for(var i=0;i&amp;lt;n.length;i++)Ee(n[i],n[++i],n[++i]);S.__c&amp;amp;&amp;amp;S.__c(t,e),e.some(function(s){try{e=s.__h,s.__h=[],e.some(function(r){r.call(s)})}catch(r){S.__e(r,s.__v)}})}function Qe(e){return typeof e!=&amp;quot;object&amp;quot;||e==null||e.__b&amp;gt;0?e:fe(e)?e.map(Qe):e.constructor!==void 0?null:N({},e)}function Kt(e,t,n,i,s,r,o,a,l){var c,u,_,f,p,g,m,w=n.props||oe,v=t.props,d=t.type;if(d==&amp;quot;svg&amp;quot;?s=&amp;quot;http://www.w3.org/2000/svg&amp;quot;:d==&amp;quot;math&amp;quot;?s=&amp;quot;http://www.w3.org/1998/Math/MathML&amp;quot;:s||(s=&amp;quot;http://www.w3.org/1999/xhtml&amp;quot;),r!=null){for(c=0;c&amp;lt;r.length;c++)if((p=r[c])&amp;amp;&amp;amp;&amp;quot;setAttribute&amp;quot;in p==!!d&amp;amp;&amp;amp;(d?p.localName==d:p.nodeType==3)){e=p,r[c]=null;break}}if(e==null){if(d==null)return document.createTextNode(v);e=document.createElementNS(s,d,v.is&amp;amp;&amp;amp;v),a&amp;amp;&amp;amp;(S.__m&amp;amp;&amp;amp;S.__m(t,r),a=!1),r=null}if(d==null)w===v||a&amp;amp;&amp;amp;e.data==v||(e.data=v);else{if(r=d==&amp;quot;textarea&amp;quot;&amp;amp;&amp;amp;v.defaultValue!=null?null:r&amp;amp;&amp;amp;ce.call(e.childNodes),!a&amp;amp;&amp;amp;r!=null)for(w={},c=0;c&amp;lt;e.attributes.length;c++)w[(p=e.attributes[c]).name]=p.value;for(c in w)p=w[c],c==&amp;quot;dangerouslySetInnerHTML&amp;quot;?_=p:c==&amp;quot;children&amp;quot;||c in v||c==&amp;quot;value&amp;quot;&amp;amp;&amp;amp;&amp;quot;defaultValue&amp;quot;in v||c==&amp;quot;checked&amp;quot;&amp;amp;&amp;amp;&amp;quot;defaultChecked&amp;quot;in v||re(e,c,null,p,s);for(c in v)p=v[c],c==&amp;quot;children&amp;quot;?f=p:c==&amp;quot;dangerouslySetInnerHTML&amp;quot;?u=p:c==&amp;quot;value&amp;quot;?g=p:c==&amp;quot;checked&amp;quot;?m=p:a&amp;amp;&amp;amp;typeof p!=&amp;quot;function&amp;quot;||w[c]===p||re(e,c,p,w[c],s);if(u)a||_&amp;amp;&amp;amp;(u.__html==_.__html||u.__html==e.innerHTML)||(e.innerHTML=u.__html),t.__k=[];else if(_&amp;amp;&amp;amp;(e.innerHTML=&amp;quot;&amp;quot;),Je(t.type==&amp;quot;template&amp;quot;?e.content:e,fe(f)?f:[f],t,n,i,d==&amp;quot;foreignObject&amp;quot;?&amp;quot;http://www.w3.org/1999/xhtml&amp;quot;:s,r,o,r?r[0]:n.__k&amp;amp;&amp;amp;U(n,0),a,l),r!=null)for(c=r.length;c--;)Se(r[c]);a&amp;amp;&amp;amp;d!=&amp;quot;textarea&amp;quot;||(c=&amp;quot;value&amp;quot;,d==&amp;quot;progress&amp;quot;&amp;amp;&amp;amp;g==null?e.removeAttribute(&amp;quot;value&amp;quot;):g!=null&amp;amp;&amp;amp;(g!==e[c]||d==&amp;quot;progress&amp;quot;&amp;amp;&amp;amp;!g||d==&amp;quot;option&amp;quot;&amp;amp;&amp;amp;g!=w[c])&amp;amp;&amp;amp;re(e,c,g,w[c],s),c=&amp;quot;checked&amp;quot;,m!=null&amp;amp;&amp;amp;m!=e[c]&amp;amp;&amp;amp;re(e,c,m,w[c],s))}return e}function Ee(e,t,n){try{if(typeof e==&amp;quot;function&amp;quot;){var i=typeof e.__u==&amp;quot;function&amp;quot;;i&amp;amp;&amp;amp;e.__u(),i&amp;amp;&amp;amp;t==null||(e.__u=e(t))}else e.current=t}catch(s){S.__e(s,n)}}function Xe(e,t,n){var i,s;if(S.unmount&amp;amp;&amp;amp;S.unmount(e),(i=e.ref)&amp;amp;&amp;amp;(i.current&amp;amp;&amp;amp;i.current!=e.__e||Ee(i,null,t)),(i=e.__c)!=null){if(i.componentWillUnmount)try{i.componentWillUnmount()}catch(r){S.__e(r,t)}i.base=i.__P=i.__n=null}if(i=e.__k)for(s=0;s&amp;lt;i.length;s++)i[s]&amp;amp;&amp;amp;Xe(i[s],t,n||typeof e.type!=&amp;quot;function&amp;quot;);n||Se(e.__e),e.__c=e.__=e.__e=void 0}function qt(e,t,n){return this.constructor(e,n)}function Ye(e,t,n){var i,s,r,o;t==document&amp;amp;&amp;amp;(t=document.documentElement),S.__&amp;amp;&amp;amp;S.__(e,t),s=(i=typeof n==&amp;quot;function&amp;quot;)?null:n&amp;amp;&amp;amp;n.__k||t.__k,r=[],o=[],Me(t,e=(!i&amp;amp;&amp;amp;n||t).__k=zt(V,null,[e]),s||oe,oe,t.namespaceURI,!i&amp;amp;&amp;amp;n?[n]:s?null:t.firstChild?ce.call(t.childNodes):null,r,!i&amp;amp;&amp;amp;n?n:s?s.__e:t.firstChild,i,o),qe(r,e,o),e.props.children=null}ce=ae.slice,S={__e:function(e,t,n,i){for(var s,r,o;t=t.__;)if((s=t.__c)&amp;amp;&amp;amp;!s.__)try{if((r=s.constructor)&amp;amp;&amp;amp;r.getDerivedStateFromError!=null&amp;amp;&amp;amp;(s.setState(r.getDerivedStateFromError(e)),o=s.__d),s.componentDidCatch!=null&amp;amp;&amp;amp;(s.componentDidCatch(e,i||{}),o=s.__d),o)return s.__E=s}catch(a){e=a}throw e}},Ue=0,Wt=function(e){return e!=null&amp;amp;&amp;amp;e.constructor===void 0},z.prototype.setState=function(e,t){var n;n=this.__s!=null&amp;amp;&amp;amp;this.__s!=this.state?this.__s:this.__s=N({},this.state),typeof e==&amp;quot;function&amp;quot;&amp;amp;&amp;amp;(e=e(N({},n),this.props)),e&amp;amp;&amp;amp;N(n,e),e!=null&amp;amp;&amp;amp;this.__v&amp;amp;&amp;amp;(t&amp;amp;&amp;amp;this._sb.push(t),Re(this))},z.prototype.forceUpdate=function(e){this.__v&amp;amp;&amp;amp;(this.__e=!0,e&amp;amp;&amp;amp;this.__h.push(e),Re(this))},z.prototype.render=V,j=[],We=typeof Promise==&amp;quot;function&amp;quot;?Promise.prototype.then.bind(Promise.resolve()):setTimeout,Be=function(e,t){return e.__v.__b-t.__v.__b},le.__r=0,we=Math.random().toString(8),ie=&amp;quot;__d&amp;quot;+we,Y=&amp;quot;__a&amp;quot;+we,Ge=/(PointerCapture)$|Capture$/i,De=0,ye=Oe(!1),ke=Oe(!0),Bt=0;var Qt=0;function k(e,t,n,i,s,r){t||(t={});var o,a,l=t;if(&amp;quot;ref&amp;quot;in l)for(a in l={},t)a==&amp;quot;ref&amp;quot;?o=t[a]:l[a]=t[a];var c={type:e,props:l,key:n,ref:o,__k:null,__:null,__b:0,__e:null,__c:null,constructor:void 0,__v:--Qt,__i:-1,__u:0,__source:s,__self:r};if(typeof e==&amp;quot;function&amp;quot;&amp;amp;&amp;amp;(o=e.defaultProps))for(a in o)l[a]===void 0&amp;amp;&amp;amp;(l[a]=o[a]);return S.vnode&amp;amp;&amp;amp;S.vnode(c),c}function Xt(e,t,n){t.innerHTML=&amp;quot;&amp;quot;,Ye(k(e,{...n}),t)}var xe=Xt;var Yt={data:&amp;quot;&amp;quot;},xt=e=&amp;gt;{if(typeof window==&amp;quot;object&amp;quot;){let t=(e?e.querySelector(&amp;quot;#_goober&amp;quot;):window._goober)||Object.assign(document.createElement(&amp;quot;style&amp;quot;),{innerHTML:&amp;quot; &amp;quot;,id:&amp;quot;_goober&amp;quot;});return t.nonce=window.__nonce__,t.parentNode||(e||document.head).appendChild(t),t.firstChild}return e||Yt};var en=/(?:([\u0080-\uFFFF\w-%@]+) *:? *([^{;]+?);|([^;}{]*?) *{)|(}\s*)/g,tn=/\/\*[^]*?\*\/|  +/g,et=/\n+/g,W=(e,t)=&amp;gt;{let n=&amp;quot;&amp;quot;,i=&amp;quot;&amp;quot;,s=&amp;quot;&amp;quot;;for(let r in e){let o=e[r];r[0]==&amp;quot;@&amp;quot;?r[1]==&amp;quot;i&amp;quot;?n=r+&amp;quot; &amp;quot;+o+&amp;quot;;&amp;quot;:i+=r[1]==&amp;quot;f&amp;quot;?W(o,r):r+&amp;quot;{&amp;quot;+W(o,r[1]==&amp;quot;k&amp;quot;?&amp;quot;&amp;quot;:t)+&amp;quot;}&amp;quot;:typeof o==&amp;quot;object&amp;quot;?i+=W(o,t?t.replace(/([^,])+/g,a=&amp;gt;r.replace(/([^,]*:\S+\([^)]*\))|([^,])+/g,l=&amp;gt;/&amp;amp;/.test(l)?l.replace(/&amp;amp;/g,a):a?a+&amp;quot; &amp;quot;+l:l)):r):o!=null&amp;amp;&amp;amp;(r=r[1]==&amp;quot;-&amp;quot;?r:r.replace(/[A-Z]/g,&amp;quot;-$&amp;amp;&amp;quot;).toLowerCase(),s+=W.p?W.p(r,o):r+&amp;quot;:&amp;quot;+o+&amp;quot;;&amp;quot;)}return n+(t&amp;amp;&amp;amp;s?t+&amp;quot;{&amp;quot;+s+&amp;quot;}&amp;quot;:s)+i},O={},tt=e=&amp;gt;{if(typeof e==&amp;quot;object&amp;quot;){let t=&amp;quot;&amp;quot;;for(let n in e)t+=n+tt(e[n]);return t}return e},nn=(e,t,n,i,s)=&amp;gt;{let r=tt(e),o=O[r]||(O[r]=(l=&amp;gt;{let c=0,u=11;for(;c&amp;lt;l.length;)u=101*u+l.charCodeAt(c++)&amp;gt;&amp;gt;&amp;gt;0;return&amp;quot;go&amp;quot;+u})(r));if(!O[o]){let l=r!==e?e:(c=&amp;gt;{let u,_,f=[{}];for(;u=en.exec(c.replace(tn,&amp;quot;&amp;quot;));)u[4]?f.shift():u[3]?(_=u[3].replace(et,&amp;quot; &amp;quot;).trim(),f.unshift(f[0][_]=f[0][_]||{})):f[0][u[1]]=u[2].replace(et,&amp;quot; &amp;quot;).trim();return f[0]})(e);O[o]=W(s?{[&amp;quot;@keyframes &amp;quot;+o]:l}:l,n?&amp;quot;&amp;quot;:&amp;quot;.&amp;quot;+o)}let a=n&amp;amp;&amp;amp;O.g;return n&amp;amp;&amp;amp;(O.g=O[o]),((l,c,u,_)=&amp;gt;{_?c.data=c.data.replace(_,l):c.data.indexOf(l)===-1&amp;amp;&amp;amp;(c.data=u?l+c.data:c.data+l)})(O[o],t,i,a),o},rn=(e,t,n)=&amp;gt;e.reduce((i,s,r)=&amp;gt;{let o=t[r];if(o&amp;amp;&amp;amp;o.call){let a=o(n),l=a&amp;amp;&amp;amp;a.props&amp;amp;&amp;amp;a.props.className||/^go/.test(a)&amp;amp;&amp;amp;a;o=l?&amp;quot;.&amp;quot;+l:a&amp;amp;&amp;amp;typeof a==&amp;quot;object&amp;quot;?a.props?&amp;quot;&amp;quot;:W(a,&amp;quot;&amp;quot;):a===!1?&amp;quot;&amp;quot;:a}return i+s+(o??&amp;quot;&amp;quot;)},&amp;quot;&amp;quot;);function $(e){let t=this||{},n=e.call?e(t.p):e;return nn(n.unshift?n.raw?rn(n,[].slice.call(arguments,1),t.p):n.reduce((i,s)=&amp;gt;Object.assign(i,s&amp;amp;&amp;amp;s.call?s(t.p):s),{}):n,xt(t.target),t.g,t.o,t.k)}var yr=$.bind({g:1}),kr=$.bind({k:1});function sn(e,...t){let n=[],{length:i}=e;for(let r=0;r&amp;lt;i;r++)n.push(e[r],t[r]);n.pop();let s=n.join(&amp;quot;&amp;quot;);return s=s.replaceAll(/\/\*[\s\S]*?\*\//g,&amp;quot;&amp;quot;),s=s.replaceAll(/\s\/\/.*/g,&amp;quot;&amp;quot;),s}var ue=sn;var J,nt,on={info:&amp;quot;\u2139\uFE0F&amp;quot;,warning:&amp;quot;\u26A0\uFE0F&amp;quot;,error:&amp;quot;\u26D4&amp;quot;},F=&amp;quot;tool-log&amp;quot;,an=ue`&lt;br /&gt;
    .${F} {&lt;br /&gt;
        overflow-y: scroll;&lt;br /&gt;
        height: 200px;&lt;br /&gt;
        flex-shrink: 0;&lt;br /&gt;
    }&lt;br /&gt;
&lt;br /&gt;
    .${F} table {&lt;br /&gt;
        width: 100%;&lt;br /&gt;
        border-collapse: collapse;&lt;br /&gt;
        margin: 0;&lt;br /&gt;
    }&lt;br /&gt;
&lt;br /&gt;
    .${F} th {&lt;br /&gt;
        text-align: left;&lt;br /&gt;
    }&lt;br /&gt;
&lt;br /&gt;
    .${F} th,&lt;br /&gt;
    .${F} td {&lt;br /&gt;
        border: solid 1px rgba(255, 255, 255, 0.1);&lt;br /&gt;
        border-left: none;&lt;br /&gt;
        border-right: none;&lt;br /&gt;
        vertical-align: top;&lt;br /&gt;
        padding: 4px;&lt;br /&gt;
    }&lt;br /&gt;
&lt;br /&gt;
    .${F} th {&lt;br /&gt;
        border-top: none;&lt;br /&gt;
    }&lt;br /&gt;
&lt;br /&gt;
    .${F} table {&lt;br /&gt;
        border: solid 1px rgba(255, 255, 255, 0.1);&lt;br /&gt;
    }&lt;br /&gt;
&lt;br /&gt;
    .${F} th {&lt;br /&gt;
        background: rgba(255, 255, 255, 0.1);&lt;br /&gt;
    }&lt;br /&gt;
&lt;br /&gt;
    .${F} td:nth-child(1) {&lt;br /&gt;
        width: 90px;&lt;br /&gt;
    }&lt;br /&gt;
&lt;br /&gt;
    .${F} td:nth-child(2),&lt;br /&gt;
    .${F} th:nth-child(2) {&lt;br /&gt;
        width: 20px;&lt;br /&gt;
        text-align: center;&lt;br /&gt;
    }&lt;br /&gt;
&lt;br /&gt;
    .${F} td &amp;gt; div &amp;gt; div {&lt;br /&gt;
        cursor: pointer;&lt;br /&gt;
        color: yellow;&lt;br /&gt;
    }&lt;br /&gt;
&lt;br /&gt;
    .${F} textarea {&lt;br /&gt;
        width: calc(100% - 8px);&lt;br /&gt;
        height: 200px;&lt;br /&gt;
    }&lt;br /&gt;
`;function ln(e,...t){let n=e.endsWith(&amp;quot;!&amp;quot;)?e.startsWith(&amp;quot;!&amp;quot;)?&amp;quot;error&amp;quot;:&amp;quot;warning&amp;quot;:&amp;quot;info&amp;quot;;cn(n,e,t)}function rt(e){J=e,J.classList.add(F),J.innerHTML=`&lt;br /&gt;
        &amp;lt;style&amp;gt;${an}&amp;lt;/style&amp;gt;&lt;br /&gt;
        &amp;lt;table class=&#039;wikitable&#039;&amp;gt;&lt;br /&gt;
            &amp;lt;tr&amp;gt;&lt;br /&gt;
                &amp;lt;th&amp;gt;Timestamp&amp;lt;/th&amp;gt;&lt;br /&gt;
                &amp;lt;th&amp;gt;\u{1F197}&amp;lt;/th&amp;gt;&lt;br /&gt;
                &amp;lt;th&amp;gt;Message&amp;lt;/th&amp;gt;&lt;br /&gt;
            &amp;lt;/tr&amp;gt;&lt;br /&gt;
        &amp;lt;/table&amp;gt;`,nt=J.querySelector(&amp;quot;table&amp;quot;)}function cn(e,t,n){let s=new Date().toLocaleTimeString(&amp;quot;en-GB&amp;quot;,{hour12:!1,hour:&amp;quot;2-digit&amp;quot;,minute:&amp;quot;2-digit&amp;quot;,second:&amp;quot;2-digit&amp;quot;,fractionalSecondDigits:3}),r=document.createElement(&amp;quot;tr&amp;quot;);Pe(r,s),Pe(r,on[e]),Pe(r,fn(t,n)),nt.appendChild(r),J.scrollTo({top:J.scrollHeight,behavior:&amp;quot;smooth&amp;quot;})}function Pe(e,t){let n=document.createElement(&amp;quot;td&amp;quot;);t=t instanceof Node?t:document.createTextNode(t),n.appendChild(t),e.appendChild(n)}function fn(e,t){if(e=e.replace(/^!/,&amp;quot;&amp;quot;),console.log(e,...t),!t.length)return document.createTextNode(e);let n=document.createElement(&amp;quot;div&amp;quot;),i=document.createElement(&amp;quot;div&amp;quot;);i.innerHTML=e,i.onclick=function(){let r=this.nextElementSibling.style.display!==&amp;quot;none&amp;quot;;this.nextElementSibling.style.display=r?&amp;quot;none&amp;quot;:&amp;quot;block&amp;quot;},n.appendChild(i);let s=document.createElement(&amp;quot;textarea&amp;quot;);return s.style.display=&amp;quot;none&amp;quot;,s.innerHTML=un(t),n.appendChild(s),n}function un(e){let t=[];for(let n of e)typeof n==&amp;quot;object&amp;quot;&amp;amp;&amp;amp;n?n instanceof Error?t.push(n.stack):t.push(JSON.stringify(n,null,4)):t.push(n);return t.join(`&lt;br /&gt;
`)}var L=ln;function hn(e,...t){if(typeof e==&amp;quot;function&amp;quot;)try{let n=e(...t);return n&amp;amp;&amp;amp;typeof n.then==&amp;quot;function&amp;quot;?n.then(i=&amp;gt;[i,null]).catch(i=&amp;gt;[null,i]):[n,null]}catch(n){return[null,n]}return e&amp;amp;&amp;amp;typeof e.then==&amp;quot;function&amp;quot;?e.then(n=&amp;gt;[n,null]).catch(n=&amp;gt;[null,n]):[e,null]}var x=hn;var it=window.location.host||&amp;quot;localhost&amp;quot;,Z=&amp;quot;store&amp;quot;;async function st(e){if(!(await indexedDB.databases()).find(i=&amp;gt;i.name===it))return;let n=await at();if(!n.objectStoreNames.contains(Z)){n.close();return}return new Promise((i,s)=&amp;gt;{let r=n.transaction(Z).objectStore(Z).get(e);r.onsuccess=()=&amp;gt;{i(r.result),n.close()},r.onerror=()=&amp;gt;{s(r.error),n.close()}})}async function ot(e,t){let n=await at();return new Promise((i,s)=&amp;gt;{let r=n.transaction(Z,&amp;quot;readwrite&amp;quot;);r.objectStore(Z).put(t,e),r.oncomplete=()=&amp;gt;{i(),n.close()},r.onerror=()=&amp;gt;{s(r.error),n.close()}})}function at(){return new Promise((e,t)=&amp;gt;{let n=indexedDB.open(it);n.onupgradeneeded=i=&amp;gt;i.target.result.createObjectStore(Z),n.onsuccess=()=&amp;gt;e(n.result),n.onerror=()=&amp;gt;t(n.error)})}var Ae=&amp;quot;gameDirHandle&amp;quot;,ee=&amp;quot;diff-list&amp;quot;,R=&amp;quot;diff-path&amp;quot;,he=&amp;quot;diff-label&amp;quot;,te=&amp;quot;diff-new&amp;quot;,K=&amp;quot;diff-identical&amp;quot;,q=&amp;quot;diff-changed&amp;quot;,B=&amp;quot;diff-content&amp;quot;,Q=&amp;quot;diff-collapsed&amp;quot;;var Te=new Proxy(()=&amp;gt;{},{get:()=&amp;gt;Te,apply:()=&amp;gt;Te}),lt=Te;function _n(e,...t){if(typeof e==&amp;quot;function&amp;quot;)try{let n=e(...t);return n&amp;amp;&amp;amp;typeof n.then==&amp;quot;function&amp;quot;?n.then(i=&amp;gt;[i,null]).catch(i=&amp;gt;[null,i]):[n,null]}catch(n){return[null,n]}return e&amp;amp;&amp;amp;typeof e.then==&amp;quot;function&amp;quot;?e.then(n=&amp;gt;[n,null]).catch(n=&amp;gt;[null,n]):[e,null]}var _e=_n;var ct=new Map;async function pn(e,t){let n=await gn(e,t);return ct.set(n,t),n.on(&amp;quot;message&amp;quot;,dn.bind(null,n)),{run:async()=&amp;gt;await vn(n,&amp;quot;run&amp;quot;)}}async function gn(e,t){let n=new lt.Worker(e);return n.on(&amp;quot;error&amp;quot;,()=&amp;gt;t.log(&amp;quot;!Worker error!&amp;quot;)),new Promise(i=&amp;gt;{let s=r=&amp;gt;{r?.type===&amp;quot;ready&amp;quot;&amp;amp;&amp;amp;(n.off(&amp;quot;message&amp;quot;,s),i(n))};n.on(&amp;quot;message&amp;quot;,s)})}async function dn(e,t){let n=ct.get(e),{type:i,payload:s}=t;if(typeof n[i]!=&amp;quot;function&amp;quot;)return;let[r,o]=await _e(n[i],...s);o||e.postMessage({type:i,payload:r})}async function vn(e,t,n){return new Promise(i=&amp;gt;{let s=r=&amp;gt;{r.type===t&amp;amp;&amp;amp;(e.off(&amp;quot;message&amp;quot;,s),i(r.payload))};e.on(&amp;quot;message&amp;quot;,s),e.postMessage({type:t,payload:n})})}var ft=pn;var ut=new Map;async function mn(e,t){let n=await bn(e,t);return ut.set(n,t),n.addEventListener(&amp;quot;message&amp;quot;,wn.bind(null,n)),{run:async()=&amp;gt;await yn(n,&amp;quot;run&amp;quot;)}}async function bn(e,t){let n;return window.mw?n=await kn(e,t):n=new Worker(`data:application/javascript,importScripts(&#039;${e}?${Math.random()}&#039;);`),n&amp;amp;&amp;amp;n.addEventListener(&amp;quot;error&amp;quot;,()=&amp;gt;t.log(&amp;quot;!Worker error!&amp;quot;)),new Promise(i=&amp;gt;{let s=r=&amp;gt;{(r.data&amp;amp;&amp;amp;typeof r.data==&amp;quot;object&amp;quot;?r.data:{}).type===&amp;quot;ready&amp;quot;&amp;amp;&amp;amp;(n.removeEventListener(&amp;quot;message&amp;quot;,s),i(n))};n.addEventListener(&amp;quot;message&amp;quot;,s)})}async function wn(e,t){let n=ut.get(e),{type:i,payload:s}=t.data;if(typeof n[i]!=&amp;quot;function&amp;quot;)return;let[r,o]=await _e(n[i],...s);o||e.postMessage({type:i,payload:r})}async function yn(e,t,n){return new Promise(i=&amp;gt;{let s=r=&amp;gt;{let o=r.data&amp;amp;&amp;amp;typeof r.data==&amp;quot;object&amp;quot;?r.data:{};o.type===t&amp;amp;&amp;amp;(e.removeEventListener(&amp;quot;message&amp;quot;,s),i(o.payload))};e.addEventListener(&amp;quot;message&amp;quot;,s),e.postMessage({type:t,payload:n})})}async function kn(e,t){let n=mw.util.getUrl(e,{action:&amp;quot;raw&amp;quot;,ctype:&amp;quot;text/javascript&amp;quot;,v:Date.now()}),i=await fetch(n,{cache:&amp;quot;no-cache&amp;quot;});if(!i.ok){t.log(&amp;quot;!Failed to load wiki worker!&amp;quot;,i.statusText);return}let s=await i.text(),r=new Blob([s],{type:&amp;quot;application/javascript&amp;quot;}),o=URL.createObjectURL(r),a=new Worker(o);return URL.revokeObjectURL(o),a}var ht=mn;async function Dn(e,t){if(typeof e==&amp;quot;string&amp;quot;){let n=e;return typeof process&amp;lt;&amp;quot;u&amp;quot;&amp;amp;&amp;amp;process.versions?.node!==null?await ft(n,t):await ht(n,t)}else return await Sn(e,t)}async function Sn(e,t){return{run:()=&amp;gt;e(t)}}var _t=Dn;var pt=console.log,Mn=!1,En=[];function Pn(...e){if(Mn){let t=[];for(let n of e)t.push(typeof n==&amp;quot;object&amp;quot;?JSON.stringify(n,null,4):n);En.push(t.join(`&lt;br /&gt;
`))}pt(...e)}function gt(e){pt=e}var Le=Pn;async function An(e,t){gt(e.log),Le(&amp;quot;Beginning to parse...&amp;quot;);let n=Date.now(),s=await(await _t(t,e)).run();return Le(`Finished parsing in ${Date.now()-n} ms.`),s}var dt=An;async function Tn(e,t,n,i){return vt(e,&amp;quot;&amp;quot;,t,n,i)}async function vt(e,t,n,i,s){t+=t?&amp;quot;/&amp;quot;:&amp;quot;&amp;quot;;let r={},o=await Ln(e);for(let[a,l]of o){let c=t+a;if(!(i&amp;amp;&amp;amp;c.match(i))){if(l.kind===&amp;quot;directory&amp;quot;){let u=await vt(l,c,n,i,s);if(u instanceof File)return u;Object.assign(r,u)}else if(c.match(n)){let u=await l.getFile();if(s)return u;r[c]=u}}}return r}async function Ln(e){let t=[];try{for await(let n of e.entries())t.push(n)}catch{}return t}var mt=Tn;var bt;async function Cn(...e){let[t,n,i]=e;return await mt(bt,t,n,i)}function Fn(...e){L(...e)}function In(e){bt=e}var Hn={find:Cn,log:Fn,setDirHandle:In},Ce=Hn;async function Nn(e){return await e?.queryPermission()===&amp;quot;granted&amp;quot;}var Fe=Nn;var $n=new RegExp(&amp;quot;[ :]&amp;quot;);function Rn(e){if(e.match($n)){L(&amp;quot;Path contains an illegal character!&amp;quot;,e);return}if(e.match(&amp;quot;/.*?/&amp;quot;)){L(&amp;quot;Path contains too many slashes!&amp;quot;,e);return}let t=e;return t=t.replace(/^Main\//,&amp;quot;&amp;quot;),t=t.replace(&amp;quot;/&amp;quot;,&amp;quot;:&amp;quot;),t=t.replaceAll(&amp;quot;~&amp;quot;,&amp;quot;/&amp;quot;),t=t.replaceAll(&amp;quot;_&amp;quot;,&amp;quot; &amp;quot;),t=t.replaceAll(&amp;quot;#&amp;quot;,&amp;quot;:&amp;quot;),t=t.replace(/\.lua$/,&amp;quot;&amp;quot;),t=t.replace(/\.wiki$/,&amp;quot;&amp;quot;),t}var pe=Rn;var jn=new Set([&amp;quot;Main&amp;quot;,&amp;quot;Data&amp;quot;,&amp;quot;Media&amp;quot;,&amp;quot;Special&amp;quot;,&amp;quot;Talk&amp;quot;,&amp;quot;User&amp;quot;,&amp;quot;User talk&amp;quot;,&amp;quot;Project&amp;quot;,&amp;quot;Project talk&amp;quot;,&amp;quot;File&amp;quot;,&amp;quot;File talk&amp;quot;,&amp;quot;MediaWiki&amp;quot;,&amp;quot;MediaWiki talk&amp;quot;,&amp;quot;Template&amp;quot;,&amp;quot;Template talk&amp;quot;,&amp;quot;Help&amp;quot;,&amp;quot;Help talk&amp;quot;,&amp;quot;Category&amp;quot;,&amp;quot;Category talk&amp;quot;,&amp;quot;Module&amp;quot;,&amp;quot;Module talk&amp;quot;]),On=new Set([&amp;quot;css&amp;quot;]),Un=new RegExp(&amp;quot;~&amp;quot;);function Wn(e){e.match(Un)&amp;amp;&amp;amp;L(&amp;quot;Title contains an illegal character!&amp;quot;,e);let{namespace:t,titleWithoutNamespace:n}=Bn(e),i=n;return i=i.replaceAll(&amp;quot;/&amp;quot;,&amp;quot;~&amp;quot;),i=i.replaceAll(&amp;quot; &amp;quot;,&amp;quot;_&amp;quot;),i=i.replaceAll(&amp;quot;:&amp;quot;,&amp;quot;#&amp;quot;),i=Gn(i),i=zn(i,t),t.replace(&amp;quot; &amp;quot;,&amp;quot;_&amp;quot;)+&amp;quot;/&amp;quot;+i}function Bn(e){let[,t,n]=e.match(/(.*?):(.*)/)||[null,&amp;quot;&amp;quot;,e];return jn.has(t)||(t=&amp;quot;&amp;quot;,n=e),t=t||&amp;quot;Main&amp;quot;,{namespace:t,titleWithoutNamespace:n}}function Gn(e){let t=(e.match(/\.([a-zA-Z]+)$/)||[null,&amp;quot;&amp;quot;])[1].toLowerCase();return t===&amp;quot;url&amp;quot;?e.replace(/\.url$/,&amp;quot;&amp;quot;):On.has(t)?e:e+&amp;quot;.wiki&amp;quot;}function zn(e,t){return t!==&amp;quot;Module&amp;quot;||e.endsWith(&amp;quot;~doc.wiki&amp;quot;)||e.endsWith(&amp;quot;.css&amp;quot;)?e:e.replace(&amp;quot;.wiki&amp;quot;,&amp;quot;.lua&amp;quot;)}var wt=Wn;var Ie;async function ne(e){if(!Ie){console.log(&amp;quot;Please call applySettings() prior to asking!&amp;quot;);return}let t={method:Vn(e)},n=new URL(Ie.API_URL),i=Jn(e);t.method===&amp;quot;GET&amp;quot;?n.search=i.toString():t.body=i;let[s,r]=await x(fetch(n,t));if(!s){L(&amp;quot;Failed to fetch!&amp;quot;,r);return}let[o,a]=await x(s.json());if(!o){L(&amp;quot;Invalid json!&amp;quot;,a);return}return o}function yt(e){let{API_URL:t}=e;Ie={API_URL:t}}function Vn(e){return!e.method||e.method===&amp;quot;GET&amp;quot;?&amp;quot;GET&amp;quot;:&amp;quot;POST&amp;quot;}function Jn(e){let t={...e,format:&amp;quot;json&amp;quot;,formatversion:2},{method:n}=t;if(delete t.method,n===&amp;quot;FORM&amp;quot;){let i=new FormData;for(let s in t){let r=t[s];Array.isArray(r)?i.append(s,r[0],r[1]):i.append(s,r)}return i}return new URLSearchParams(t)}var kt=50;async function Zn(e){let t=Object.keys(e).map(s=&amp;gt;pe(s)),n=await Kn(t);if(!n)return;let i={};for(let s in n){let r=wt(s);r&amp;amp;&amp;amp;(n[s]===void 0?L(&amp;quot;Invalid page content!&amp;quot;,s):i[r]=n[s])}return L(`Retrieved ${Object.keys(i).length} pages.`),i}async function Kn(e){let t={};for(let n=0;n&amp;lt;e.length;n+=kt){let i=Math.min(n+kt,e.length),s=e.slice(n,i);L(`Retrieving ${n+1}-${i} of ${e.length} pages (${s[0]})...`);let r=await ne({action:&amp;quot;query&amp;quot;,prop:&amp;quot;revisions&amp;quot;,rvprop:&amp;quot;content&amp;quot;,rvslots:&amp;quot;main&amp;quot;,titles:s.join(&amp;quot;|&amp;quot;),origin:&amp;quot;*&amp;quot;});if(!r)continue;let o=r.query?.pages||[];for(let a of o)a.missing||(t[a.title]=a.revisions?.[0]?.slots?.main?.content)}return t}var Dt=Zn;var qn=ue`&lt;br /&gt;
    html, body {&lt;br /&gt;
        padding: 0;&lt;br /&gt;
        margin: 0;&lt;br /&gt;
        height: 100%;&lt;br /&gt;
        font-size: 13px;&lt;br /&gt;
        font-family: &amp;quot;JetBrains Mono&amp;quot;, monospace;&lt;br /&gt;
    }&lt;br /&gt;
&lt;br /&gt;
    .${ee} pre {&lt;br /&gt;
        font-family: &amp;quot;JetBrains Mono&amp;quot;, monospace;&lt;br /&gt;
        white-space: pre-wrap;&lt;br /&gt;
    }&lt;br /&gt;
&lt;br /&gt;
    .${R} {&lt;br /&gt;
        font-weight: bold;&lt;br /&gt;
        background: silver;&lt;br /&gt;
        padding: 8px;&lt;br /&gt;
        cursor: pointer;&lt;br /&gt;
    }&lt;br /&gt;
&lt;br /&gt;
    .${he} {&lt;br /&gt;
        float: right;&lt;br /&gt;
        border: solid 1px rgba(0, 0, 0, 0.5);&lt;br /&gt;
        border-radius: 4px;&lt;br /&gt;
        padding: 4px;&lt;br /&gt;
        margin-right: -5px;&lt;br /&gt;
        margin-top: -5px;&lt;br /&gt;
    }&lt;br /&gt;
&lt;br /&gt;
    .${R}.${te} {&lt;br /&gt;
        background: rgba(0, 0, 255, 0.2);&lt;br /&gt;
        border-top: solid 1px rgba(0, 0, 255, 0.4);&lt;br /&gt;
    }&lt;br /&gt;
&lt;br /&gt;
    .${R}.${K} {&lt;br /&gt;
        background: rgba(0, 255, 0, 0.2);&lt;br /&gt;
        border-top: solid 1px rgba(0, 255, 0, 0.4);&lt;br /&gt;
    }&lt;br /&gt;
&lt;br /&gt;
    .${R}.${q} {&lt;br /&gt;
        background: rgba(255, 100, 0, 0.2);&lt;br /&gt;
        border-top: solid 1px rgba(255, 100, 0, 0.4);&lt;br /&gt;
    }&lt;br /&gt;
&lt;br /&gt;
    .${B} {&lt;br /&gt;
        display: flex;&lt;br /&gt;
        flex-direction: row;&lt;br /&gt;
    }&lt;br /&gt;
&lt;br /&gt;
    .${B}.${Q} {&lt;br /&gt;
        display: none;&lt;br /&gt;
    }&lt;br /&gt;
&lt;br /&gt;
    .${B} pre {&lt;br /&gt;
        margin: 0;&lt;br /&gt;
        flex: 1;&lt;br /&gt;
        min-width: 0;&lt;br /&gt;
        padding: 8px;&lt;br /&gt;
    }&lt;br /&gt;
&lt;br /&gt;
    .${B} pre:nth-child(2) {&lt;br /&gt;
        border-left: solid 2px rgba(255, 100, 0, 0.2);&lt;br /&gt;
    }&lt;br /&gt;
&lt;br /&gt;
    del {&lt;br /&gt;
        background: #f5a7a7;&lt;br /&gt;
        text-decoration: none;&lt;br /&gt;
        outline: solid 1px #f5a7a7;&lt;br /&gt;
    }&lt;br /&gt;
&lt;br /&gt;
    ins {&lt;br /&gt;
        background: #BEE6BE;&lt;br /&gt;
        text-decoration: none;&lt;br /&gt;
        outline: solid 1px #BEE6BE;&lt;br /&gt;
    }&lt;br /&gt;
`,St=qn;var ge=Ut(Mt(),1),Qn=new ge.default;function Xn(e,t){let n=Et(e),i=Et(t),s=Qn.diff_main(n,i),r=[],o=[];for(let[u,_]of s)switch(u){case ge.default.DIFF_DELETE:r.push(&amp;quot;&amp;lt;del&amp;gt;&amp;quot;+_+&amp;quot;&amp;lt;/del&amp;gt;&amp;quot;),o.push(&amp;quot;&amp;lt;del&amp;gt;&amp;lt;/del&amp;gt;&amp;quot;);break;case ge.default.DIFF_INSERT:r.push(&amp;quot;&amp;lt;ins&amp;gt;&amp;lt;/ins&amp;gt;&amp;quot;),o.push(&amp;quot;&amp;lt;ins&amp;gt;&amp;quot;+_+&amp;quot;&amp;lt;/ins&amp;gt;&amp;quot;);break;default:r.push(_),o.push(_)}let a=r.join(&amp;quot;&amp;quot;).replaceAll(&amp;quot;&amp;lt;/del&amp;gt;&amp;lt;ins&amp;gt;&amp;lt;/ins&amp;gt;&amp;quot;,&amp;quot;&amp;lt;/del&amp;gt;&amp;quot;),l=o.join(&amp;quot;&amp;quot;).replaceAll(&amp;quot;&amp;lt;del&amp;gt;&amp;lt;/del&amp;gt;&amp;lt;ins&amp;gt;&amp;quot;,&amp;quot;&amp;lt;ins&amp;gt;&amp;quot;),c=l.split(&amp;quot;&amp;lt;&amp;quot;).length-1;return{text1:a,text2:l,differences:c/2}}function Et(e){return e.split(&amp;quot;&amp;amp;&amp;quot;).join(&amp;quot;&amp;amp;amp;&amp;quot;).split(&amp;quot;&amp;lt;&amp;quot;).join(&amp;quot;&amp;amp;lt;&amp;quot;).split(&amp;quot;&amp;gt;&amp;quot;).join(&amp;quot;&amp;amp;gt;&amp;quot;)}var Pt=Xn;var Yn={[te]:&amp;quot;new&amp;quot;,[K]:&amp;quot;identical&amp;quot;,[q]:&amp;quot;changed&amp;quot;};function xn(e,t,n){let i=[];for(let r in t){let o=t[r],a=e[r];if(a!==void 0){let{text1:c,text2:u}=Pt(a,o);a=c,o=u}else o=tr(o);let l=er(r,a,o);i.push(...l)}n.innerHTML=i.join(&amp;quot;&amp;quot;),Array.from(n.querySelectorAll(&amp;quot;.&amp;quot;+R)).map(r=&amp;gt;r.addEventListener(&amp;quot;click&amp;quot;,nr)),rr(n)}function er(e,t,n){let i=t===void 0?te:t===n?K:q,s=`&amp;lt;div class=&amp;quot;${he}&amp;quot;&amp;gt;${Yn[i]}&amp;lt;/div&amp;gt;`,r=i===K?Q:&amp;quot;&amp;quot;,o=[];return o.push(`&amp;lt;div class=&amp;quot;${R} ${i}&amp;quot;&amp;gt;${s}${e}&amp;lt;/div&amp;gt;`),o.push(`&amp;lt;div class=&amp;quot;${B} ${r}&amp;quot;&amp;gt;`),i===q&amp;amp;&amp;amp;o.push(`&amp;lt;pre&amp;gt;${t}&amp;lt;/pre&amp;gt;`),o.push(`&amp;lt;pre&amp;gt;${n}&amp;lt;/pre&amp;gt;`),o.push(&amp;quot;&amp;lt;/div&amp;gt;&amp;quot;),o}function tr(e){return e.split(&amp;quot;&amp;amp;&amp;quot;).join(&amp;quot;&amp;amp;amp;&amp;quot;).split(&amp;quot;&amp;lt;&amp;quot;).join(&amp;quot;&amp;amp;lt;&amp;quot;).split(&amp;quot;&amp;gt;&amp;quot;).join(&amp;quot;&amp;amp;gt;&amp;quot;)}function nr(e){e.currentTarget.nextElementSibling.classList.toggle(Q)}function rr(e){let t=e.querySelectorAll(&amp;quot;.&amp;quot;+R);for(let n of t)if(!n.nextElementSibling.classList.contains(Q)){n.scrollIntoView({behavior:&amp;quot;smooth&amp;quot;,block:&amp;quot;start&amp;quot;});break}}var At=xn;function ir(e,t){let n=window.open(&amp;quot;&amp;quot;,&amp;quot;Preview&amp;quot;);if(!n)return;let i=n.document;i.open(),i.write(`&lt;br /&gt;
        &amp;lt;!DOCTYPE html&amp;gt;&lt;br /&gt;
        &amp;lt;html lang=&amp;quot;en&amp;quot;&amp;gt;&lt;br /&gt;
        &amp;lt;head&amp;gt;&lt;br /&gt;
            &amp;lt;title&amp;gt;Preview&amp;lt;/title&amp;gt;&lt;br /&gt;
            &amp;lt;style&amp;gt;${St}&amp;lt;/style&amp;gt;&lt;br /&gt;
        &amp;lt;/head&amp;gt;&lt;br /&gt;
        &amp;lt;body&amp;gt;&lt;br /&gt;
            &amp;lt;div class=&#039;${ee}&#039;&amp;gt;&amp;lt;/div&amp;gt;&lt;br /&gt;
        &amp;lt;/body&amp;gt;&lt;br /&gt;
        &amp;lt;/html&amp;gt;&lt;br /&gt;
    `),i.close(),At(e||{},t,i.querySelector(&amp;quot;.&amp;quot;+ee))}var Tt=ir;async function sr(e,t){let n=or(e,t);if(!n.length)return L(&amp;quot;All pages are already updated.&amp;quot;),!0;let i=await ar();if(!i)return L(&amp;quot;Cannot get csrf token!&amp;quot;),!1;let s=0;for(let{title:r,content:o}of n)await lr(r,o,i)&amp;amp;&amp;amp;s++;return L(`Successfully saved ${s} pages.`),!0}function or(e,t){let n=[];t=t||{};for(let i in e){let s=e[i],r=t[i];if(s!==r){let o=pe(i);n.push({title:o,content:s})}}return n}async function ar(){return(await ne({action:&amp;quot;query&amp;quot;,meta:&amp;quot;tokens&amp;quot;}))?.query?.tokens?.csrftoken}async function lr(e,t,n){return L(`Saving content for &amp;quot;${e}&amp;quot;...`),(await ne({method:&amp;quot;POST&amp;quot;,action:&amp;quot;edit&amp;quot;,title:e,text:t,token:n}))?.edit?.result!==&amp;quot;Success&amp;quot;?(L(&amp;quot;Save failed!&amp;quot;,e,t),!1):!0}var Lt=sr;var cr=$`&lt;br /&gt;
    color: #fff;&lt;br /&gt;
`,de=$`&lt;br /&gt;
    padding: 16px;&lt;br /&gt;
    border-top: solid 1px #cbced1;&lt;br /&gt;
    &amp;amp;:first-child {&lt;br /&gt;
        border: none;&lt;br /&gt;
    }&lt;br /&gt;
`,ve=$`&lt;br /&gt;
    font-size: 150%;&lt;br /&gt;
    font-weight: bold;&lt;br /&gt;
    color: #c8b36c;&lt;br /&gt;
`,me=$`&lt;br /&gt;
    margin-top: 8px;&lt;br /&gt;
`,be=$`&lt;br /&gt;
    &amp;amp;:after {&lt;br /&gt;
        content: &#039; ✅&#039;;&lt;br /&gt;
    }&lt;br /&gt;
`,fr=$`&lt;br /&gt;
    &amp;amp;:after {&lt;br /&gt;
        content: &#039; ⚠️&#039;;&lt;br /&gt;
    }&lt;br /&gt;
`,ur=&amp;quot;MediaWiki:ParseCore.js&amp;quot;,He=class extends z{vars={logRef:ze(),dirHandle:null};state={busy:0,hasDirAccess:!1,parsedHub:null,mirrorHub:null,isPreviewed:!1,isSaved:!1};render(){let{logRef:t}=this.vars,{busy:n,hasDirAccess:i,isPreviewed:s,isSaved:r,mirrorHub:o}=this.state;return k(&amp;quot;div&amp;quot;,{class:cr,children:[k(&amp;quot;div&amp;quot;,{class:de,children:[k(&amp;quot;div&amp;quot;,{class:ve,children:&amp;quot;1. Select game data directory&amp;quot;}),k(&amp;quot;div&amp;quot;,{children:&amp;quot;Give read-access to the local install directory of the game so the parser can choose what files it needs.&amp;quot;}),k(&amp;quot;div&amp;quot;,{class:me,children:k(&amp;quot;button&amp;quot;,{disabled:!!n,class:i?be:fr,onClick:this.onPickDirectoryClick,children:&amp;quot;Pick directory&amp;quot;})})]}),k(&amp;quot;div&amp;quot;,{class:de,children:[k(&amp;quot;div&amp;quot;,{class:ve,children:&amp;quot;2. Retrieve wiki data pages&amp;quot;}),k(&amp;quot;div&amp;quot;,{children:[&amp;quot;Temporarily download all relevant data pages from this wiki so they can be used as a comparison base. &amp;quot;,k(&amp;quot;br&amp;quot;,{}),&amp;quot;This step is optional, but recommended, because it gives awareness in the following steps and reduces the number of updates needed.&amp;quot;]}),k(&amp;quot;div&amp;quot;,{class:me,children:k(&amp;quot;button&amp;quot;,{disabled:!!n||!i,class:o&amp;amp;&amp;amp;be,onClick:this.onRetrieveClick,children:[&amp;quot;Retrieve &amp;quot;,n===2&amp;amp;&amp;amp;k(&amp;quot;progress&amp;quot;,{})]})})]}),k(&amp;quot;div&amp;quot;,{class:de,children:[k(&amp;quot;div&amp;quot;,{class:ve,children:&amp;quot;3. Preview changes&amp;quot;}),k(&amp;quot;div&amp;quot;,{children:&amp;quot;Open a popup window listing each page that is about to be updated, potentially highlighting differences.&amp;quot;}),k(&amp;quot;div&amp;quot;,{class:me,children:k(&amp;quot;button&amp;quot;,{disabled:!!n||!i||!o,class:s&amp;amp;&amp;amp;be,onClick:this.onPreviewClick,children:[&amp;quot;Preview &amp;quot;,n===3&amp;amp;&amp;amp;k(&amp;quot;progress&amp;quot;,{})]})})]}),k(&amp;quot;div&amp;quot;,{class:de,children:[k(&amp;quot;div&amp;quot;,{class:ve,children:&amp;quot;4. Save changes&amp;quot;}),k(&amp;quot;div&amp;quot;,{children:&amp;quot;Write the changes to each page using the current account, just as if you had done them manually.&amp;quot;}),k(&amp;quot;div&amp;quot;,{class:me,children:k(&amp;quot;button&amp;quot;,{disabled:!!n||!i,class:r&amp;amp;&amp;amp;be,onClick:this.onSaveClick,children:[&amp;quot;SAVE &amp;quot;,n===4&amp;amp;&amp;amp;k(&amp;quot;progress&amp;quot;,{})]})})]}),&amp;quot;Log:&amp;quot;,k(&amp;quot;div&amp;quot;,{ref:t})]})}async componentDidMount(){let{logRef:t}=this.vars;rt(t.current),L(&amp;quot;Initialized.&amp;quot;);let n=this.vars.dirHandle=await st(Ae),i=await Fe(n);this.setState({hasDirAccess:i}),yt({API_URL:document.location.href.replace(/[^\/]*$/,&amp;quot;&amp;quot;)+&amp;quot;api.php&amp;quot;})}onPickDirectoryClick=async()=&amp;gt;{let{hasDirAccess:t}=this.state,{dirHandle:n}=this.vars,i=!1;if(n?t?i=!0:await n.requestPermission():i=!0,i){let[s]=await x(window.showDirectoryPicker,{mode:&amp;quot;read&amp;quot;});n=this.vars.dirHandle=s,await ot(Ae,n)}t=await Fe(n),t||this.setState({parsedHub:null,mirrorHub:null,isPreviewed:!1,isSaved:!1}),this.setState({hasDirAccess:t})};onRetrieveClick=async()=&amp;gt;{await this.ensureParsedHub(2);let t=await Dt(this.state.parsedHub);this.setState({mirrorHub:t})};onPreviewClick=async()=&amp;gt;{await this.ensureParsedHub(3);let{mirrorHub:t,parsedHub:n}=this.state;Tt(t,n),this.setState({isPreviewed:!0})};onSaveClick=async()=&amp;gt;{await this.ensureParsedHub(4);let{mirrorHub:t,parsedHub:n}=this.state;this.setState({busy:4});let i=await Lt(n,t);this.setState({busy:0,isSaved:i})};ensureParsedHub=async t=&amp;gt;{this.state.parsedHub||(this.setState({busy:t}),Ce.setDirHandle(this.vars.dirHandle),this.setState({busy:0,parsedHub:await dt(Ce,ur)}))}},Ct=He;function hr(){Ft()||window.addEventListener(&amp;quot;load&amp;quot;,Ft)}function Ft(){let e=document.querySelector(&amp;quot;#setup&amp;quot;);if(e)return xe(Ct,e),!0}hr();})();&lt;/div&gt;</summary>
		<author><name>76561198048502585</name></author>
	</entry>
	<entry>
		<id>https://wiki.hoodedhorse.com/Heroes_of_Might_and_Magic_Olden_Era/index.php?title=MediaWiki:Common.js&amp;diff=41535</id>
		<title>MediaWiki:Common.js</title>
		<link rel="alternate" type="text/html" href="https://wiki.hoodedhorse.com/Heroes_of_Might_and_Magic_Olden_Era/index.php?title=MediaWiki:Common.js&amp;diff=41535"/>
		<updated>2026-10-13T14:25:46Z</updated>

		<summary type="html">&lt;p&gt;76561198048502585: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;/* Any JavaScript here will be loaded for all users on every page load. */&lt;br /&gt;
&lt;br /&gt;
$(function() {&lt;br /&gt;
  var $box = $(&#039;#spellboxv-display&#039;);&lt;br /&gt;
  $(&#039;.spell-link&#039;).hover(&lt;br /&gt;
    function() {&lt;br /&gt;
      var spellName = $(this).data(&#039;spell&#039;);&lt;br /&gt;
      var apiUrl = mw.util.wikiScript(&#039;api&#039;);&lt;br /&gt;
      $.post(apiUrl, {&lt;br /&gt;
        action: &#039;parse&#039;,&lt;br /&gt;
        format: &#039;json&#039;,&lt;br /&gt;
        text: &#039;{{#invoke:SpellTableUtil|spellBoxV|name=&#039; + spellName + &#039;}}&#039;,&lt;br /&gt;
        contentmodel: &#039;wikitext&#039;&lt;br /&gt;
      }, function(data) {&lt;br /&gt;
        var html = data.parse.text[&#039;*&#039;];&lt;br /&gt;
        $box.html(html).show();&lt;br /&gt;
      });&lt;br /&gt;
    },&lt;br /&gt;
    function() {&lt;br /&gt;
      $box.hide().empty();&lt;br /&gt;
    }&lt;br /&gt;
  );&lt;br /&gt;
});&lt;br /&gt;
&lt;br /&gt;
/* Purge cache button for the toolbox sidebar. */&lt;br /&gt;
&lt;br /&gt;
mw.loader.using(&#039;mediawiki.util&#039;).then(function () {&lt;br /&gt;
    mw.util.addPortletLink(&lt;br /&gt;
        &#039;p-tb&#039;,&lt;br /&gt;
        mw.util.getUrl(null, {&lt;br /&gt;
            action: &#039;purge&#039;,&lt;br /&gt;
            forcelinkupdate: 1&lt;br /&gt;
        }),&lt;br /&gt;
        &#039;Update page cache&#039;,&lt;br /&gt;
        &#039;t-purge&#039;&lt;br /&gt;
    );&lt;br /&gt;
});&lt;br /&gt;
&lt;br /&gt;
/* Load the HeroPlanner logic. */&lt;br /&gt;
mw.hook(&#039;wikipage.content&#039;).add(function () {&lt;br /&gt;
    if (mw.config.get(&#039;wgPageName&#039;).includes(&#039;Hero_Planner&#039;)) {&lt;br /&gt;
        var VERSION = &#039;1&#039;; // Bump this string when you need to ensure no cache&lt;br /&gt;
        var scriptUrl = mw.util.wikiScript(&#039;index&#039;) + &#039;?&#039; + $.param({&lt;br /&gt;
            title: &#039;MediaWiki:HeroPlanner.js&#039;,&lt;br /&gt;
            action: &#039;raw&#039;,&lt;br /&gt;
            ctype: &#039;text/javascript&#039;,&lt;br /&gt;
            version: VERSION&lt;br /&gt;
        });&lt;br /&gt;
        mw.loader.load(scriptUrl);&lt;br /&gt;
    }&lt;br /&gt;
});&lt;br /&gt;
&lt;br /&gt;
/* Load the Data:Update logic. */&lt;br /&gt;
mw.hook(&#039;wikipage.content&#039;).add(function () {&lt;br /&gt;
    if (mw.config.get(&#039;wgPageName&#039;).includes(&#039;Data:Update&#039;)) {&lt;br /&gt;
        var VERSION = &#039;1&#039;; // Bump this string when you need to ensure no cache&lt;br /&gt;
        var scriptUrl = mw.util.wikiScript(&#039;index&#039;) + &#039;?&#039; + $.param({&lt;br /&gt;
            title: &#039;MediaWiki:UpdateTool.js&#039;,&lt;br /&gt;
            action: &#039;raw&#039;,&lt;br /&gt;
            ctype: &#039;text/javascript&#039;,&lt;br /&gt;
            version: VERSION&lt;br /&gt;
        });&lt;br /&gt;
        mw.loader.load(scriptUrl);&lt;br /&gt;
    }&lt;br /&gt;
});&lt;br /&gt;
&lt;br /&gt;
/* Load the Data:Diff logic. */&lt;br /&gt;
mw.hook(&#039;wikipage.content&#039;).add(function () {&lt;br /&gt;
    if (mw.config.get(&#039;wgPageName&#039;).includes(&#039;Data:Diff&#039;)) {&lt;br /&gt;
        var VERSION = &#039;1&#039;; // Bump this string when you need to ensure no cache&lt;br /&gt;
        var scriptUrl = mw.util.wikiScript(&#039;index&#039;) + &#039;?&#039; + $.param({&lt;br /&gt;
            title: &#039;MediaWiki:DiffTool.js&#039;,&lt;br /&gt;
            action: &#039;raw&#039;,&lt;br /&gt;
            ctype: &#039;text/javascript&#039;,&lt;br /&gt;
            version: VERSION&lt;br /&gt;
        });&lt;br /&gt;
        mw.loader.load(scriptUrl);&lt;br /&gt;
    }&lt;br /&gt;
});&lt;/div&gt;</summary>
		<author><name>76561198048502585</name></author>
	</entry>
	<entry>
		<id>https://wiki.hoodedhorse.com/Heroes_of_Might_and_Magic_Olden_Era/index.php?title=MediaWiki:ParseCore.js&amp;diff=41534</id>
		<title>MediaWiki:ParseCore.js</title>
		<link rel="alternate" type="text/html" href="https://wiki.hoodedhorse.com/Heroes_of_Might_and_Magic_Olden_Era/index.php?title=MediaWiki:ParseCore.js&amp;diff=41534"/>
		<updated>2026-10-13T14:01:56Z</updated>

		<summary type="html">&lt;p&gt;76561198048502585: Created page with &amp;quot;//Source:https://github.com/Aurelain/oe-wiki/tree/main/src/parse (()=&amp;gt;{function In(t,...n){if(typeof t==&amp;quot;function&amp;quot;)try{let e=t(...n);return e&amp;amp;&amp;amp;typeof e.then==&amp;quot;function&amp;quot;?e.then(s=&amp;gt;[s,null]).catch(s=&amp;gt;[null,s]):[e,null]}catch(e){return[null,e]}return t&amp;amp;&amp;amp;typeof t.then==&amp;quot;function&amp;quot;?t.then(e=&amp;gt;[e,null]).catch(e=&amp;gt;[null,e]):[t,null]}var G=In;var Yt,st,At,it,Q;async function Un(t){await Pn()&amp;amp;&amp;amp;(Yt=t,st(Rn),ot(&amp;quot;ready&amp;quot;))}async function Ln(...t){return Q?await Q.find(...t):await En(&amp;quot;fi...&amp;quot;&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;//Source:https://github.com/Aurelain/oe-wiki/tree/main/src/parse&lt;br /&gt;
(()=&amp;gt;{function In(t,...n){if(typeof t==&amp;quot;function&amp;quot;)try{let e=t(...n);return e&amp;amp;&amp;amp;typeof e.then==&amp;quot;function&amp;quot;?e.then(s=&amp;gt;[s,null]).catch(s=&amp;gt;[null,s]):[e,null]}catch(e){return[null,e]}return t&amp;amp;&amp;amp;typeof t.then==&amp;quot;function&amp;quot;?t.then(e=&amp;gt;[e,null]).catch(e=&amp;gt;[null,e]):[t,null]}var G=In;var Yt,st,At,it,Q;async function Un(t){await Pn()&amp;amp;&amp;amp;(Yt=t,st(Rn),ot(&amp;quot;ready&amp;quot;))}async function Ln(...t){return Q?await Q.find(...t):await En(&amp;quot;find&amp;quot;,t)}function Kt(...t){if(Q)return Q.log(...t);ot(&amp;quot;log&amp;quot;,t)}function Mn(t){Q=t}async function Pn(){if(typeof process&amp;lt;&amp;quot;u&amp;quot;&amp;amp;&amp;amp;process.versions?.node!==null){let n=&amp;quot;node:worker_threads&amp;quot;,{parentPort:e}=await import(n);if(!e)return;st=s=&amp;gt;e.on(&amp;quot;message&amp;quot;,s),At=s=&amp;gt;e.off(&amp;quot;message&amp;quot;,s),it=s=&amp;gt;e.postMessage(s)}else st=n=&amp;gt;self.addEventListener(&amp;quot;message&amp;quot;,n),At=n=&amp;gt;self.removeEventListener(&amp;quot;message&amp;quot;,n),it=n=&amp;gt;self.postMessage(n);return!0}async function Rn(t){let n=t?.data||t,{type:e}=n;switch(e){case&amp;quot;run&amp;quot;:let[s,i]=await G(Yt);if(i){let o=i.extra||[];Kt(&amp;quot;!Error encountered!&amp;quot;,i.message,...o),ot(&amp;quot;run&amp;quot;,{})}else ot(&amp;quot;run&amp;quot;,s);break;default:}}function ot(t,n){it({type:t,payload:n})}async function En(t,n){return new Promise(e=&amp;gt;{let s=i=&amp;gt;{let o=i?.data||i;o.type===t&amp;amp;&amp;amp;(At(s),e(o.payload))};st(s),it({type:t,payload:n})})}var jn={initialize:Un,find:Ln,log:Kt,redirect:Mn},C=jn;var w=Uint8Array,V=Uint16Array,Fn=Int32Array,Xt=new w([0,0,0,0,0,0,0,0,1,1,1,1,2,2,2,2,3,3,3,3,4,4,4,4,5,5,5,5,0,0,0,0]),Qt=new w([0,0,0,0,1,1,2,2,3,3,4,4,5,5,6,6,7,7,8,8,9,9,10,10,11,11,12,12,13,13,0,0]),Nn=new w([16,17,18,0,8,7,9,6,10,5,11,4,12,3,13,2,14,1,15]),te=function(t,n){for(var e=new V(31),s=0;s&amp;lt;31;++s)e[s]=n+=1&amp;lt;&amp;lt;t[s-1];for(var i=new Fn(e[30]),s=1;s&amp;lt;30;++s)for(var o=e[s];o&amp;lt;e[s+1];++o)i[o]=o-e[s]&amp;lt;&amp;lt;5|s;return{b:e,r:i}},ee=te(Xt,2),ne=ee.b,On=ee.r;ne[28]=258,On[258]=28;var re=te(Qt,0),Hn=re.b,mo=re.r,zt=new V(32768);for(v=0;v&amp;lt;32768;++v)M=(v&amp;amp;43690)&amp;gt;&amp;gt;1|(v&amp;amp;21845)&amp;lt;&amp;lt;1,M=(M&amp;amp;52428)&amp;gt;&amp;gt;2|(M&amp;amp;13107)&amp;lt;&amp;lt;2,M=(M&amp;amp;61680)&amp;gt;&amp;gt;4|(M&amp;amp;3855)&amp;lt;&amp;lt;4,zt[v]=((M&amp;amp;65280)&amp;gt;&amp;gt;8|(M&amp;amp;255)&amp;lt;&amp;lt;8)&amp;gt;&amp;gt;1;var M,v,tt=(function(t,n,e){for(var s=t.length,i=0,o=new V(n);i&amp;lt;s;++i)t[i]&amp;amp;&amp;amp;++o[t[i]-1];var a=new V(n);for(i=1;i&amp;lt;n;++i)a[i]=a[i-1]+o[i-1]&amp;lt;&amp;lt;1;var c;if(e){c=new V(1&amp;lt;&amp;lt;n);var l=15-n;for(i=0;i&amp;lt;s;++i)if(t[i])for(var d=i&amp;lt;&amp;lt;4|t[i],u=n-t[i],f=a[t[i]-1]++&amp;lt;&amp;lt;u,m=f|(1&amp;lt;&amp;lt;u)-1;f&amp;lt;=m;++f)c[zt[f]&amp;gt;&amp;gt;l]=d}else for(c=new V(s),i=0;i&amp;lt;s;++i)t[i]&amp;amp;&amp;amp;(c[i]=zt[a[t[i]-1]++]&amp;gt;&amp;gt;15-t[i]);return c}),et=new w(288);for(v=0;v&amp;lt;144;++v)et[v]=8;var v;for(v=144;v&amp;lt;256;++v)et[v]=9;var v;for(v=256;v&amp;lt;280;++v)et[v]=7;var v;for(v=280;v&amp;lt;288;++v)et[v]=8;var v,se=new w(32);for(v=0;v&amp;lt;32;++v)se[v]=5;var v;var $n=tt(et,9,1);var qn=tt(se,5,1),Ct=function(t){for(var n=t[0],e=1;e&amp;lt;t.length;++e)t[e]&amp;gt;n&amp;amp;&amp;amp;(n=t[e]);return n},T=function(t,n,e){var s=n/8|0;return(t[s]|t[s+1]&amp;lt;&amp;lt;8)&amp;gt;&amp;gt;(n&amp;amp;7)&amp;amp;e},xt=function(t,n){var e=n/8|0;return(t[e]|t[e+1]&amp;lt;&amp;lt;8|t[e+2]&amp;lt;&amp;lt;16)&amp;gt;&amp;gt;(n&amp;amp;7)},Wn=function(t){return(t+7)/8|0},It=function(t,n,e){return(n==null||n&amp;lt;0)&amp;amp;&amp;amp;(n=0),(e==null||e&amp;gt;t.length)&amp;amp;&amp;amp;(e=t.length),new w(t.subarray(n,e))};var Gn=[&amp;quot;unexpected EOF&amp;quot;,&amp;quot;invalid block type&amp;quot;,&amp;quot;invalid length/literal&amp;quot;,&amp;quot;invalid distance&amp;quot;,&amp;quot;stream finished&amp;quot;,&amp;quot;no stream handler&amp;quot;,,&amp;quot;no callback&amp;quot;,&amp;quot;invalid UTF-8 data&amp;quot;,&amp;quot;extra field too long&amp;quot;,&amp;quot;date not in range 1980-2099&amp;quot;,&amp;quot;filename too long&amp;quot;,&amp;quot;stream finishing&amp;quot;,&amp;quot;invalid zip data&amp;quot;],k=function(t,n,e){var s=new Error(n||Gn[t]);if(s.code=t,Error.captureStackTrace&amp;amp;&amp;amp;Error.captureStackTrace(s,k),!e)throw s;return s},Vn=function(t,n,e,s){var i=t.length,o=s?s.length:0;if(!i||n.f&amp;amp;&amp;amp;!n.l)return e||new w(0);var a=!e,c=a||n.i!=2,l=n.i;a&amp;amp;&amp;amp;(e=new w(i*3));var d=function(Vt){var Zt=e.length;if(Vt&amp;gt;Zt){var Jt=new w(Math.max(Zt*2,Vt));Jt.set(e),e=Jt}},u=n.f||0,f=n.p||0,m=n.b||0,D=n.l,R=n.d,O=n.m,H=n.n,E=i*8;do{if(!D){u=T(t,f,1);var vt=T(t,f+1,3);if(f+=3,vt)if(vt==1)D=$n,R=qn,O=9,H=5;else if(vt==2){var bt=T(t,f,31)+257,Ft=T(t,f+10,15)+4,Nt=bt+T(t,f+5,31)+1;f+=14;for(var K=new w(Nt),Dt=new w(19),A=0;A&amp;lt;Ft;++A)Dt[Nn[A]]=T(t,f+A*3,7);f+=Ft*3;for(var Ot=Ct(Dt),Cn=(1&amp;lt;&amp;lt;Ot)-1,xn=tt(Dt,Ot,1),A=0;A&amp;lt;Nt;){var Ht=xn[T(t,f,Cn)];f+=Ht&amp;amp;15;var B=Ht&amp;gt;&amp;gt;4;if(B&amp;lt;16)K[A++]=B;else{var q=0,rt=0;for(B==16?(rt=3+T(t,f,3),f+=2,q=K[A-1]):B==17?(rt=3+T(t,f,7),f+=3):B==18&amp;amp;&amp;amp;(rt=11+T(t,f,127),f+=7);rt--;)K[A++]=q}}var $t=K.subarray(0,bt),j=K.subarray(bt);O=Ct($t),H=Ct(j),D=tt($t,O,1),R=tt(j,H,1)}else k(1);else{var B=Wn(f)+4,gt=t[B-4]|t[B-3]&amp;lt;&amp;lt;8,yt=B+gt;if(yt&amp;gt;i){l&amp;amp;&amp;amp;k(0);break}c&amp;amp;&amp;amp;d(m+gt),e.set(t.subarray(B,yt),m),n.b=m+=gt,n.p=f=yt*8,n.f=u;continue}if(f&amp;gt;E){l&amp;amp;&amp;amp;k(0);break}}c&amp;amp;&amp;amp;d(m+131072);for(var Tn=(1&amp;lt;&amp;lt;O)-1,zn=(1&amp;lt;&amp;lt;H)-1,kt=f;;kt=f){var q=D[xt(t,f)&amp;amp;Tn],W=q&amp;gt;&amp;gt;4;if(f+=q&amp;amp;15,f&amp;gt;E){l&amp;amp;&amp;amp;k(0);break}if(q||k(2),W&amp;lt;256)e[m++]=W;else if(W==256){kt=f,D=null;break}else{var qt=W-254;if(W&amp;gt;264){var A=W-257,X=Xt[A];qt=T(t,f,(1&amp;lt;&amp;lt;X)-1)+ne[A],f+=X}var wt=R[xt(t,f)&amp;amp;zn],St=wt&amp;gt;&amp;gt;4;wt||k(3),f+=wt&amp;amp;15;var j=Hn[St];if(St&amp;gt;3){var X=Qt[St];j+=xt(t,f)&amp;amp;(1&amp;lt;&amp;lt;X)-1,f+=X}if(f&amp;gt;E){l&amp;amp;&amp;amp;k(0);break}c&amp;amp;&amp;amp;d(m+131072);var Wt=m+qt;if(m&amp;lt;j){var Gt=o-j,Bn=Math.min(j,Wt);for(Gt+m&amp;lt;0&amp;amp;&amp;amp;k(3);m&amp;lt;Bn;++m)e[m]=s[Gt+m]}for(;m&amp;lt;Wt;++m)e[m]=e[m-j]}}n.l=D,n.p=kt,n.b=m,n.f=u,D&amp;amp;&amp;amp;(u=1,n.m=O,n.d=R,n.n=H)}while(!u);return m!=e.length&amp;amp;&amp;amp;a?It(e,0,m):e.subarray(0,m)};var Zn=new w(0);var I=function(t,n){return t[n]|t[n+1]&amp;lt;&amp;lt;8},x=function(t,n){return(t[n]|t[n+1]&amp;lt;&amp;lt;8|t[n+2]&amp;lt;&amp;lt;16|t[n+3]&amp;lt;&amp;lt;24)&amp;gt;&amp;gt;&amp;gt;0},Tt=function(t,n){return x(t,n)+x(t,n+4)*4294967296};function Jn(t,n){return Vn(t,{i:2},n&amp;amp;&amp;amp;n.out,n&amp;amp;&amp;amp;n.dictionary)}var Bt=typeof TextDecoder&amp;lt;&amp;quot;u&amp;quot;&amp;amp;&amp;amp;new TextDecoder,Yn=0;try{Bt.decode(Zn,{stream:!0}),Yn=1}catch{}var Kn=function(t){for(var n=&amp;quot;&amp;quot;,e=0;;){var s=t[e++],i=(s&amp;gt;127)+(s&amp;gt;223)+(s&amp;gt;239);if(e+i&amp;gt;t.length)return{s:n,r:It(t,e-1)};i?i==3?(s=((s&amp;amp;15)&amp;lt;&amp;lt;18|(t[e++]&amp;amp;63)&amp;lt;&amp;lt;12|(t[e++]&amp;amp;63)&amp;lt;&amp;lt;6|t[e++]&amp;amp;63)-65536,n+=String.fromCharCode(55296|s&amp;gt;&amp;gt;10,56320|s&amp;amp;1023)):i&amp;amp;1?n+=String.fromCharCode((s&amp;amp;31)&amp;lt;&amp;lt;6|t[e++]&amp;amp;63):n+=String.fromCharCode((s&amp;amp;15)&amp;lt;&amp;lt;12|(t[e++]&amp;amp;63)&amp;lt;&amp;lt;6|t[e++]&amp;amp;63):n+=String.fromCharCode(s)}};function Xn(t,n){if(n){for(var e=&amp;quot;&amp;quot;,s=0;s&amp;lt;t.length;s+=16384)e+=String.fromCharCode.apply(null,t.subarray(s,s+16384));return e}else{if(Bt)return Bt.decode(t);var i=Kn(t),o=i.s,e=i.r;return e.length&amp;amp;&amp;amp;k(8),o}}var Qn=function(t,n){return n+30+I(t,n+26)+I(t,n+28)},tr=function(t,n,e){var s=I(t,n+28),i=I(t,n+30),o=Xn(t.subarray(n+46,n+46+s),!(I(t,n+8)&amp;amp;2048)),a=n+46+s,c=er(t,a,i,e,x(t,n+20),x(t,n+24),x(t,n+42)),l=c[0],d=c[1],u=c[2];return[I(t,n+10),l,d,o,a+i+I(t,n+32),u]},er=function(t,n,e,s,i,o,a){var c=i==4294967295,l=o==4294967295,d=a==4294967295,u=n+e,f=c+l+d;if(s&amp;amp;&amp;amp;f){for(;n+4&amp;lt;u;n+=4+I(t,n+2))if(I(t,n)==1)return[c?Tt(t,n+4+8*l):i,l?Tt(t,n+4):o,d?Tt(t,n+4+8*(l+c)):a,1];s&amp;lt;2&amp;amp;&amp;amp;k(13)}return[i,o,a,0]};function ie(t,n){for(var e={},s=t.length-22;x(t,s)!=101010256;--s)(!s||t.length-s&amp;gt;65558)&amp;amp;&amp;amp;k(13);var i=I(t,s+8);if(!i)return{};var o=x(t,s+16),a=x(t,s-20)==117853008;if(a){var c=x(t,s-12);a=x(t,c)==101075792,a&amp;amp;&amp;amp;(i=x(t,c+32),o=x(t,c+48))}for(var l=n&amp;amp;&amp;amp;n.filter,d=0;d&amp;lt;i;++d){var u=tr(t,o,a),f=u[0],m=u[1],D=u[2],R=u[3],O=u[4],H=u[5],E=Qn(t,H);o=O,(!l||l({name:R,size:m,originalSize:D,compression:f}))&amp;amp;&amp;amp;(f?f==8?e[R]=Jn(t.subarray(E,E+m),{out:new w(D)}):k(14,&amp;quot;unknown compression type &amp;quot;+f):e[R]=It(t,E,E+m))}return e}async function nr(){let t=await C.find(&amp;quot;HeroesOldenEra_Data/StreamingAssets/Core.zip&amp;quot;,null,!0);if(console.log(&amp;quot;file:&amp;quot;,t),!t)return C.log(&amp;quot;!Invalid zip!&amp;quot;),{};let n=await rr(t);return ie(n)}async function rr(t){if(typeof t.arrayBuffer==&amp;quot;function&amp;quot;){let n=await t.arrayBuffer();return new Uint8Array(n)}return new Uint8Array(t)}var oe=nr;function sr(t,n,e,s){e!=null&amp;amp;&amp;amp;(Array.isArray(e)&amp;amp;&amp;amp;!e.length||s!==void 0&amp;amp;&amp;amp;String(e)===String(s)||(n.includes(&amp;quot;_mult&amp;quot;)&amp;amp;&amp;amp;typeof e==&amp;quot;number&amp;quot;&amp;amp;&amp;amp;!String(e).includes(&amp;quot;.&amp;quot;)&amp;amp;&amp;amp;(e+=&amp;quot;.0&amp;quot;),t[n]=e))}var r=sr;var ir=new TextDecoder;function or(t,n,e=null,s=!1){let i={};for(let o in t)if(o.match(n)){if(e&amp;amp;&amp;amp;o.match(e))continue;let a=t[o],c=ir.decode(a);if(c.match(/^\s*[{[]/)){let l=JSON.parse(c),d=Object.keys(l);if(d.length===1){let u=l[d[0]];Array.isArray(u)?i[o]=u:C.log(&amp;quot;Array required, skipping item!&amp;quot;,o),i[o]=u}else i[o]=l}else i[o]=c}if(s){let o=Object.values(i)[0];return o===void 0&amp;amp;&amp;amp;C.log(&amp;quot;Cannot offer a direct result for this pattern!&amp;quot;,n),o}return i}var p=or;var ar=(t,n,...e)=&amp;gt;{if(!t){let s=new Error(n);throw s.extra=e,s}},h=ar;function cr(...t){C.log(...t)}var g=cr;function lr(t){t=t.replace(/\/\/.*/g,&amp;quot;&amp;quot;),t=t.replace(/\/\*[\s\S]*?\*\//g,&amp;quot;&amp;quot;);let n={},e=t.split(&amp;quot;}&amp;quot;);if(e.pop(),!e.length)return g(&amp;quot;No function!&amp;quot;),{};for(let s of e){let[i,o]=G(ur,s);if(o){let a=o.extra||[];g(&amp;quot;Failed to compile!&amp;quot;,o.message,...a)}else Object.assign(n,i)}return n}function ur(t){let n=t.split(&amp;quot;{&amp;quot;);h(n.length===2,&amp;quot;Function must have 2 parts!&amp;quot;,t);let s=n[0].trim().split(&amp;quot; &amp;quot;);h(s.length===2,&amp;quot;Header must have 2 parts!&amp;quot;,t);let i=s[1];return h(at(i),&amp;quot;Invalid function name!&amp;quot;,t),{[i]:{type:s[0],body:fr(n[1],i)}}}function fr(t,n){let e=[],s=t.split(&amp;quot;)&amp;quot;);s.pop(),h(s.length&amp;gt;0,&amp;quot;No lines!&amp;quot;,n);for(let i of s)e.push(dr(i,n));return e}function dr(t,n){let e=t.split(&amp;quot;(&amp;quot;);h(e.length===2,&amp;quot;Invalid line!&amp;quot;,n,t);let s=e[0].trim();h(at(s),&amp;quot;Invalid action!&amp;quot;,n,t);let i=e[1].split(&amp;quot;,&amp;quot;),o=i.shift().trim();return h(at(o),&amp;quot;Invalid variable!&amp;quot;,n,t),{variable:o,action:s,params:pr(i,n,t)}}function pr(t,n,e){let s=[];for(let i of t){let o=i.trim();o.startsWith(&#039;&amp;quot;&#039;)?(h(o.endsWith(&#039;&amp;quot;&#039;),&amp;quot;Unexpected quotes!&amp;quot;,n,e),o=o.substring(1,o.length-1)):o.match(/^\d+$/)?o=Number(o):(h(at(o),&amp;quot;Invalid variable!&amp;quot;,n,e),o=&amp;quot;#&amp;quot;+o),s.push(o)}return s}function at(t){return!!t.match(/^[A-Za-z][A-Za-z0-9_]*$/)}var ae=lr;function _r(t,n){if(n=n.replaceAll(&amp;quot;[&amp;quot;,&amp;quot;.&amp;quot;).replaceAll(&amp;quot;]&amp;quot;,&amp;quot;&amp;quot;),n=n.startsWith(&amp;quot;.&amp;quot;)?n.substring(1):n,!n)return t;let e=n.split(&amp;quot;.&amp;quot;);for(let s of e)if(t&amp;amp;&amp;amp;s in t)t=t[s];else return;return t}var z=_r;var mr=t=&amp;gt;typeof t==&amp;quot;number&amp;quot;&amp;amp;&amp;amp;t!==1/0&amp;amp;&amp;amp;t!==-1/0&amp;amp;&amp;amp;!isNaN(t),U=mr;var hr={CurrentUnitData:[b,1],CurrentUnitConfig:[b,1],CurrentUnitStats:[b,1],CurrentAbility:[b,1],CurrentHero:[b,1],CurrentMagicBattleRoot:[b,1],CurrentMagicBattle:[b,1],CurrentMagicWorld:[b,1],CurrentSkillParameter:[b,1],CurrentSubSkill:[b,1],CurrentItem:[b,1],CurrentHeroSpecializationConfig:[b,1],CurrentItemSet:[b,1],CurrentFractionLawConfig:[b,1],SpellpowerForCurrentMagic:[yr,0],CurrentMagicLevel:[br,0],CurrentSkillLevel:[Dr,0],Add:[kr,2],Sub:[wr,2],Mul:[Sr,2],Div:[Ar,2],Avg:[Cr,2],Floor:[xr,1],Text:[Tr,1],DbBuff:[zr,2],DbSideBuff:[Br,2],DbObstacle:[Ir,2],DbTrap:[Ur,2],DbAbility:[Lr,3],Invoke:[Mr,1]};function ce(t,n,e,s=!1){s&amp;amp;&amp;amp;console.log(`${t}():`),h(t in n,&amp;quot;Unknown function!&amp;quot;,t);let i=n[t];h(i.body.at(-1).variable===&amp;quot;return&amp;quot;,&amp;quot;Must end with return variable!&amp;quot;,i);let o={};for(let a of i.body){let c=a.action,l={action:c,data:e,about:c,repository:n,isDebug:s},[d,u]=hr[c]||[];h(d,&amp;quot;Unknown action!&amp;quot;,a,l.about),h(u===-1||a.params.length===u,&amp;quot;Mismatched param count!&amp;quot;,l.about);let f=vr(a.params,o,l.about);f.push(l),o[a.variable]=d.apply(null,f),s&amp;amp;&amp;amp;console.log(l.about,a.params,JSON.stringify(o,null,4))}return gr(o.return,i.type)}function vr(t,n,e){let s=[];for(let i of t)if(typeof i==&amp;quot;string&amp;quot;&amp;amp;&amp;amp;i.charAt(0)===&amp;quot;#&amp;quot;){let o=i.substring(1);h(o in n,&amp;quot;Unknown variable!&amp;quot;,e,o),s.push(n[o])}else s.push(i);return s}function Z(t,n,e){let s=z(t,n);return h(s!==void 0,&amp;quot;Unresolved path!&amp;quot;,t,e.about,n),s}function gr(t,n){switch(n){case&amp;quot;int&amp;quot;:return Math.floor(t);case&amp;quot;modInt&amp;quot;:return Math.abs(Math.round(t));case&amp;quot;modPercentNumeric&amp;quot;:let e=Math.round(Math.abs(t*100));return e=isNaN(e)?t:e,e;case&amp;quot;modFloatPercentF1Numeric&amp;quot;:let s=Math.abs(t*100).toFixed(1);return s.includes(&amp;quot;.&amp;quot;)?s.replace(/\.0$/,&amp;quot;&amp;quot;):s;case&amp;quot;string&amp;quot;:return String(t);default:h(!1,&amp;quot;Unknown type!&amp;quot;,n)}}function b(t,n){let{action:e}=n,s=n.data[e];return h(s,`Missing &amp;quot;${e}&amp;quot; from data!`,n.about),Z(s,t,n)}function yr(){return 1}function br(t){return t.data.CurrentMagicLevel}function Dr(t){return t.data.CurrentSkillLevel}function kr(t,n,e){return t=Number(t),n=Number(n),h(U(t),&amp;quot;Expecting number!&amp;quot;,e.about,t),h(U(n),&amp;quot;Expecting number!&amp;quot;,e.about,n),t+n}function wr(t,n,e){return t=Number(t),n=Number(n),h(U(t),&amp;quot;Expecting number!&amp;quot;,e.about,t),h(U(n),&amp;quot;Expecting number!&amp;quot;,e.about,n),t-n}function Sr(t,n,e){return t=Number(t),n=Number(n),h(U(t),&amp;quot;Expecting number!&amp;quot;,e.about,t),h(U(n),&amp;quot;Expecting number!&amp;quot;,e.about,n),t*n}function Ar(t,n,{about:e}){return t=Number(t),t===0?0:(n=Number(n),h(U(t),&amp;quot;Invalid numerator!&amp;quot;,e,t),h(n&amp;amp;&amp;amp;U(n),&amp;quot;Invalid denominator!&amp;quot;,e,n),t/n)}function Cr(...t){let{about:n}=t.pop(),e=0;for(let s of t){let i=Number(s);h(U(i),&amp;quot;Expecting number!&amp;quot;,n,s),e+=i}return e/t.length}function xr(t,{about:n}){return t=Number(t),h(typeof t==&amp;quot;number&amp;quot;,&amp;quot;Invalid target!&amp;quot;,n,t),Math.floor(t)}function Tr(t){return t.toString()}function zr(t,n,e){let{buffs:s}=e.data,i=s[t];return h(i,&amp;quot;No such buff!&amp;quot;,e.about,t),Z(i,n,e)}function Br(t,n,e){let{buffs:s,sideBuffs:i}=e.data,o=i[t];h(o,&amp;quot;No such sideBuff!&amp;quot;,e.about,t);let a=s[o.sid];return h(a,&amp;quot;No such buff!&amp;quot;,e.about,o.sid),Z(a,n,e)}function Ir(t,n,e){let{obstacles:s}=e.data,i=s[t];return h(i,&amp;quot;No such obstacle!&amp;quot;,e.about,t),Z(i,n,e)}function Ur(t,n,e){let{traps:s}=e.data,i=s[t];return h(i,&amp;quot;No such trap!&amp;quot;,e.about,t),Z(i,n,e)}function Lr(t,n,e,s){let{abilities:i}=s.data,o=i[t];h(o,&amp;quot;No such ability!&amp;quot;,s.about,t,n);let a=o.levels[n];return h(a,&amp;quot;No such level!&amp;quot;,s.about,t,n),Z(a,e,s)}function Mr(t,n){let{repository:e,data:s,isDebug:i}=n;return h(e[t],&amp;quot;No such function to invoke!&amp;quot;,n.about,t),ce(t,e,s,i)}var le=ce;var Pr=(t,n=null,e=!1)=&amp;gt;{let s={};if(n===null){let i=t.length;for(let o=0;o&amp;lt;i;o++)s[t[o]]=o}else{let i=t.length;for(let o=0;o&amp;lt;i;o++){let a=t[o];s[a[n]]=e?o:a}}return s},F=Pr;function J(t,n){if(P(t)||(t={}),!P(n))return{...t};let e={...t};for(let s of Object.keys(n)){let i=t[s],o=n[s];if(P(i)&amp;amp;&amp;amp;P(o))e[s]=J(i,o);else if(Array.isArray(i)&amp;amp;&amp;amp;Array.isArray(o)){let a=Math.max(i.length,o.length),c=[];for(let l=0;l&amp;lt;a;l++){let d=i[l],u=o[l];l in o?P(d)&amp;amp;&amp;amp;P(u)?c[l]=J(d,u):c[l]=P(u)?J({},u):u:c[l]=P(d)?J({},d):d}e[s]=c}else P(o)?e[s]=J({},o):e[s]=Array.isArray(o)?o.slice():o}return e}function P(t){return t!==null&amp;amp;&amp;amp;typeof t==&amp;quot;object&amp;quot;&amp;amp;&amp;amp;t.constructor===Object}var ct=J;function Rr(t){switch(t.id){case&amp;quot;arena_sub_skill_faction_unfrozen_2_old&amp;quot;:case&amp;quot;campaign_sub_skill_faction_unfrozen_2_old&amp;quot;:case&amp;quot;sub_skill_faction_unfrozen_2_old&amp;quot;:case&amp;quot;campaign_sub_skill_protection_4_old&amp;quot;:case&amp;quot;sub_skill_protection_4_old&amp;quot;:t.bonuses[0].parameters.push(0),t.bonuses[0].parameters.push(0);break;case&amp;quot;skill_summon_1_bonus&amp;quot;:case&amp;quot;skill_summon_2_bonus&amp;quot;:case&amp;quot;skill_summon_3_bonus&amp;quot;:t.data.stats.hp=0;break;case&amp;quot;magic_shade_cloak_effect_0&amp;quot;:t.data.stats.outAllDmgMod=1;break}}var lt=Rr;var ut=new Set([]),Ut={en:&amp;quot;english&amp;quot;,pt_br:&amp;quot;BRportugese&amp;quot;,cs:&amp;quot;czech&amp;quot;,fr:&amp;quot;french&amp;quot;,de:&amp;quot;german&amp;quot;,hu:&amp;quot;hungarian&amp;quot;,it:&amp;quot;italian&amp;quot;,ja:&amp;quot;japanese&amp;quot;,ko:&amp;quot;korean&amp;quot;,pl:&amp;quot;polish&amp;quot;,ru:&amp;quot;russian&amp;quot;,es:&amp;quot;spanish&amp;quot;,tr:&amp;quot;turkish&amp;quot;,uk:&amp;quot;ukrainian&amp;quot;,&amp;quot;zh-hans&amp;quot;:&amp;quot;zhCN&amp;quot;,&amp;quot;zh-hant&amp;quot;:&amp;quot;zhTW&amp;quot;},Er={CurrentUnitData:{fullStacks:0,tempFullStacks:0,startBattleFullStacks:0,unit:{stats:{finalSummonBonusPercent:0,outComingBuffDuration:0,finalAbilityDamageBonusPercent:0}}},CurrentUnitConfig:{passives:[{actions:[{damageDealer:{minStackDmg:0,maxStackDmg:0}}]}]},CurrentAbility:{damageDealer:{statDmgMult:1,buff:{durationPerStack:[0,0]}}},CurrentHero:{level:1,heroStat:{viewRadius:3}}},jr=100,Lt,nt,Mt,ue,fe,de,pe,_e,me;function Fr(t){h(nt,&amp;quot;Please first build the cache!&amp;quot;),Lt=0,Array.isArray(t)||(t=[t]);let n=[];for(let e of t){let s=Vr(e);for(let i in Ut){if(ut.size&amp;amp;&amp;amp;i!==&amp;quot;en&amp;quot;)continue;let o=nt[i],a={_type:&amp;quot;TranslationDef&amp;quot;};if(r(a,&amp;quot;target_id&amp;quot;,e.target_id),r(a,&amp;quot;type&amp;quot;,e.type),r(a,&amp;quot;subtype&amp;quot;,e.subtype),r(a,&amp;quot;variant&amp;quot;,e.variant),r(a,&amp;quot;language&amp;quot;,i),o.has(e.name)){let c=ft(e.name,e,o,s);r(a,&amp;quot;name&amp;quot;,Yr(c,i))}o.has(e.description)&amp;amp;&amp;amp;r(a,&amp;quot;description&amp;quot;,ft(e.description,e,o,s)),o.has(e.bonus_description)&amp;amp;&amp;amp;r(a,&amp;quot;bonus_description&amp;quot;,ft(e.bonus_description,e,o,s)),(a.name||a.description||a.bonus_description)&amp;amp;&amp;amp;n.push(a)}}return n}function he(t){nt={};for(let n in Ut){let e=p(t,new RegExp(&amp;quot;Lang/&amp;quot;+Ut[n]+&amp;quot;/&amp;quot;)),s=new Map;s._lang=n;for(let i in e){let o=e[i];for(let a of o){if(Object.keys(a).toString()!==&amp;quot;sid,text&amp;quot;){g(&amp;quot;Unexpected token structure!&amp;quot;,a);continue}let c=Jr(a.text,a.sid);s.set(a.sid,c)}}nt[n]=s}Nr(t),Or(t),Hr(t),$r(t),qr(t),Wr(t),Gr(t)}function dt(t){return nt.en.has(t)}function Nr(t){let n=p(t,new RegExp(&amp;quot;Lang/args/&amp;quot;));Mt=new Map;for(let e in n){let s=n[e];for(let i of s){if(Object.keys(i).toString()!==&amp;quot;sid,args&amp;quot;){g(&amp;quot;Unexpected args item structure!&amp;quot;,i);continue}Mt.set(i.sid,i.args)}}}function Or(t){let n=p(t,new RegExp(&amp;quot;DB/info/.*script$&amp;quot;)),e=Object.values(n).join(`&lt;br /&gt;
/**/&lt;br /&gt;
`);ue=ae(e)}function Hr(t){let n=p(t,&amp;quot;DB/buffs&amp;quot;),e=Object.values(n).flat();e.map(s=&amp;gt;lt(s)),fe=F(e,&amp;quot;id&amp;quot;)}function $r(t){let n=p(t,&amp;quot;DB/side_buffs&amp;quot;),e=Object.values(n).flat();de=F(e,&amp;quot;id&amp;quot;)}function qr(t){let n=p(t,&amp;quot;DB/field_objects/obstacles&amp;quot;),e=Object.values(n).flat();pe=F(e,&amp;quot;id&amp;quot;)}function Wr(t){let n=p(t,&amp;quot;DB/field_objects/traps&amp;quot;),e=Object.values(n).flat();_e=F(e,&amp;quot;id&amp;quot;)}function Gr(t){let n=p(t,&amp;quot;DB/heroes_abilities/heroes_abilities_base&amp;quot;),e=Object.values(n).flat();me=F(e,&amp;quot;id&amp;quot;)}function Vr(t){let n={};return n=ct(n,Er),n=ct(n,{buffs:fe,sideBuffs:de,obstacles:pe,traps:_e,abilities:me}),n=ct(n,t._data),n}function ft(t,n,e,s,i=!1){if(!t)return;if(!e.has(t)){console.log(`Cannot find &amp;quot;${t}&amp;quot; in translation cache!`);return}let{target_id:o}=n;i=i||ut.size&amp;amp;&amp;amp;(ut.has(o)||ut.has(t))&amp;amp;&amp;amp;e._lang===&amp;quot;en&amp;quot;;let a=e.get(t);i&amp;amp;&amp;amp;console.log(&amp;quot;===========&amp;quot;+t),i&amp;amp;&amp;amp;console.log(&amp;quot;Before:&amp;quot;,a);let c=a;return c.includes(&amp;quot;{&amp;quot;)&amp;amp;&amp;amp;(c=c.replace(/\{(\d)}/g,(l,d)=&amp;gt;{let u=Zr(t,d,e,n,s,i);return u===void 0?l:u}),c.includes(&amp;quot;{&amp;quot;)&amp;amp;&amp;amp;g(&amp;quot;Still has braces!&amp;quot;,a,c)),i&amp;amp;&amp;amp;console.log(&amp;quot;After:&amp;quot;,c),(c.includes(&amp;quot;NaN&amp;quot;)||c.includes(&amp;quot;undefined&amp;quot;))&amp;amp;&amp;amp;g(&amp;quot;Something went wrong!&amp;quot;,o,t),c}function Zr(t,n,e,s,i,o){let a=Mt.get(t);if(!a)return g(&amp;quot;No args found!&amp;quot;,s,t);let c=a[n],[l,d]=c.split(&amp;quot;|&amp;quot;);if(d)return e.get(d)?ft(d,s,e,i,o):g(&amp;quot;Redirect not found!&amp;quot;,t,d);let[u,f]=G(le,l,ue,i,o);if(f){Lt++;let m=f.extra||[];g(&amp;quot;Failed to evaluate!&amp;quot;),g(`${t}: ${e.get(t)}`),g(f.message,...m),Lt&amp;gt;=jr&amp;amp;&amp;amp;h(!1);return}return o&amp;amp;&amp;amp;console.log(&amp;quot;evaluated:&amp;quot;,u),u}function Jr(t){return t=t.replace(/\r/g,&amp;quot;&amp;quot;),t=t.replace(/\n/g,&amp;quot;&amp;lt;br/&amp;gt;&amp;quot;),t=t.replace(/ /g,&amp;quot; &amp;quot;),t=t.replace(/‑/g,&amp;quot;-&amp;quot;),t=t.replace(/&amp;lt;b&amp;gt;/g,&amp;quot;&#039;&#039;&#039;&amp;quot;),t=t.replace(/&amp;lt;\/b&amp;gt;/g,&amp;quot;&#039;&#039;&#039;&amp;quot;),t=t.replace(/&amp;lt;i&amp;gt;/g,&amp;quot;&#039;&#039;&amp;quot;),t=t.replace(/&amp;lt;\/i&amp;gt;/g,&amp;quot;&#039;&#039;&amp;quot;),t=t.replace(/​/g,&amp;quot;&amp;quot;),t=t.replace(/­/g,&amp;quot;&amp;quot;),t}function Yr(t,n){return n===&amp;quot;en&amp;quot;?t.replaceAll(&amp;quot;\u2019&amp;quot;,&amp;quot;&#039;&amp;quot;):t}var _=Fr;function Kr(t,n){let e=[];for(let s=0;s&amp;lt;t.bonuses?.length;s++){let i=t.bonuses[s],o={_type:&amp;quot;BonusDef&amp;quot;};r(o,&amp;quot;parent_type&amp;quot;,n),r(o,&amp;quot;parent_id&amp;quot;,t.id),r(o,&amp;quot;ordinal&amp;quot;,s),r(o,&amp;quot;type&amp;quot;,i.type),r(o,&amp;quot;parameters&amp;quot;,i.parameters),r(o,&amp;quot;battle_type&amp;quot;,i.battleType),r(o,&amp;quot;activation_level&amp;quot;,i.activationLevel),r(o,&amp;quot;receiver_role&amp;quot;,i.receiverRole),r(o,&amp;quot;upgrade_increment&amp;quot;,i.upgrade?.increment),r(o,&amp;quot;upgrade_level_step&amp;quot;,i.upgrade?.levelStep),r(o,&amp;quot;receivers&amp;quot;,i.receivers),r(o,&amp;quot;receiver_allegiance&amp;quot;,i.receiverAllegiance),r(o,&amp;quot;action_area&amp;quot;,i.actionArea),r(o,&amp;quot;fraction&amp;quot;,i.fraction),&amp;quot;upgrade_increment&amp;quot;in o&amp;amp;&amp;amp;(String(o.upgrade_increment).includes(&amp;quot;.&amp;quot;)||(o.upgrade_increment+=&amp;quot;.0&amp;quot;)),e.push(o)}return e}var S=Kr;var Xr=t=&amp;gt;typeof t!=&amp;quot;object&amp;quot;||t===null?t:Pt(t),Pt=t=&amp;gt;{if(Array.isArray(t)){let n=t.slice(),e=n.length;for(let s=0;s&amp;lt;e;s++){let i=t[s];typeof i==&amp;quot;object&amp;quot;&amp;amp;&amp;amp;i!==null&amp;amp;&amp;amp;(n[s]=Pt(i))}return n}else{let n=Object.assign({},t);for(let e in t){let s=t[e];typeof s==&amp;quot;object&amp;quot;&amp;amp;&amp;amp;s!==null&amp;amp;&amp;amp;(n[e]=Pt(s))}return n}},pt=Xr;var ve=new Set([]);function Qr(t){let n={},e=p(t,&amp;quot;DB/items/items/.*?json&amp;quot;);for(let s in e){let i=e[s];for(let o of i){let{id:a}=o;ve.size&amp;amp;&amp;amp;!ve.has(a)||(n[&amp;quot;Artifact~&amp;quot;+a]=ts(o,s))}}return n}function ts(t,n){let e={_type:&amp;quot;ArtifactDef&amp;quot;};r(e,&amp;quot;id&amp;quot;,t.id),r(e,&amp;quot;name_sid&amp;quot;,t.name),r(e,&amp;quot;description_sid&amp;quot;,t.description),r(e,&amp;quot;upgrade_description_sid&amp;quot;,t.upgradeDescription),r(e,&amp;quot;narrative_description_sid&amp;quot;,t.narrativeDescription),r(e,&amp;quot;icon&amp;quot;,t.icon),r(e,&amp;quot;slot&amp;quot;,t.slot_),r(e,&amp;quot;rarity&amp;quot;,t.rarity),r(e,&amp;quot;artifact_set_id&amp;quot;,t.itemSet),r(e,&amp;quot;goods_value&amp;quot;,t.goodsValue),r(e,&amp;quot;max_level&amp;quot;,t.maxLevel),r(e,&amp;quot;cost_base&amp;quot;,t.costBase),r(e,&amp;quot;cost_per_level&amp;quot;,t.costPerLevel),r(e,&amp;quot;reward_for_destroy&amp;quot;,t.rewardForDestroy),r(e,&amp;quot;is_special_item&amp;quot;,!!t.isSpecialItem),r(e,&amp;quot;use_expand_tooltip&amp;quot;,ns(t)),r(e,&amp;quot;can_destroy&amp;quot;,t.canDestroy),r(e,&amp;quot;can_apply_bonus_always&amp;quot;,t.canApplyBonusAlways),r(e,&amp;quot;source_path&amp;quot;,n);let s={level:1,config:es(t)},i=_([{target_id:e.id,type:&amp;quot;artifact&amp;quot;,name:e.name_sid,description:e.description_sid,_data:{CurrentItem:s}},{target_id:e.id,type:&amp;quot;artifact_upgrade&amp;quot;,description:e.upgrade_description_sid,_data:{CurrentItem:s}},{target_id:e.id,type:&amp;quot;artifact_narrative&amp;quot;,description:e.narrative_description_sid,_data:{CurrentItem:s}}]),o=S(t,&amp;quot;artifact&amp;quot;);return[e,...i,...o]}function es(t){let n=pt(t);return n.bonuses||(n.bonuses=[]),n.bonuses[0]||n.bonuses.push({}),n.bonuses[0].upgrade||(n.bonuses[0].upgrade={}),n.bonuses[0].upgrade.hasOwnProperty(&amp;quot;increment&amp;quot;)||(n.bonuses[0].upgrade.increment=1),n.bonuses[1]||n.bonuses.push({}),n.bonuses[1].upgrade||(n.bonuses[1].upgrade={}),n.bonuses[1].upgrade.hasOwnProperty(&amp;quot;increment&amp;quot;)||(n.bonuses[1].upgrade.increment=1),n}function ns(t){let{useExpandTooltip:n}=t;if(n)return n===&amp;quot;true&amp;quot;}var ge=Qr;function rs(t,n){return n.global?[...t.matchAll(n)]:t.match(n)||[]}var y=rs;var ye=new Set([]);function ss(t){let n={},e=p(t,&amp;quot;DB/weeks_info.json&amp;quot;,null,!0),s=p(t,&amp;quot;DB/weeks/&amp;quot;);for(let i in s){let o=s[i];for(let a of o){let{id:c}=a;ye.size&amp;amp;&amp;amp;!ye.has(c)||(n[&amp;quot;AstrologistEvent~&amp;quot;+c]=is(a,i,e))}}return n}function is(t,n,e){let s={_type:&amp;quot;AstrologistEventDef&amp;quot;},i=y(t.id,/([a-z]+)_\d+$/)[1];r(s,&amp;quot;id&amp;quot;,t.id),r(s,&amp;quot;category&amp;quot;,i),r(s,&amp;quot;name_sid&amp;quot;,t.name),r(s,&amp;quot;desc_sid&amp;quot;,t.desc),r(s,&amp;quot;icon&amp;quot;,t.icon),r(s,&amp;quot;buff_sid&amp;quot;,t.buffSid),r(s,&amp;quot;roll_chance&amp;quot;,e[i+&amp;quot;s&amp;quot;].find(a=&amp;gt;a.sid===t.id).rollChance),r(s,&amp;quot;count_to_return&amp;quot;,i===&amp;quot;week&amp;quot;?e.countToReturnWeek:e.countToReturnMonth),r(s,&amp;quot;source_path&amp;quot;,n);let o=_({target_id:s.id,type:&amp;quot;astrologist_event&amp;quot;,name:s.name_sid,description:s.desc_sid,_data:{}});return[s,...o]}var be=ss;var De={melee:&amp;quot;melee&amp;quot;,remote:&amp;quot;reach&amp;quot;,ranged:&amp;quot;ranged&amp;quot;};function os(t){let n={},e=p(t,&amp;quot;Lang/english/texts/unitsAbility.json&amp;quot;,null,!0);for(let s in De){let i=De[s];n[&amp;quot;AttackArchetype~&amp;quot;+i]=ke(i,`base_passive_${s}_attack`);for(let{sid:o}of e){let a=new RegExp(`^base_passive_${s}_attack(.*?)_name$`),[,c]=y(o,a);if(c!==void 0){let l=s+&amp;quot;_attack&amp;quot;+c;n[&amp;quot;AttackArchetype~&amp;quot;+l]=ke(l,`base_passive_${l}`)}}}return n}function ke(t,n){let e={_type:&amp;quot;EntryDef&amp;quot;};r(e,&amp;quot;type&amp;quot;,&amp;quot;attack_archetype&amp;quot;),r(e,&amp;quot;subtype&amp;quot;,t),r(e,&amp;quot;name_sid&amp;quot;,n+&amp;quot;_name&amp;quot;),r(e,&amp;quot;desc_sid&amp;quot;,n+&amp;quot;_description&amp;quot;);let s=_({target_id:t,type:&amp;quot;attack_archetype&amp;quot;,subtype:t,name:e.name_sid,description:e.desc_sid});return[e,...s]}var we=os;var Se={area_strike:&amp;quot;base_passive_strike_rumble_1&amp;quot;,area_strike_falloff:&amp;quot;base_passive_strike_rumble_2&amp;quot;,cone_strike:&amp;quot;base_passive_strike_tri_reach_1&amp;quot;,dragonbreath_strike:&amp;quot;base_passive_strike_reach_1&amp;quot;,dragonbreath_strike_falloff:&amp;quot;base_passive_strike_reach_2&amp;quot;,sweeping_strike:&amp;quot;base_passive_strike_swipe_1&amp;quot;,sweeping_strike_falloff:&amp;quot;base_passive_strike_swipe_2&amp;quot;,whirlwind_strike:&amp;quot;base_passive_strike_swirl_1&amp;quot;,whirlwind_strike_falloff:&amp;quot;base_passive_strike_swirl_2&amp;quot;};function as(){let t={};for(let n in Se){let e=Se[n];t[&amp;quot;AttackPassive~&amp;quot;+n]=cs(n,e)}return t}function cs(t,n){let e={_type:&amp;quot;AttackPassiveDef&amp;quot;};r(e,&amp;quot;attack_passive_id&amp;quot;,t),r(e,&amp;quot;pattern_token&amp;quot;,y(n,/strike_(.*?)_\d$/)[1]),r(e,&amp;quot;rank&amp;quot;,y(n,/\d$/)[0]),r(e,&amp;quot;name_sid&amp;quot;,n+&amp;quot;_name&amp;quot;),r(e,&amp;quot;desc_sid&amp;quot;,n+&amp;quot;_description&amp;quot;);let s=_({target_id:t,type:&amp;quot;attack_passive&amp;quot;,name:e.name_sid,description:e.desc_sid});return[e,...s]}var Ae=as;var Ce=new Set([]);function ls(t){let n={},e=p(t,&amp;quot;DB/objects_logic/cities/&amp;quot;);for(let s in e){let i=e[s];if(i.length!==1){g(&amp;quot;Unexpected cities count!&amp;quot;,s);continue}let o=i[0];for(let a in o){let c=o[a];if(Array.isArray(c))for(let l of c){let{sid:d}=l,u=o.fraction+&amp;quot;_&amp;quot;+d;if(!(!d||Ce.size&amp;amp;&amp;amp;!Ce.has(u)))if(a===&amp;quot;hires&amp;quot;){let f=o.fraction+&amp;quot;_Build_creature_dwellings&amp;quot;;n[&amp;quot;Building~&amp;quot;+f]=n[&amp;quot;Building~&amp;quot;+f]||[],n[&amp;quot;Building~&amp;quot;+f].push(...xe(l,s,o,a))}else n[&amp;quot;Building~&amp;quot;+u]=xe(l,s,o,a)}}}return n}function xe(t,n,e,s){let i=[];for(let o=0;o&amp;lt;t.icons.length;o++)i.push(...us(t,n,e,s,o));return i}function us(t,n,e,s,i){let o=i+1,a=t.parametersPerLevel[i];if(!a)return[];let c={_type:&amp;quot;BuildingDef&amp;quot;};r(c,&amp;quot;id&amp;quot;,e.fraction+&amp;quot;_&amp;quot;+t.sid+&amp;quot;_L&amp;quot;+o),r(c,&amp;quot;faction&amp;quot;,e.fraction),r(c,&amp;quot;category&amp;quot;,s),r(c,&amp;quot;sid&amp;quot;,t.sid),r(c,&amp;quot;level&amp;quot;,o),r(c,&amp;quot;name_sid&amp;quot;,t.names[i]),r(c,&amp;quot;desc_sid&amp;quot;,t.descriptions[i]),r(c,&amp;quot;narrative_desc_sid&amp;quot;,t.narrativeDescriptions[i]),r(c,&amp;quot;icon&amp;quot;,t.icons[i]),r(c,&amp;quot;background_image&amp;quot;,t.backgroundImages[i]),r(c,&amp;quot;is_constructed_on_start&amp;quot;,o===1?t.isConstructedOnStart:void 0),r(c,&amp;quot;level_on_start&amp;quot;,o===1?t.levelOnStart:void 0),r(c,&amp;quot;scene_slot&amp;quot;,o===1?t.sceneSlot:void 0),r(c,&amp;quot;node_pos_x&amp;quot;,a?.nodePos?.xPos),r(c,&amp;quot;node_pos_y&amp;quot;,a?.nodePos?.yPos),r(c,&amp;quot;prereqs&amp;quot;,fs(a.prevBuildings)),r(c,&amp;quot;gold_cost&amp;quot;,a.costs.find(d=&amp;gt;d.name===&amp;quot;gold&amp;quot;)?.cost),r(c,&amp;quot;wood_cost&amp;quot;,a.costs.find(d=&amp;gt;d.name===&amp;quot;wood&amp;quot;)?.cost),r(c,&amp;quot;ore_cost&amp;quot;,a.costs.find(d=&amp;gt;d.name===&amp;quot;ore&amp;quot;)?.cost),r(c,&amp;quot;crystals_cost&amp;quot;,a.costs.find(d=&amp;gt;d.name===&amp;quot;crystals&amp;quot;)?.cost),r(c,&amp;quot;gemstones_cost&amp;quot;,a.costs.find(d=&amp;gt;d.name===&amp;quot;gemstones&amp;quot;)?.cost),r(c,&amp;quot;mercury_cost&amp;quot;,a.costs.find(d=&amp;gt;d.name===&amp;quot;mercury&amp;quot;)?.cost),r(c,&amp;quot;graal_cost&amp;quot;,a.costs.find(d=&amp;gt;d.name===&amp;quot;graal&amp;quot;)?.cost),r(c,&amp;quot;dust_cost&amp;quot;,a.costs.find(d=&amp;gt;d.name===&amp;quot;dust&amp;quot;)?.cost),r(c,&amp;quot;units_hire_sid&amp;quot;,t.unitsHire?.units[0].sids[0]),r(c,&amp;quot;units_weekly&amp;quot;,t.unitsHire?.units[0].weeklyIncrement),r(c,&amp;quot;source_path&amp;quot;,n);let l=_({target_id:c.id,type:&amp;quot;building&amp;quot;,name:c.name_sid,description:c.desc_sid,_data:{}});return[c,...l]}function fs(t){let n=[];for(let{sid:e,level:s}of t)n.push(e+&amp;quot;_L&amp;quot;+s);return n.length?n:void 0}var Te=ls;function ds(t,n){let{domain:e}=n,s={};for(let i in t){let o=ps(n,i,t[i]);s[e+&amp;quot;~&amp;quot;+i]=_s(i,o)}return s}function ps(t,n,e){let s={prefix:&amp;quot;&amp;quot;,name_suffix:&amp;quot;_name&amp;quot;,desc_suffix:&amp;quot;_description&amp;quot;};return Object.assign(s,t),e===!0?e={id:n}:typeof e==&amp;quot;string&amp;quot;&amp;amp;&amp;amp;(e={id:e}),Object.assign(s,e),s}function _s(t,n){let{type:e,id:s,prefix:i,name_suffix:o,desc_suffix:a,suppressDescription:c,path:l,trimColon:d}=n,u={_type:&amp;quot;EntryDef&amp;quot;};r(u,&amp;quot;type&amp;quot;,e),r(u,&amp;quot;subtype&amp;quot;,t),r(u,&amp;quot;name_sid&amp;quot;,i+s+o),r(u,&amp;quot;desc_sid&amp;quot;,c?void 0:i+s+a),r(u,&amp;quot;source_path&amp;quot;,l);let f=_({target_id:u.subtype,type:u.type,subtype:u.subtype,name:u.name_sid,description:u.desc_sid});if(d)for(let m of f)m.name&amp;amp;&amp;amp;(m.name=m.name.replace(/[:：\s]*$/,&amp;quot;&amp;quot;)),m.description&amp;amp;&amp;amp;(m.description=m.description.replace(/[:：\s]*$/,&amp;quot;&amp;quot;));return[u,...f]}var L=ds;var ms={construct:!0,demon:!0,dragon:!0,embodiment:!0,living:!0,magic_creature:!0,undead:!0};function hs(){return L(ms,{domain:&amp;quot;CreatureType&amp;quot;,type:&amp;quot;creature_type&amp;quot;,prefix:&amp;quot;base_class_&amp;quot;,name_suffix:&amp;quot;&amp;quot;})}var ze=hs;function vs(t){let n={},e=p(t,&amp;quot;DB/difficulties.json&amp;quot;,null,!0)||[];for(let s of e)n[&amp;quot;Difficulty~&amp;quot;+s.sid]=gs(s,&amp;quot;DB/difficulties.json&amp;quot;);return n}function gs(t,n){let e={_type:&amp;quot;DifficultyDef&amp;quot;};r(e,&amp;quot;id&amp;quot;,t.sid),r(e,&amp;quot;name_sid&amp;quot;,t.nameSid),r(e,&amp;quot;neutral_power_multiplier&amp;quot;,t.neutralPowerMultiplier),r(e,&amp;quot;player_gold&amp;quot;,t.playerStartResources.gold),r(e,&amp;quot;player_wood&amp;quot;,t.playerStartResources.wood),r(e,&amp;quot;player_ore&amp;quot;,t.playerStartResources.ore),r(e,&amp;quot;player_gemstones&amp;quot;,t.playerStartResources.gemstones),r(e,&amp;quot;player_crystals&amp;quot;,t.playerStartResources.crystals),r(e,&amp;quot;player_mercury&amp;quot;,t.playerStartResources.mercury),r(e,&amp;quot;player_dust&amp;quot;,t.playerStartResources.alchemicalDust),r(e,&amp;quot;ai_gold&amp;quot;,t.aiStartResources.gold),r(e,&amp;quot;ai_wood&amp;quot;,t.aiStartResources.wood),r(e,&amp;quot;ai_ore&amp;quot;,t.aiStartResources.ore),r(e,&amp;quot;ai_gemstones&amp;quot;,t.aiStartResources.gemstones),r(e,&amp;quot;ai_crystals&amp;quot;,t.aiStartResources.crystals),r(e,&amp;quot;ai_mercury&amp;quot;,t.aiStartResources.mercury),r(e,&amp;quot;ai_dust&amp;quot;,t.aiStartResources.alchemicalDust),r(e,&amp;quot;source_path&amp;quot;,n);let s={_type:&amp;quot;TranslationDef&amp;quot;};return r(s,&amp;quot;target_id&amp;quot;,t.sid),r(s,&amp;quot;type&amp;quot;,&amp;quot;difficulty&amp;quot;),r(s,&amp;quot;language&amp;quot;,&amp;quot;en&amp;quot;),r(s,&amp;quot;description&amp;quot;,t.descriptionSid),[e,s]}var Be=vs;var Ie=new Set([]),Ue={army:1,faction:0};function ys(t){let n={},e=p(t,&amp;quot;DB/fractions/&amp;quot;);for(let s in e){let i=e[s];for(let o of i){let{id:a}=o;Ie.size&amp;amp;&amp;amp;!Ie.has(a)||(n[&amp;quot;Faction~&amp;quot;+a]=bs(o,s))}}return n}function bs(t,n){let e={_type:&amp;quot;FactionDef&amp;quot;};r(e,&amp;quot;id&amp;quot;,t.id),r(e,&amp;quot;icon&amp;quot;,t.icon),r(e,&amp;quot;icon_faction_laws&amp;quot;,t.iconFractionLaws),r(e,&amp;quot;biome&amp;quot;,t.biome),r(e,&amp;quot;resource&amp;quot;,t.resourceName),r(e,&amp;quot;name_sid&amp;quot;,t.name),r(e,&amp;quot;desc_sid&amp;quot;,t.desc),r(e,&amp;quot;source_path&amp;quot;,n);let s=_({target_id:e.id,type:&amp;quot;faction&amp;quot;,name:e.name_sid,description:e.desc_sid,_data:{}}),i=[];for(let c of t.cityNames)i.push(...Ds(c));let o=[],a=[];for(let[c,l]of t.fractionLawsLines.entries())o.push(...ks(l,c+1,t.id)),a.push(...ws(l.groups,c+1,t.id));return[e,...s,...i,...o,...a]}function Ds(t){let[,n,e]=y(t,/^([a-z]+)_.*?_(\d+)$/),s=n+&amp;quot;_&amp;quot;+e,i={_type:&amp;quot;EntryDef&amp;quot;};r(i,&amp;quot;type&amp;quot;,&amp;quot;FactionCityName&amp;quot;),r(i,&amp;quot;subtype&amp;quot;,s),r(i,&amp;quot;name_sid&amp;quot;,t);let o=_({target_id:s,type:&amp;quot;FactionCityName&amp;quot;,subtype:s,name:i.name_sid});return[i,...o]}function ks(t,n,e){let s={_type:&amp;quot;FactionLawTierDef&amp;quot;};return r(s,&amp;quot;faction&amp;quot;,e),r(s,&amp;quot;tier&amp;quot;,n),r(s,&amp;quot;count_to_unlock&amp;quot;,t.countToUnlock),[s]}function ws(t,n,e){let s=[];for(let i in Ue){let o=Ue[i];for(let[a,c]of t[o].laws.entries()){let l={_type:&amp;quot;LawTreePositionDef&amp;quot;};r(l,&amp;quot;faction&amp;quot;,e),r(l,&amp;quot;tier&amp;quot;,n),r(l,&amp;quot;side&amp;quot;,i),r(l,&amp;quot;slot&amp;quot;,a),r(l,&amp;quot;law_id&amp;quot;,c),s.push(l)}}return s}var _t=ys;var Le=new Set([]);function Ss(t){let n={},e=As(t),s=Cs(t),i={addedSpells:e,replacedSpells:s},o=p(t,&amp;quot;DB/heroes/&amp;quot;),a=xs(o),c=Ts(a);for(let l in o){let d=o[l];for(let u of d){let{id:f}=u;if(Le.size&amp;amp;&amp;amp;!Le.has(f))continue;let m=u.classType+&amp;quot;_&amp;quot;+u.fraction,D=Re(l)?c[m]:a[m];n[&amp;quot;Hero~&amp;quot;+f]=Pe(u,m,l,D,i)}}return n}function As(t){let n={},e=p(t,&amp;quot;DB/heroes_skills/skills/&amp;quot;);for(let s in e){let i=e[s];for(let o of i){let a=o.parametersPerLevel||[];for(let[c,l]of a.entries()){let d=l.bonuses||[];for(let u of d)if(u.type===&amp;quot;heroMagicAddition&amp;quot;){let f=o.id+&amp;quot;_L&amp;quot;+(c+1);n[f]=n[f]||[],n[f].push(u.parameters[0])}}}}return n}function Cs(t){let n={},e=p(t,&amp;quot;DB/heroes_specializations/&amp;quot;);for(let s in e){let i=e[s];for(let o of i)for(let a of o.bonuses)a.type===&amp;quot;heroMagicReplace&amp;quot;&amp;amp;&amp;amp;(n[o.id]=n[o.id]||[],n[o.id].push(a.parameters))}return n}function xs(t){let n={};for(let e in t){if(Re(e))continue;let s=t[e];for(let i of s){let o=i.classType+&amp;quot;_&amp;quot;+i.fraction;n[o]||(n[o]=Pe(i,o,e)[0])}}return n}function Ts(t){let n=pt(t);for(let e in n){let s=n[e];delete s.view_radius,delete s.stats_num,delete s.magic_casts_per_round,delete s.enable_tactics,delete s.tactics_placement_size,delete s.enable_hero_native_biome,delete s.offence,delete s.defence,delete s.spell_power,delete s.intelligence,delete s.luck,delete s.morale}return n}function Pe(t,n,e,s={},i=null){let o={_type:&amp;quot;HeroDef&amp;quot;};r(o,&amp;quot;id&amp;quot;,t.id),r(o,&amp;quot;name_sid&amp;quot;,t.name||t.id),r(o,&amp;quot;motto_sid&amp;quot;,t.motto||t.id+&amp;quot;_motto&amp;quot;),r(o,&amp;quot;desc_sid&amp;quot;,t.description||t.id+&amp;quot;_description&amp;quot;),r(o,&amp;quot;class_id&amp;quot;,n),r(o,&amp;quot;faction&amp;quot;,t.fraction),r(o,&amp;quot;class_type&amp;quot;,t.classType),r(o,&amp;quot;icon&amp;quot;,t.icon),r(o,&amp;quot;specialization_id&amp;quot;,t.specialization),r(o,&amp;quot;source_path&amp;quot;,e),r(o,&amp;quot;start_skills&amp;quot;,Rt(t.startSkills,&amp;quot;sid&amp;quot;)),r(o,&amp;quot;start_skill_levels&amp;quot;,Rt(t.startSkills,&amp;quot;skillLevel&amp;quot;)),r(o,&amp;quot;start_magics&amp;quot;,Rt(t.startMagics,&amp;quot;sidConfig&amp;quot;)||&amp;quot;temp&amp;quot;),r(o,&amp;quot;start_level&amp;quot;,t.startLevel,1),r(o,&amp;quot;attacks_times_before&amp;quot;,t.attacksTimesBefore,s.attacks_times_before),r(o,&amp;quot;mesh&amp;quot;,t.mesh,s.mesh),r(o,&amp;quot;mount&amp;quot;,t.mounts,s.mount),r(o,&amp;quot;skills_roll_variant&amp;quot;,t.skillsRollVariant,s.skills_roll_variant),r(o,&amp;quot;view_radius&amp;quot;,t.stats?.viewRadius,s.view_radius),r(o,&amp;quot;stats_num&amp;quot;,t.stats?.statsNum,s.stats_num),r(o,&amp;quot;magic_casts_per_round&amp;quot;,t.stats?.magicCastsPerRound,s.magic_casts_per_round),r(o,&amp;quot;enable_tactics&amp;quot;,t.stats?.enableTactics,s.enable_tactics),r(o,&amp;quot;tactics_placement_size&amp;quot;,t.stats?.tacticsPlacementSize,s.tactics_placement_size),r(o,&amp;quot;enable_hero_native_biome&amp;quot;,t.stats?.enableHeroNativeBiome,s.enable_hero_native_biome),r(o,&amp;quot;offence&amp;quot;,t.stats?.offence,s.offence),r(o,&amp;quot;defence&amp;quot;,t.stats?.defence,s.defence),r(o,&amp;quot;spell_power&amp;quot;,t.stats?.spellPower,s.spell_power),r(o,&amp;quot;intelligence&amp;quot;,t.stats?.intelligence,s.intelligence),r(o,&amp;quot;luck&amp;quot;,t.stats?.luck,s.luck),r(o,&amp;quot;morale&amp;quot;,t.stats?.moral,s.morale),r(o,&amp;quot;roll_lvl1_attack&amp;quot;,N(t,1,0)||0),r(o,&amp;quot;roll_lvl1_defense&amp;quot;,N(t,1,1)||0),r(o,&amp;quot;roll_lvl1_power&amp;quot;,N(t,1,2)||0),r(o,&amp;quot;roll_lvl1_knowledge&amp;quot;,N(t,1,3)||0),r(o,&amp;quot;roll_lvl24_attack&amp;quot;,N(t,24,0)||0),r(o,&amp;quot;roll_lvl24_defense&amp;quot;,N(t,24,1)||0),r(o,&amp;quot;roll_lvl24_power&amp;quot;,N(t,24,2)||0),r(o,&amp;quot;roll_lvl24_knowledge&amp;quot;,N(t,24,3)||0),zs(o,s),Bs(o,i);let a=_([{target_id:o.id,type:&amp;quot;hero&amp;quot;,name:o.name_sid,description:o.desc_sid},{target_id:o.id,type:&amp;quot;hero_motto&amp;quot;,description:o.motto_sid}]),c=[];for(let[l,d]of t.startSquad.entries())c.push(Me(d,l+1,t.id,&amp;quot;primary&amp;quot;));for(let[l,d]of t.startSquadAlt.entries())c.push(Me(d,l+1,t.id,&amp;quot;alt&amp;quot;));return[o,...a,...c]}function zs(t,n){let e=Object.keys(t).filter(i=&amp;gt;i.startsWith(&amp;quot;roll&amp;quot;)),s=0;for(let i of e)s+=t[i]===n[i]?1:0;if(s===e.length)for(let i of e)delete t[i]}function Bs(t,n){let{specialization_id:e,start_skills:s=[],start_skill_levels:i=[]}=t;t.start_magics=t.start_magics===&amp;quot;temp&amp;quot;?[]:t.start_magics;let{start_magics:o}=t;if(n){let{addedSpells:a,replacedSpells:c}=n,l=c[e]||[];for(let[d,u]of s.entries()){let f=u+&amp;quot;_L&amp;quot;+i[d],m=a[f];m&amp;amp;&amp;amp;o.unshift(...m)}for(let[d,u]of o.entries())for(let f of l)if(f[0]===u){o[d]=f[1];break}}o.length||delete t.start_magics}function Re(t){return t.includes(&amp;quot;campaign&amp;quot;)||t.includes(&amp;quot;custom&amp;quot;)}function Rt(t,n){let e=t.map(s=&amp;gt;s[n]);return e.length?e:void 0}function N(t,n,e){if(!t.statsRolls)return;let s=t.statsRolls.find(i=&amp;gt;i.levelFrom===n)?.rollChances[e].c;return s===void 0&amp;amp;&amp;amp;(s=0),s}function Me(t,n,e,s){let i={_type:&amp;quot;HeroStartSquadDef&amp;quot;};return r(i,&amp;quot;hero_id&amp;quot;,e),r(i,&amp;quot;variant&amp;quot;,s),r(i,&amp;quot;slot&amp;quot;,n),r(i,&amp;quot;unit_id&amp;quot;,t.sid),r(i,&amp;quot;min&amp;quot;,t.min),r(i,&amp;quot;max&amp;quot;,t.max),i}var mt=Ss;var Is=t=&amp;gt;typeof t==&amp;quot;object&amp;quot;&amp;amp;&amp;amp;t!==null,Ee=Is;var Us=t=&amp;gt;Object.values(t).length,je=Us;function Ls(t){let n={},e=p(t,&amp;quot;DB/heroes/.*?json&amp;quot;,&amp;quot;campaign|custom&amp;quot;),s=Ms(e);je(s)!==12&amp;amp;&amp;amp;g(&amp;quot;Unexpected hero classes count!&amp;quot;);for(let i in s){let o=s[i],a=[{target_id:i,type:&amp;quot;hero_class&amp;quot;,name:i+&amp;quot;_name&amp;quot;,description:o.class_type+&amp;quot;_desc&amp;quot;}];n[&amp;quot;HeroClass~&amp;quot;+i]=[o,..._(a)]}return n}function Ms(t){let n={};for(let e in t){let s=t[e];s.length!==1&amp;amp;&amp;amp;g(&amp;quot;Unexpected hero list count!&amp;quot;,e);let i=s[0];if(!Ee(i)){g(&amp;quot;Hero must be pojo!&amp;quot;,i);continue}let o=Ps(i),{id:a}=o;if(a in n){let c=JSON.stringify(n[a]),l=JSON.stringify(o);c!==l&amp;amp;&amp;amp;g(&amp;quot;Fresh class is not identical to old class!&amp;quot;,c,e,l)}else n[a]=o}return n}function Ps(t){let{fraction:n,classType:e}=t,s=e+&amp;quot;_&amp;quot;+n,i={_type:&amp;quot;HeroClassDef&amp;quot;};return r(i,&amp;quot;id&amp;quot;,s),r(i,&amp;quot;name_sid&amp;quot;,s+&amp;quot;_name&amp;quot;),r(i,&amp;quot;desc_sid&amp;quot;,e+&amp;quot;_desc&amp;quot;),r(i,&amp;quot;faction&amp;quot;,n),r(i,&amp;quot;class_type&amp;quot;,e),r(i,&amp;quot;mesh&amp;quot;,t.mesh),r(i,&amp;quot;mount&amp;quot;,t.mounts),r(i,&amp;quot;native_biome&amp;quot;,t.nativeBiome),r(i,&amp;quot;skills_roll_variant&amp;quot;,t.skillsRollVariant),r(i,&amp;quot;cost_gold&amp;quot;,t.costGold),r(i,&amp;quot;start_level&amp;quot;,t.startLevel),r(i,&amp;quot;attacks_times_before&amp;quot;,t.attacksTimesBefore),r(i,&amp;quot;view_radius&amp;quot;,t.stats?.viewRadius),r(i,&amp;quot;stats_num&amp;quot;,t.stats?.statsNum),r(i,&amp;quot;magic_casts_per_round&amp;quot;,t.stats?.magicCastsPerRound),r(i,&amp;quot;enable_tactics&amp;quot;,t.stats?.enableTactics),r(i,&amp;quot;tactics_placement_size&amp;quot;,t.stats?.tacticsPlacementSize),r(i,&amp;quot;enable_hero_native_biome&amp;quot;,t.stats?.enableHeroNativeBiome),r(i,&amp;quot;offence&amp;quot;,t.stats?.offence),r(i,&amp;quot;defence&amp;quot;,t.stats?.defence),r(i,&amp;quot;spell_power&amp;quot;,t.stats?.spellPower),r(i,&amp;quot;intelligence&amp;quot;,t.stats?.intelligence),r(i,&amp;quot;luck&amp;quot;,t.stats?.luck),r(i,&amp;quot;morale&amp;quot;,t.stats?.moral),r(i,&amp;quot;roll_lvl1_attack&amp;quot;,z(t,&amp;quot;statsRolls[0].rollChances[0].c&amp;quot;)),r(i,&amp;quot;roll_lvl1_defense&amp;quot;,z(t,&amp;quot;statsRolls[0].rollChances[1].c&amp;quot;)),r(i,&amp;quot;roll_lvl1_power&amp;quot;,z(t,&amp;quot;statsRolls[0].rollChances[2].c&amp;quot;)),r(i,&amp;quot;roll_lvl1_knowledge&amp;quot;,z(t,&amp;quot;statsRolls[0].rollChances[3].c&amp;quot;)),r(i,&amp;quot;roll_lvl24_attack&amp;quot;,z(t,&amp;quot;statsRolls[1].rollChances[0].c&amp;quot;)),r(i,&amp;quot;roll_lvl24_defense&amp;quot;,z(t,&amp;quot;statsRolls[1].rollChances[1].c&amp;quot;)),r(i,&amp;quot;roll_lvl24_power&amp;quot;,z(t,&amp;quot;statsRolls[1].rollChances[2].c&amp;quot;)),r(i,&amp;quot;roll_lvl24_knowledge&amp;quot;,z(t,&amp;quot;statsRolls[1].rollChances[3].c&amp;quot;)),i}var Fe=Ls;var Ne=new Set([]);function Rs(t){let n={},e=p(t,&amp;quot;DB/heroes_specializations/&amp;quot;);for(let s in e){let i=e[s];for(let o of i){let{id:a}=o;Ne.size&amp;amp;&amp;amp;!Ne.has(a)||(n[&amp;quot;HeroSpecialization~&amp;quot;+a]=Es(o,s))}}return n}function Es(t,n){let e={_type:&amp;quot;HeroSpecializationDef&amp;quot;};r(e,&amp;quot;id&amp;quot;,t.id),r(e,&amp;quot;name_sid&amp;quot;,t.name),r(e,&amp;quot;desc_sid&amp;quot;,t.desc),r(e,&amp;quot;icon&amp;quot;,t.icon),r(e,&amp;quot;source_path&amp;quot;,n);let s=_({target_id:e.id,type:&amp;quot;hero_specialization&amp;quot;,name:e.name_sid,description:e.desc_sid,_data:{CurrentHeroSpecializationConfig:t}}),i=S(t,&amp;quot;hero_specialization&amp;quot;);return[e,...s,...i]}var Oe=Rs;var js={defence:!0,intelligence:!0,luck:!0,morale:!0,offence:!0,spellPower:!0};function Fs(){return L(js,{domain:&amp;quot;HeroStat&amp;quot;,type:&amp;quot;hero_stat&amp;quot;,path:&amp;quot;Lang/english/texts/ui.json&amp;quot;})}var He=Fs;var $e=new Set([]);function Ns(t){let n={},e=p(t,&amp;quot;DB/heroes_sub_classes/.*?json&amp;quot;);for(let s in e){let i=e[s];for(let o of i){let{id:a}=o;$e.size&amp;amp;&amp;amp;!$e.has(a)||(n[&amp;quot;HeroSubClass~&amp;quot;+a]=Os(o,s))}}return n}function Os(t,n){let e={_type:&amp;quot;HeroSubClassDef&amp;quot;};r(e,&amp;quot;id&amp;quot;,t.id),r(e,&amp;quot;name_sid&amp;quot;,t.name),r(e,&amp;quot;desc_sid&amp;quot;,t.desc),r(e,&amp;quot;icon&amp;quot;,t.icon),r(e,&amp;quot;faction&amp;quot;,t.faction),r(e,&amp;quot;class_type&amp;quot;,t.classType),r(e,&amp;quot;activation_skill_1_sid&amp;quot;,t.activationConditions[0].skillSid),r(e,&amp;quot;activation_skill_1_level&amp;quot;,t.activationConditions[0].skillLevel),r(e,&amp;quot;activation_skill_2_sid&amp;quot;,t.activationConditions[1].skillSid),r(e,&amp;quot;activation_skill_2_level&amp;quot;,t.activationConditions[1].skillLevel),r(e,&amp;quot;activation_skill_3_sid&amp;quot;,t.activationConditions[2].skillSid),r(e,&amp;quot;activation_skill_3_level&amp;quot;,t.activationConditions[2].skillLevel),r(e,&amp;quot;activation_skill_4_sid&amp;quot;,t.activationConditions[3].skillSid),r(e,&amp;quot;activation_skill_4_level&amp;quot;,t.activationConditions[3].skillLevel),r(e,&amp;quot;activation_skill_5_sid&amp;quot;,t.activationConditions[4].skillSid),r(e,&amp;quot;activation_skill_5_level&amp;quot;,t.activationConditions[4].skillLevel),r(e,&amp;quot;source_path&amp;quot;,n);let s=_({target_id:e.id,type:&amp;quot;hero_sub_class&amp;quot;,name:e.name_sid,description:e.desc_sid,_data:{}}),i=S(t,&amp;quot;hero_sub_class&amp;quot;);return[e,...s,...i]}var qe=Ns;var We=new Set([]);function Hs(t){let n={},e=p(t,&amp;quot;DB/items/item_sets/&amp;quot;);for(let s in e){let i=e[s];for(let o of i){let{id:a}=o;We.size&amp;amp;&amp;amp;!We.has(a)||(n[&amp;quot;ItemSet~&amp;quot;+a]=$s(o,s))}}return n}function $s(t,n){let e={_type:&amp;quot;ItemSetDef&amp;quot;};r(e,&amp;quot;id&amp;quot;,t.id),r(e,&amp;quot;name_sid&amp;quot;,t.name),r(e,&amp;quot;items_in_set&amp;quot;,t.itemsInSet),r(e,&amp;quot;source_path&amp;quot;,n);let s=_({target_id:e.id,type:&amp;quot;item_set&amp;quot;,name:e.name_sid,_data:{}}),i=[],o=t.bonuses||[];for(let[a,c]of o.entries())i.push(...qs(c,a,t));return[e,...s,...i]}function qs(t,n,e){let s={_type:&amp;quot;ItemSetTierDef&amp;quot;};r(s,&amp;quot;id&amp;quot;,e.id+&amp;quot;_tier_&amp;quot;+n),r(s,&amp;quot;set_id&amp;quot;,e.id),r(s,&amp;quot;ordinal&amp;quot;,n),r(s,&amp;quot;required_amount&amp;quot;,t.requiredItemsAmount),r(s,&amp;quot;description_sid&amp;quot;,t.desc);let i=_({target_id:s.id,type:&amp;quot;item_set_tier&amp;quot;,description:s.description_sid,_data:{CurrentItemSet:{config:e}}}),o={id:s.id,bonuses:t.heroBonuses},a=S(o,&amp;quot;item_set_tier&amp;quot;);return[s,...i,...a]}var Ge=Hs;var Ve=new Set([]);function Ws(t){let n={},e=Gs(t),s=p(t,&amp;quot;DB/fractions_laws/&amp;quot;);for(let i in s){let o=s[i];for(let a of o){let{id:c}=a;Ve.size&amp;amp;&amp;amp;!Ve.has(c)||(n[&amp;quot;Law~&amp;quot;+c]=Vs(a,i,e))}}return n}function Gs(t){let n={},e=_t(t);for(let s in e){let i=e[s];for(let o of i)o.law_id&amp;amp;&amp;amp;(n[o.law_id]=o)}return n}function Vs(t,n,e){let[,s]=y(t.id,/_(\d+)$/),{parametersPerLevel:i=[]}=t,o={_type:&amp;quot;LawDef&amp;quot;};r(o,&amp;quot;id&amp;quot;,t.id),r(o,&amp;quot;faction&amp;quot;,e[t.id]?.faction),r(o,&amp;quot;ordinal&amp;quot;,s),r(o,&amp;quot;tier&amp;quot;,e[t.id]?.tier),r(o,&amp;quot;name_sid&amp;quot;,t.name),r(o,&amp;quot;desc_sid&amp;quot;,t.desc),r(o,&amp;quot;icon&amp;quot;,t.icon),r(o,&amp;quot;max_level&amp;quot;,i.length),r(o,&amp;quot;test&amp;quot;,n.includes(&amp;quot;test&amp;quot;)),r(o,&amp;quot;source_path&amp;quot;,n);let a=_({target_id:o.id,type:&amp;quot;law&amp;quot;,name:o.name_sid}),c=[];for(let[l,d]of i.entries())c.push(...Zs(d,l+1,t));return[o,...a,...c]}function Zs(t,n,e){let s={_type:&amp;quot;LawLevelDef&amp;quot;};r(s,&amp;quot;law_id&amp;quot;,e.id),r(s,&amp;quot;level&amp;quot;,n),r(s,&amp;quot;cost&amp;quot;,t.cost);let i=_({target_id:e.id,type:&amp;quot;law_level&amp;quot;,variant:n,description:e.desc,_data:{CurrentFractionLawConfig:t}}),o={...t,id:e.id+&amp;quot;_L&amp;quot;+n},a=S(o,&amp;quot;law_level&amp;quot;);return[s,...i,...a]}var Ze=Ws;var Je=new Set([]);function Js(t){let n={},e=p(t,&amp;quot;DB/objects_logic/&amp;quot;,/artifacts|campaign|cities|blocks/);for(let s in e){let i=e[s];for(let o of i){let{id:a}=o;if(Je.size&amp;amp;&amp;amp;!Je.has(a))continue;let c=Ys(o,s);c&amp;amp;&amp;amp;(n[&amp;quot;MapObject~&amp;quot;+a]=c)}}return n}function Ys(t,n){let e=y(n,/(\w+)\/[^\/]+$/)[1],s=t.guardUnits?.map(c=&amp;gt;`${c.sid}:${c.amount}`),i=Ks(t.id+&amp;quot;_name&amp;quot;);if(e===&amp;quot;todo&amp;quot;||n.includes(&amp;quot;event_banks&amp;quot;)&amp;amp;&amp;amp;!i)return;let o={_type:&amp;quot;MapObjectDef&amp;quot;};r(o,&amp;quot;id&amp;quot;,t.id),r(o,&amp;quot;category&amp;quot;,e),r(o,&amp;quot;name_sid&amp;quot;,i&amp;amp;&amp;amp;t.id+&amp;quot;_name&amp;quot;),r(o,&amp;quot;desc_sid&amp;quot;,i&amp;amp;&amp;amp;t.id+&amp;quot;_description&amp;quot;),r(o,&amp;quot;narrative_desc_sid&amp;quot;,i&amp;amp;&amp;amp;t.id+&amp;quot;_narrativeDescription&amp;quot;),r(o,&amp;quot;goods_value&amp;quot;,t.goodsValue),r(o,&amp;quot;ai_value&amp;quot;,t.aiValue),r(o,&amp;quot;custom_guard_value&amp;quot;,t.customGuardValue),r(o,&amp;quot;view_radius&amp;quot;,t.viewRadius),r(o,&amp;quot;ai_ignore&amp;quot;,t.aiIgnore),r(o,&amp;quot;resource_name&amp;quot;,t.resName),r(o,&amp;quot;resource_value&amp;quot;,t.resValue),r(o,&amp;quot;guard_units&amp;quot;,s),r(o,&amp;quot;fraction&amp;quot;,t.fraction),r(o,&amp;quot;tier&amp;quot;,t.tier),r(o,&amp;quot;units_hire_sid&amp;quot;,t.unitsData?.units[0].sids[0]),r(o,&amp;quot;units_weekly&amp;quot;,t.unitsData?.units[0].weeklyIncrement),r(o,&amp;quot;bonus_growth&amp;quot;,t.bonuses?.find(c=&amp;gt;c.type===&amp;quot;cityUnitsIncrementFromBarrack&amp;quot;)?.parameters[1]),r(o,&amp;quot;source_path&amp;quot;,n);let a=_([{target_id:o.id,type:&amp;quot;map_object&amp;quot;,name:o.name_sid,description:o.desc_sid,_data:{}},{target_id:o.id,type:&amp;quot;map_object_narrative&amp;quot;,description:o.narrative_desc_sid}]);return[o,...a]}function Ks(t){if(!t.includes(&amp;quot;scroll_box&amp;quot;)&amp;amp;&amp;amp;dt(t))return!0}var Ye=Js;var Xs={fly:&amp;quot;flyer&amp;quot;,teleport:&amp;quot;blink&amp;quot;};function Qs(){return L(Xs,{domain:&amp;quot;Movement&amp;quot;,type:&amp;quot;movement&amp;quot;,prefix:&amp;quot;base_passive_&amp;quot;})}var Ke=Qs;var Xe=new Set([]);function ti(t){let n={},e=p(t,&amp;quot;DB/res/&amp;quot;);for(let s in e){let i=e[s];for(let o of i){let{id:a}=o;Xe.size&amp;amp;&amp;amp;!Xe.has(a)||(n[&amp;quot;Resource~&amp;quot;+a]=ei(o,s))}}return n}function ei(t,n){let e={_type:&amp;quot;EntryDef&amp;quot;};r(e,&amp;quot;type&amp;quot;,&amp;quot;resource&amp;quot;),r(e,&amp;quot;subtype&amp;quot;,t.id),r(e,&amp;quot;icon&amp;quot;,t.icon),r(e,&amp;quot;name_sid&amp;quot;,t.name),r(e,&amp;quot;desc_sid&amp;quot;,t.desc),r(e,&amp;quot;narrative_description_sid&amp;quot;,t.narrativeDesc),r(e,&amp;quot;source_path&amp;quot;,n);let s=_({target_id:e.subtype,type:&amp;quot;resource&amp;quot;,subtype:e.subtype,name:e.name_sid,description:e.desc_sid,_data:{}});return[e,...s]}var Qe=ti;var tn=new Set([]),nn={&amp;quot;pseudo_skills.json&amp;quot;:&amp;quot;pseudo&amp;quot;,&amp;quot;skills.json&amp;quot;:&amp;quot;production&amp;quot;,&amp;quot;skills_arena.json&amp;quot;:&amp;quot;arena&amp;quot;,&amp;quot;skills_campaign.json&amp;quot;:&amp;quot;campaign&amp;quot;,&amp;quot;sub_skills.json&amp;quot;:&amp;quot;production&amp;quot;,&amp;quot;sub_skills_arena.json&amp;quot;:&amp;quot;arena&amp;quot;,&amp;quot;sub_skills_campaign.json&amp;quot;:&amp;quot;campaign&amp;quot;,&amp;quot;sub_skills_test.json&amp;quot;:&amp;quot;test&amp;quot;},en=[&amp;quot;DB/heroes_skills/sub_skills/sub_skills_arena.json&amp;quot;,&amp;quot;DB/heroes_skills/sub_skills/sub_skills_campaign.json&amp;quot;,&amp;quot;DB/heroes_skills/sub_skills/sub_skills.json&amp;quot;,&amp;quot;DB/heroes_skills/sub_skills/sub_skills_test.json&amp;quot;];function ni(t){let n={},e=ri(t),s=p(t,&amp;quot;DB/heroes_skills/skills/.*?json&amp;quot;);for(let i in s){let o=s[i];for(let a of o){let{id:c}=a;tn.size&amp;amp;&amp;amp;!tn.has(c)||(n[&amp;quot;Skill~&amp;quot;+c]=ii(a,i,e))}}return n[&amp;quot;Skill~_orphan_sub_skills&amp;quot;]=ci(n,e),n}function ri(t){let n={},e=p(t,&amp;quot;DB/heroes_skills/sub_skills/.*?json&amp;quot;);for(let s in e){let i=e[s];for(let o of i){let{id:a}=o;n[a]=si(o,s)}}return n}function si(t,n){lt(t);let e=t.id.replace(/sub_/,&amp;quot;&amp;quot;);e=e.replace(/_\d/,&amp;quot;&amp;quot;),e=e.replace(/_old/,&amp;quot;&amp;quot;),e=e.replace(/_new/,&amp;quot;&amp;quot;);let s={_type:&amp;quot;SubSkillDef&amp;quot;};r(s,&amp;quot;id&amp;quot;,t.id),r(s,&amp;quot;variant&amp;quot;,nn[n.split(&amp;quot;/&amp;quot;).pop()]),r(s,&amp;quot;parent_skill_id&amp;quot;,e),r(s,&amp;quot;name_sid&amp;quot;,t.name),r(s,&amp;quot;desc_sid&amp;quot;,t.desc),r(s,&amp;quot;icon&amp;quot;,t.icon),r(s,&amp;quot;source_path&amp;quot;,n);let i=_({target_id:s.id,type:&amp;quot;sub_skill&amp;quot;,name:s.name_sid,description:s.desc_sid,_data:{CurrentSubSkill:t}}),o=S(t,&amp;quot;sub_skill&amp;quot;);return[s,...i,...o]}function ii(t,n,e){let s=[];s.push(...oi(t,n));for(let a=0;a&amp;lt;t.parametersPerLevel.length;a++){let c=t.parametersPerLevel[a];s.push(...ai(t,c,a+1))}let i=new Set;for(let a=0;a&amp;lt;t.parametersPerLevel.length;a++){let{subSkills:c=[]}=t.parametersPerLevel[a];for(let l of c){if(!(l in e)){g(&amp;quot;Not found in prepared subskills!&amp;quot;,l);continue}i.add(l)}}return Array.from(i).sort().forEach(a=&amp;gt;s.push(...e[a])),s}function oi(t,n){let e={_type:&amp;quot;SkillDef&amp;quot;};r(e,&amp;quot;id&amp;quot;,t.id),r(e,&amp;quot;variant&amp;quot;,nn[n.split(&amp;quot;/&amp;quot;).pop()]),r(e,&amp;quot;skill_type&amp;quot;,t.skillType),r(e,&amp;quot;is_pseudo&amp;quot;,e.variant===&amp;quot;pseudo&amp;quot;),r(e,&amp;quot;name_sid&amp;quot;,t.name),r(e,&amp;quot;desc_sid&amp;quot;,t.desc),r(e,&amp;quot;max_level&amp;quot;,t.parametersPerLevel.length),r(e,&amp;quot;source_path&amp;quot;,n);let s=_({target_id:t.id,type:&amp;quot;skill&amp;quot;,name:e.name_sid,description:e.desc_sid,_data:{CurrentSkillParameter:t.parametersPerLevel[0],CurrentSkillLevel:1}});return[e,...s]}function ai(t,n,e){let s=[],i={_type:&amp;quot;SkillLevelDef&amp;quot;};r(i,&amp;quot;skill_id&amp;quot;,t.id),r(i,&amp;quot;level&amp;quot;,e),r(i,&amp;quot;name_sid&amp;quot;,n.name),r(i,&amp;quot;desc_sid&amp;quot;,n.desc),r(i,&amp;quot;icon&amp;quot;,n.icon),r(i,&amp;quot;offered_sub_skills&amp;quot;,n.subSkills),s.push(i);let o=_({target_id:t.id,type:&amp;quot;skill_level&amp;quot;,variant:e,name:i.name_sid,description:i.desc_sid,_data:{CurrentSkillParameter:n,CurrentSkillLevel:e}});s.push(...o),n.id=t.id+&amp;quot;_L&amp;quot;+e;let a=S(n,&amp;quot;skill_level&amp;quot;);return s.push(...a),s}function ci(t,n){for(let i in t){let o=t[i];for(let a of o)a._type===&amp;quot;SubSkillDef&amp;quot;&amp;amp;&amp;amp;delete n[a.id]}let e=Object.values(n).sort(li),s=[];for(let i of e)delete i[0].parent_skill_id,s.push(...i);return s.comment=&amp;quot;&amp;lt;!-- Catch-all page for sub-skills not referenced by any skill&#039;s subSkills[] list (test entries + legacy arena variants). --&amp;gt;&amp;quot;,s}function li(t,n){let e=en.indexOf(t[0].source_path),s=en.indexOf(n[0].source_path);return e!==s?e-s:t[0].id.localeCompare(n[0].id)}var rn=ni;var sn=new Set([]);function ui(t){let n={},e=p(t,&amp;quot;DB/foo/.*?json&amp;quot;);for(let s in e){let i=e[s];for(let o of i){let{id:a}=o;sn.size&amp;amp;&amp;amp;!sn.has(a)||(n[&amp;quot;Foo~&amp;quot;+a]=fi(o,s))}}return n}function fi(t,n){let e={_type:&amp;quot;FooDef&amp;quot;};r(e,&amp;quot;id&amp;quot;,t.id),r(e,&amp;quot;name_sid&amp;quot;,t.name),r(e,&amp;quot;description_sid&amp;quot;,t.description),r(e,&amp;quot;source_path&amp;quot;,n);let s=_({target_id:e.id,type:&amp;quot;foo&amp;quot;,name:e.name_sid,description:e.description_sid,_data:{}});return[e,...s]}var on=ui;var di={human:&amp;quot;humans&amp;quot;,undead:&amp;quot;necros&amp;quot;,nature:&amp;quot;nature&amp;quot;,demon:&amp;quot;demons&amp;quot;,unfrozen:&amp;quot;unfrozen&amp;quot;,dungeon:&amp;quot;dungeon&amp;quot;};function pi(t){let n={},e=_i(t),s=p(t,&amp;quot;DB/heroes_skills/skills_by_level_replace&amp;quot;,null,!0);for(let i of s)n[&amp;quot;SkillRollReplacement~&amp;quot;+i.id]=mi(i,e);return n}function _i(t){let n={},e=mt(t);for(let s in e){let i=e[s][0];n[i.id]=i}return n}function mi(t,n){let e=n[t.id],s=di[e.faction],i=e.class_type,o=[],a=t.defaultList[0].rollChances[0];for(let c of t.defaultList[0].levels){let l={_type:&amp;quot;SkillRollReplacementDef&amp;quot;};r(l,&amp;quot;hero_id&amp;quot;,t.id),r(l,&amp;quot;arena_table_id&amp;quot;,`arenaGame_${s}_${i}_skills_table`),r(l,&amp;quot;level&amp;quot;,c),r(l,&amp;quot;skill_id&amp;quot;,a.sid),r(l,&amp;quot;weight&amp;quot;,a.chance),o.push(l)}return o}var an=pi;var cn=new Set([]),hi={humans:&amp;quot;human&amp;quot;,necros:&amp;quot;undead&amp;quot;,nature:&amp;quot;nature&amp;quot;,demons:&amp;quot;demon&amp;quot;,unfrozen:&amp;quot;unfrozen&amp;quot;,dungeon:&amp;quot;dungeon&amp;quot;};function vi(t){let n={},e=p(t,&amp;quot;DB/heroes_skills/skills_by_level_tables/[^/]*$&amp;quot;);for(let s in e){let i=e[s];for(let o of i){let{id:a}=o;cn.size&amp;amp;&amp;amp;!cn.has(a)||(n[&amp;quot;SkillRollTable~&amp;quot;+a]=gi(o,s))}}return n}function gi(t,n){let[,e,s]=y(t.id,/([a-z]+)_([a-z]+)_skills_table$/),i=hi[e],o={_type:&amp;quot;SkillRollTableDef&amp;quot;};r(o,&amp;quot;id&amp;quot;,t.id),r(o,&amp;quot;class_id&amp;quot;,s+&amp;quot;_&amp;quot;+i),r(o,&amp;quot;faction&amp;quot;,i),r(o,&amp;quot;class_type&amp;quot;,s),r(o,&amp;quot;mode&amp;quot;,t.id.split(&amp;quot;_&amp;quot;).length===5?&amp;quot;arena&amp;quot;:&amp;quot;standard&amp;quot;),r(o,&amp;quot;source_path&amp;quot;,n);let a=[],c={default:t.defaultList.find(l=&amp;gt;l.levels[0]===1)?.rollChances,magic_levels:t.specialList.find(l=&amp;gt;l.levels[0]===4)?.rollChances,signature_levels:t.specialList.find(l=&amp;gt;l.levels[0]===5)?.rollChances,level_20_mega:t.specialList.find(l=&amp;gt;l.levels[0]===20)?.rollChances};for(let l in c){let d=c[l]||[];d.sort(yi);for(let u of d)a.push(bi(u,l,t.id))}return[o,...a]}function yi(t,n){let e=t.chance,s=n.chance;return e!==s?e&amp;gt;s?-1:1:t.sid.localeCompare(n.sid)}function bi(t,n,e){let s={_type:&amp;quot;SkillRollWeightDef&amp;quot;};return r(s,&amp;quot;table_id&amp;quot;,e),r(s,&amp;quot;band_kind&amp;quot;,n),r(s,&amp;quot;skill_id&amp;quot;,t.sid),r(s,&amp;quot;weight&amp;quot;,t.chance),s}var ln=vi;var un=new Set([]);function Di(t){let n={},e=p(t,&amp;quot;DB/magics/.*?json&amp;quot;,&amp;quot;test_&amp;quot;);for(let s in e){let i=e[s];for(let o of i){let{id:a}=o;un.size&amp;amp;&amp;amp;!un.has(a)||(n[&amp;quot;Spell~&amp;quot;+a]=ki(o,s))}}return n}function ki(t,n){let e=[];e.push(...wi(t,n));for(let s=0;s&amp;lt;t.description.length;s++)e.push(...Si(t,s+1));return e}function wi(t,n){let e={_type:&amp;quot;SpellDef&amp;quot;};r(e,&amp;quot;id&amp;quot;,t.id),r(e,&amp;quot;name_sid&amp;quot;,t.name),r(e,&amp;quot;school&amp;quot;,t.school_),r(e,&amp;quot;rank&amp;quot;,t.rank),r(e,&amp;quot;used_on_map&amp;quot;,t.usedOnMap),r(e,&amp;quot;icon&amp;quot;,t.icon),r(e,&amp;quot;magic_type_description&amp;quot;,t.magicTypeDescription),r(e,&amp;quot;is_special_magic&amp;quot;,!!t.isSpecialMagic),r(e,&amp;quot;is_unique_magic&amp;quot;,!!t.isUniqueMagic),r(e,&amp;quot;normal_magic_sid&amp;quot;,t.normalMagicSid),r(e,&amp;quot;learn_cost_star_dust&amp;quot;,t.learnCost?.find(i=&amp;gt;i.name===&amp;quot;starDust&amp;quot;)?.cost),r(e,&amp;quot;learn_cost_gemstones&amp;quot;,t.learnCost?.find(i=&amp;gt;i.name===&amp;quot;gemstones&amp;quot;)?.cost),r(e,&amp;quot;learn_cost_crystals&amp;quot;,t.learnCost?.find(i=&amp;gt;i.name===&amp;quot;crystals&amp;quot;)?.cost),r(e,&amp;quot;learn_cost_mercury&amp;quot;,t.learnCost?.find(i=&amp;gt;i.name===&amp;quot;mercury&amp;quot;)?.cost),r(e,&amp;quot;excaption_in_tooltip_sid&amp;quot;,t.excaptionInTooltip),r(e,&amp;quot;up_effect_description_sid&amp;quot;,t.upEffectDescription),r(e,&amp;quot;energy_type&amp;quot;,t.energyType),r(e,&amp;quot;source_path&amp;quot;,n);let s=_({target_id:t.id,type:&amp;quot;spell&amp;quot;,name:t.name});return[e,...s]}function Si(t,n){let e={_type:&amp;quot;SpellRankDef&amp;quot;};r(e,&amp;quot;spell_id&amp;quot;,t.id),r(e,&amp;quot;level&amp;quot;,n),r(e,&amp;quot;description_sid&amp;quot;,t.description[n-1]),r(e,&amp;quot;bonus_description_sid&amp;quot;,t.bonusDescriptions?.[n-2]?.description),r(e,&amp;quot;mana_cost&amp;quot;,t.manaCost[n-1]),r(e,&amp;quot;upgrade_cost&amp;quot;,t.upgradeCost[n-2]);let s=_({target_id:t.id,type:&amp;quot;spell_rank&amp;quot;,variant:n,description:t.description[n-1],bonus_description:t.bonusDescriptions?.[n-2]?.description,_data:{CurrentMagicBattleRoot:t,CurrentMagicBattle:Ai(t,n),CurrentMagicWorld:Ci(t,n),CurrentMagicLevel:n}});return[e,...s]}function Ai(t,n){let e=t.battleMagic?.magicDealers||[{}],s=t.battleMagic?.dealersPerLevels||[];for(let o=0;o&amp;lt;4;o++)s[o]||(s[o]=0);let i=s[n-1];return e[i]}function Ci(t,n){let e=t.worldMagic?.magicSettings||[{}],s=t.worldMagic?.settingPerLevels||[];for(let o=0;o&amp;lt;4;o++)s[o]||(s[o]=0);let i=s[n-1];return e[i]}var fn=Di;var dn=new Set([]);function xi(t){let n={},e=Ti(t),s=p(t,&amp;quot;DB/heroes_skills/skills/pseudo_skills.json&amp;quot;);for(let i in s){let o=s[i];for(let a of o){let{id:c}=a;dn.size&amp;amp;&amp;amp;!dn.has(c)||(n[&amp;quot;StatBonusRoll~&amp;quot;+c]=zi(a,e))}}return n}function Ti(t){let e=p(t,&amp;quot;/humans_might_skills_table.json&amp;quot;,null,!0)[0].defaultList.find(s=&amp;gt;s.levels[0]===-2).rollChances;return F(e,&amp;quot;sid&amp;quot;)}function zi(t,n){let e={_type:&amp;quot;StatBonusRollDef&amp;quot;};r(e,&amp;quot;id&amp;quot;,t.id),r(e,&amp;quot;stat&amp;quot;,t.parametersPerLevel[0].bonuses[0].parameters[0]),r(e,&amp;quot;magnitude&amp;quot;,t.parametersPerLevel[0].bonuses[0].parameters[1]),r(e,&amp;quot;weight&amp;quot;,n[t.id].chance),r(e,&amp;quot;name_sid&amp;quot;,t.name),r(e,&amp;quot;desc_sid&amp;quot;,t.desc);let s=_({target_id:e.id,type:&amp;quot;stat_bonus_roll&amp;quot;,name:e.name_sid,description:e.desc_sid,_data:{}});return[e,...s]}var pn=xi;var Bi={army_laws:!0,biography:&amp;quot;hero_window_ui_narrative&amp;quot;,creature:{id:&amp;quot;arenaUnitCount&amp;quot;,path:&amp;quot;Lang/english/texts/menu.json&amp;quot;},experience:&amp;quot;hero_exp_name&amp;quot;,faction:{id:&amp;quot;fractions&amp;quot;,path:&amp;quot;Lang/english/texts/menu.json&amp;quot;},faction_laws:!0,starting_army:{id:&amp;quot;lobby_units&amp;quot;,path:&amp;quot;Lang/english/texts/menu.json&amp;quot;},starting_skills:{id:&amp;quot;lobby_skills&amp;quot;,path:&amp;quot;Lang/english/texts/menu.json&amp;quot;},starting_spells:{id:&amp;quot;lobby_spells&amp;quot;,path:&amp;quot;Lang/english/texts/menu.json&amp;quot;},stats:&amp;quot;hero_stats_reward_name&amp;quot;,tier:&amp;quot;tooltipRang&amp;quot;,unit_window_narrative:!0};function Ii(){return L(Bi,{domain:&amp;quot;UI&amp;quot;,type:&amp;quot;ui&amp;quot;,prefix:&amp;quot;&amp;quot;,name_suffix:&amp;quot;&amp;quot;,suppressDescription:!0,trimColon:!0,path:&amp;quot;Lang/english/texts/ui.json&amp;quot;})}var _n=Ii;var mn=new Set([]);function Ui(t){let n={},e=p(t,&amp;quot;DB/foo/.*?json&amp;quot;);for(let s in e){let i=e[s];for(let o of i){let{id:a}=o;mn.size&amp;amp;&amp;amp;!mn.has(a)||(n[&amp;quot;Foo~&amp;quot;+a]=Li(o,s))}}return n}function Li(t,n){let e={_type:&amp;quot;FooDef&amp;quot;};r(e,&amp;quot;id&amp;quot;,t.id),r(e,&amp;quot;name_sid&amp;quot;,t.name),r(e,&amp;quot;description_sid&amp;quot;,t.description),r(e,&amp;quot;source_path&amp;quot;,n);let s=_({target_id:e.id,type:&amp;quot;foo&amp;quot;,name:e.name_sid,description:e.description_sid,_data:{}});return[e,...s]}var hn=Ui;var Mi=new Set([&amp;quot;human&amp;quot;,&amp;quot;undead&amp;quot;,&amp;quot;nature&amp;quot;,&amp;quot;demon&amp;quot;,&amp;quot;unfrozen&amp;quot;,&amp;quot;dungeon&amp;quot;,&amp;quot;neutral&amp;quot;]);function Pi(t,n){if(t.startsWith(&amp;quot;base_&amp;quot;)||t.startsWith(&amp;quot;common_&amp;quot;))return!0;let e=t.split(&amp;quot;_&amp;quot;).shift();return n.startsWith(e)?!1:Mi.has(e)}var Y=Pi;var vn=new Set([]),ht={melee:&amp;quot;melee_attack&amp;quot;,shoot:&amp;quot;ranged_attack&amp;quot;,range:&amp;quot;remote_attack&amp;quot;};function Ri(t){let n={},e=p(t,/units_logics/),s=p(t,/units_views/);for(let i in e){let o=e[i][0].id;if(vn.size&amp;amp;&amp;amp;!vn.has(o))continue;let a=i.replace(&amp;quot;_logics/&amp;quot;,&amp;quot;_views/&amp;quot;).replace(&amp;quot;_l.&amp;quot;,&amp;quot;_v.&amp;quot;);if(!s[a]){g(&amp;quot;Missing path!&amp;quot;,a);continue}let c=e[i],l=s[a];c.length!==1&amp;amp;&amp;amp;l.length!==1&amp;amp;&amp;amp;g(&amp;quot;Unexpected logic/view count!&amp;quot;,i),n[&amp;quot;Unit~&amp;quot;+o]=Ei(c[0],l[0],i)}return n}function Ei(t,n,e){let s=[],i=[],o=ji(t,n,e,i);return s.push(o),s.push(...$i(t,n,i)),s.push(...Wi(t)),s.push(...Gi(t)),s.push(...qi(t)),s.push(...Vi(t,n,i)),s.push(Zi(t,o)),s.push(..._(i)),s}function ji(t,n,e,s){let i={_type:&amp;quot;UnitDef&amp;quot;},o=t.id.replace(/_upg$|_alt$/,&amp;quot;&amp;quot;),a=!dt(t.id+&amp;quot;_name&amp;quot;);return r(i,&amp;quot;id&amp;quot;,t.id),r(i,&amp;quot;unused&amp;quot;,a?!0:null),r(i,&amp;quot;faction&amp;quot;,t.fraction),r(i,&amp;quot;tier&amp;quot;,t.tier),r(i,&amp;quot;source_path&amp;quot;,e),r(i,&amp;quot;name_sid&amp;quot;,t.id+&amp;quot;_name&amp;quot;),r(i,&amp;quot;desc_sid&amp;quot;,t.id+&amp;quot;_narrativeDescription&amp;quot;),r(i,&amp;quot;base_sid&amp;quot;,o===t.id?null:o),r(i,&amp;quot;upgrade_sid&amp;quot;,t.upgradeSid),r(i,&amp;quot;hp&amp;quot;,t.stats.hp),r(i,&amp;quot;offence&amp;quot;,t.stats.offence),r(i,&amp;quot;defence&amp;quot;,t.stats.defence),r(i,&amp;quot;damage_min&amp;quot;,t.stats.damageMin),r(i,&amp;quot;damage_max&amp;quot;,t.stats.damageMax),r(i,&amp;quot;initiative&amp;quot;,t.stats.initiative),r(i,&amp;quot;speed&amp;quot;,t.stats.speed),r(i,&amp;quot;luck&amp;quot;,t.stats.luck),r(i,&amp;quot;morale&amp;quot;,t.stats.moral),r(i,&amp;quot;energy_per_cast&amp;quot;,t.stats.energyPerCast),r(i,&amp;quot;energy_per_round&amp;quot;,t.stats.energyPerRound),r(i,&amp;quot;energy_per_take_damage&amp;quot;,t.stats.energyPerTakeDamage),r(i,&amp;quot;action_points&amp;quot;,t.stats.actionPoints),r(i,&amp;quot;num_counters&amp;quot;,t.stats.numCounters),r(i,&amp;quot;morale_min&amp;quot;,t.stats.moralMin),r(i,&amp;quot;morale_max&amp;quot;,t.stats.moralMax),r(i,&amp;quot;luck_min&amp;quot;,t.stats.luckMin),r(i,&amp;quot;luck_max&amp;quot;,t.stats.luckMax),r(i,&amp;quot;move_type&amp;quot;,t.stats.moveType||&amp;quot;ground&amp;quot;),r(i,&amp;quot;creature_type&amp;quot;,Fi(t)),r(i,&amp;quot;immunities&amp;quot;,Ni(t)),r(i,&amp;quot;disablers&amp;quot;,Oi(t)),r(i,&amp;quot;shared_abilities&amp;quot;,Hi(n)),r(i,&amp;quot;gold_cost&amp;quot;,$(t,&amp;quot;gold&amp;quot;)),r(i,&amp;quot;wood_cost&amp;quot;,$(t,&amp;quot;wood&amp;quot;)),r(i,&amp;quot;ore_cost&amp;quot;,$(t,&amp;quot;ore&amp;quot;)),r(i,&amp;quot;mercury_cost&amp;quot;,$(t,&amp;quot;mercury&amp;quot;)),r(i,&amp;quot;dust_cost&amp;quot;,$(t,&amp;quot;dust&amp;quot;)),r(i,&amp;quot;crystal_cost&amp;quot;,$(t,&amp;quot;crystals&amp;quot;)),r(i,&amp;quot;gemstone_cost&amp;quot;,$(t,&amp;quot;gemstones&amp;quot;)),r(i,&amp;quot;native_biome&amp;quot;,t.nativeBiome),r(i,&amp;quot;ai_archetype&amp;quot;,t.ai),r(i,&amp;quot;tags&amp;quot;,t.tags),r(i,&amp;quot;leave_corpse&amp;quot;,t.leaveCorpse===!1?!1:null),r(i,&amp;quot;squad_value&amp;quot;,t.squadValue),r(i,&amp;quot;exp_bonus&amp;quot;,t.expBonus),s.push({target_id:t.id,type:&amp;quot;unit&amp;quot;,name:i.name_sid,description:i.desc_sid}),i}function Fi(t){let{passives:n=[]}=t;for(let e of n){let s=e?.data?.immunities||[];for(let i of s){let{tags:o=[]}=i,a=o.find(c=&amp;gt;c.endsWith(&amp;quot;_immunities&amp;quot;));if(a)return a.replace(&amp;quot;_immunities&amp;quot;,&amp;quot;&amp;quot;)}}}function Ni(t){let n=[],{passives:e=[]}=t;for(let s of e){let i=s?.data?.immunities||[];for(let o of i){let{tags:a=[]}=o;for(let c of a)(c===&amp;quot;avatar_immunities&amp;quot;||!c.endsWith(&amp;quot;_immunities&amp;quot;))&amp;amp;&amp;amp;n.push(c)}}return n}function Oi(t){let n=[],{passives:e=[]}=t;for(let s of e){let i=s?.data?.disablers||[];for(let o of i)o.mech&amp;amp;&amp;amp;n.push(o.mech)}return n}function Hi(t){return[...t.alternativeAttacks||[],...t.abilities||[],...t.passives||[]].filter(s=&amp;gt;Y(s.name,t.id)).map(s=&amp;gt;s.name)}function $(t,n){let{costResArray:e=[]}=t.unitCost||{};for(let s of e)if(s.name===n)return s.cost}function $i(t,n,e){let s=[],i=[...t.alternativeAttacks||[],...t.abilities||[]],o=[...n.alternativeAttacks||[],...n.abilities||[]],a=0;for(let c=0;c&amp;lt;o.length;c++){let l=i[c]||{},d=o[c];if(Y(d.name,t.id))continue;a++;let u={_type:&amp;quot;UnitAbilityActiveDef&amp;quot;};r(u,&amp;quot;ability_id&amp;quot;,t.id+&amp;quot;_&amp;quot;+a),r(u,&amp;quot;unit_id&amp;quot;,t.id),r(u,&amp;quot;ability_type&amp;quot;,&amp;quot;active&amp;quot;),r(u,&amp;quot;ordinal&amp;quot;,a),r(u,&amp;quot;name_sid&amp;quot;,d.name),r(u,&amp;quot;desc_sid&amp;quot;,d.description),r(u,&amp;quot;active_type&amp;quot;,d.abilityType),r(u,&amp;quot;info_description&amp;quot;,d.infoDescription),r(u,&amp;quot;excaption_in_tooltip&amp;quot;,d.excaptionInTooltip),r(u,&amp;quot;attack_type&amp;quot;,l.attackType_),r(u,&amp;quot;rank&amp;quot;,l.rank),r(u,&amp;quot;cd&amp;quot;,l.cd),r(u,&amp;quot;energy_level&amp;quot;,l.energyLevel),r(u,&amp;quot;action_cost&amp;quot;,l.actionCost),r(u,&amp;quot;charges&amp;quot;,l.charges),r(u,&amp;quot;move_type_active&amp;quot;,l.moveType),r(u,&amp;quot;dont_use_energy&amp;quot;,l.dontUseEnergy),r(u,&amp;quot;disable_for_ai&amp;quot;,l.disableForAi),r(u,&amp;quot;use_all_energy_levels&amp;quot;,l.useAllEnergyLevels),r(u,&amp;quot;never_disable&amp;quot;,l.neverDisable);let f=l.damageDealer||{};r(u,&amp;quot;untargeted_cast&amp;quot;,f.untargetedCast),r(u,&amp;quot;instacast&amp;quot;,f.instacast),r(u,&amp;quot;attack_pattern_sid&amp;quot;,f.attackPatternSid),r(u,&amp;quot;damage_target&amp;quot;,f.damageTarget_),r(u,&amp;quot;damage_type&amp;quot;,f.damageType_),r(u,&amp;quot;stat_dmg_mult&amp;quot;,f.statDmgMult),r(u,&amp;quot;trigger_counter&amp;quot;,f.triggerCounter),r(u,&amp;quot;min_damage_per_energy_level&amp;quot;,f.minDamagePerEnergyLevel),r(u,&amp;quot;max_damage_per_energy_level&amp;quot;,f.maxDamagePerEnergyLevel),r(u,&amp;quot;use_speed_as_shoot_range&amp;quot;,f.useSpeedAsShootRange),r(u,&amp;quot;temp_self_buff&amp;quot;,f.tempSelfBuff),r(u,&amp;quot;multitarget_type&amp;quot;,f.multitargetType),r(u,&amp;quot;num_targets&amp;quot;,f.numTargets),r(u,&amp;quot;min_base_dmg&amp;quot;,f.minBaseDmg),r(u,&amp;quot;max_base_dmg&amp;quot;,f.maxBaseDmg),r(u,&amp;quot;min_stack_dmg&amp;quot;,f.minStackDmg),r(u,&amp;quot;max_stack_dmg&amp;quot;,f.maxStackDmg),r(u,&amp;quot;damage_multipler_per_hero_level&amp;quot;,f.damageMultiplerPerHeroLevel),r(u,&amp;quot;buff_sid&amp;quot;,f.buff?.sid),r(u,&amp;quot;buff_target&amp;quot;,f.buffTarget_),r(u,&amp;quot;buff_duration&amp;quot;,f.buff?.duration),r(u,&amp;quot;buff_charges&amp;quot;,f.buff?.charges),r(u,&amp;quot;shoot_range&amp;quot;,f.shootRange),r(u,&amp;quot;shoot_threshold&amp;quot;,f.shootThreshold),r(u,&amp;quot;shoot_red_count&amp;quot;,f.shootRedCount),r(u,&amp;quot;shoot_dmg_buff&amp;quot;,f.shootDmgBuff),r(u,&amp;quot;cast_target&amp;quot;,f.castTargetParams?.castTarget_),r(u,&amp;quot;cast_selection&amp;quot;,f.castTargetParams?.selection),r(u,&amp;quot;cast_target_condition&amp;quot;,f.castTargetParams?.targetCondition_),r(u,&amp;quot;cast_target_tags&amp;quot;,f.castTargetParams?.targetTags),r(u,&amp;quot;affect_target&amp;quot;,f.affectTargetParams?.castTarget_),r(u,&amp;quot;affect_selection&amp;quot;,f.affectTargetParams?.selection),r(u,&amp;quot;affect_target_condition&amp;quot;,f.affectTargetParams?.targetCondition_),r(u,&amp;quot;affect_target_tags&amp;quot;,f.affectTargetParams?.targetTags),s.push(u),e.push({target_id:u.ability_id,type:&amp;quot;unit_ability&amp;quot;,name:u.name_sid,description:u.desc_sid,_data:{CurrentAbility:l,CurrentUnitConfig:t,CurrentUnitStats:t.stats}})}return s}function qi(t){let n=[],e=t.globalPassives||[];for(let s=0;s&amp;lt;e.length;s++){let i=e[s],o=s+1,a={_type:&amp;quot;UnitAbilityGlobalDef&amp;quot;};r(a,&amp;quot;ability_id&amp;quot;,t.id+&amp;quot;_global_passive_&amp;quot;+o),r(a,&amp;quot;unit_id&amp;quot;,t.id),r(a,&amp;quot;ability_type&amp;quot;,&amp;quot;global_passive&amp;quot;),r(a,&amp;quot;ordinal&amp;quot;,o),r(a,&amp;quot;name_sid&amp;quot;,a.ability_id+&amp;quot;_name&amp;quot;),r(a,&amp;quot;global_target&amp;quot;,i.target),r(a,&amp;quot;global_power&amp;quot;,i.power),r(a,&amp;quot;global_tag&amp;quot;,i.tag),r(a,&amp;quot;affected_stat&amp;quot;,Object.keys(i.data?.stats||{})[0]),r(a,&amp;quot;affected_stat_amount&amp;quot;,i.data?.stats?.[a.affected_stat]),&amp;quot;affected_stat_amount&amp;quot;in a&amp;amp;&amp;amp;(a.affected_stat_amount+=&amp;quot;.0&amp;quot;),n.push(a)}return n}function Wi(t){let n=[],e=t.aura?[t.aura]:[];for(let s=0;s&amp;lt;e.length;s++){let i=e[s],o=s+1,a={_type:&amp;quot;UnitAbilityAuraDef&amp;quot;};r(a,&amp;quot;ability_id&amp;quot;,t.id+&amp;quot;_aura_&amp;quot;+o),r(a,&amp;quot;unit_id&amp;quot;,t.id),r(a,&amp;quot;ability_type&amp;quot;,&amp;quot;aura&amp;quot;),r(a,&amp;quot;ordinal&amp;quot;,o),r(a,&amp;quot;name_sid&amp;quot;,a.ability_id+&amp;quot;_name&amp;quot;),r(a,&amp;quot;aura_target&amp;quot;,i.target),r(a,&amp;quot;aura_power&amp;quot;,i.power),r(a,&amp;quot;aura_radius&amp;quot;,i.radius),r(a,&amp;quot;aura_tag&amp;quot;,i.tag);let c=i.data?.stats||{},l=Object.keys(c)[0];r(a,&amp;quot;affected_stat&amp;quot;,l),typeof c[l]==&amp;quot;number&amp;quot;&amp;amp;&amp;amp;r(a,&amp;quot;affected_stat_amount&amp;quot;,c[l]+&amp;quot;.0&amp;quot;),n.push(a)}return n}function Gi(t){let n=[],e=t.conditionalPassives||[];for(let s=0;s&amp;lt;e.length;s++){let i=e[s],o=s+1,a={_type:&amp;quot;UnitAbilityConditionalDef&amp;quot;};r(a,&amp;quot;ability_id&amp;quot;,t.id+&amp;quot;_conditional_passive_&amp;quot;+o),r(a,&amp;quot;unit_id&amp;quot;,t.id),r(a,&amp;quot;ability_type&amp;quot;,&amp;quot;conditional_passive&amp;quot;),r(a,&amp;quot;ordinal&amp;quot;,o),r(a,&amp;quot;name_sid&amp;quot;,a.ability_id+&amp;quot;_name&amp;quot;),r(a,&amp;quot;condition_check&amp;quot;,i.condition?.[0]),r(a,&amp;quot;condition_target&amp;quot;,i.condition?.[1]),r(a,&amp;quot;condition_value&amp;quot;,i.condition?.[2]);let c=i.stats||{},l=Object.keys(c)[0];r(a,&amp;quot;affected_stat&amp;quot;,l),typeof c[l]==&amp;quot;number&amp;quot;&amp;amp;&amp;amp;r(a,&amp;quot;affected_stat_amount&amp;quot;,c[l]+&amp;quot;.0&amp;quot;),n.push(a)}return n}function Vi(t,n,e){let s=[],i=n.passives,o=0;for(let a=0;a&amp;lt;i.length;a++){let c=i[a];if(Y(c.name,t.id))continue;o++;let l={_type:&amp;quot;UnitAbilityPassiveDef&amp;quot;};r(l,&amp;quot;ability_id&amp;quot;,t.id+&amp;quot;_passive_&amp;quot;+o),r(l,&amp;quot;unit_id&amp;quot;,t.id),r(l,&amp;quot;ability_type&amp;quot;,&amp;quot;passive&amp;quot;),r(l,&amp;quot;ordinal&amp;quot;,o),r(l,&amp;quot;name_sid&amp;quot;,c.name),r(l,&amp;quot;desc_sid&amp;quot;,c.description),r(l,&amp;quot;excaption_in_tooltip&amp;quot;,c.excaptionInTooltip),s.push(l),e.push({target_id:l.ability_id,type:&amp;quot;unit_ability&amp;quot;,name:l.name_sid,description:l.desc_sid,_data:{CurrentUnitConfig:t,CurrentUnitStats:t.stats}})}return s}function Zi(t,n){let e={_type:&amp;quot;UnitAttackDef&amp;quot;};r(e,&amp;quot;unit_id&amp;quot;,t.id);let s=t.defaultAttacks?.[0]||{};r(e,&amp;quot;default_attack_type&amp;quot;,Ji(s.attackType_,n)),r(e,&amp;quot;default_damage_target&amp;quot;,s.damageDealer?.damageTarget_,&amp;quot;enemy&amp;quot;),r(e,&amp;quot;default_affect_target&amp;quot;,s.damageDealer?.affectTargetParams.castTarget_,&amp;quot;enemy&amp;quot;),r(e,&amp;quot;default_trigger_counter&amp;quot;,s.damageDealer?.triggerCounter,!0),r(e,&amp;quot;default_dont_trigger_energy_regen&amp;quot;,s.damageDealer?.dontTriggerEnergyRegen),r(e,&amp;quot;default_buff_sid&amp;quot;,s.damageDealer?.buff?.sid),r(e,&amp;quot;default_buff_target&amp;quot;,s.damageDealer?.buffTarget_),r(e,&amp;quot;default_buff_duration&amp;quot;,s.damageDealer?.buff?.duration);let i=t.counterAttacks?.[0]||{};r(e,&amp;quot;counter_attack_type&amp;quot;,ht[i.attackType_]),r(e,&amp;quot;counter_stat_dmg_mult&amp;quot;,i.damageDealer?.statDmgMult,1),r(e,&amp;quot;counter_buff_sid&amp;quot;,i.damageDealer?.buff?.sid),r(e,&amp;quot;counter_buff_target&amp;quot;,i.damageDealer?.buffTarget_),r(e,&amp;quot;counter_buff_duration&amp;quot;,i.damageDealer?.buff?.duration),r(e,&amp;quot;counter_damage_target&amp;quot;,i.damageDealer?.damageTarget_,&amp;quot;enemy&amp;quot;),r(e,&amp;quot;counter_affect_target&amp;quot;,i.damageDealer?.affectTargetParams.castTarget_,&amp;quot;enemy&amp;quot;),r(e,&amp;quot;counter_dont_trigger_energy_regen&amp;quot;,i.damageDealer?.dontTriggerEnergyRegen),r(e,&amp;quot;counter_is_armed_ability&amp;quot;,Et(i.damageDealer?.tags));let o=t.alternativeAttacks?.[0]||{};r(e,&amp;quot;alt_attack_type&amp;quot;,ht[o.attackType_]),r(e,&amp;quot;alt_stat_dmg_mult&amp;quot;,o.damageDealer?.statDmgMult,.5),r(e,&amp;quot;alt_damage_target&amp;quot;,o.damageDealer?.damageTarget_,&amp;quot;enemy&amp;quot;),r(e,&amp;quot;alt_affect_target&amp;quot;,o.damageDealer?.affectTargetParams.castTarget_,&amp;quot;enemy&amp;quot;),r(e,&amp;quot;alt_trigger_counter&amp;quot;,o.damageDealer?.triggerCounter,!1),r(e,&amp;quot;alt_buff_sid&amp;quot;,o.damageDealer?.buff?.sid),r(e,&amp;quot;alt_buff_target&amp;quot;,o.damageDealer?.buffTarget_),r(e,&amp;quot;alt_buff_duration&amp;quot;,o.damageDealer?.buff?.duration),r(e,&amp;quot;alt_cd&amp;quot;,o.cd),r(e,&amp;quot;alt_dont_use_energy&amp;quot;,o.dontUseEnergy),r(e,&amp;quot;alt_never_disable&amp;quot;,o.neverDisable),r(e,&amp;quot;alt_return_to_start_after_attack&amp;quot;,o.returnToStartAfterAttack),r(e,&amp;quot;alt_temp_self_buff&amp;quot;,o.damageDealer?.tempSelfBuff),r(e,&amp;quot;alt_is_armed_ability&amp;quot;,Et(o.damageDealer?.tags));let a=t.alternativeAttacks?.[1]||{};return r(e,&amp;quot;alt2_attack_type&amp;quot;,ht[a.attackType_]),r(e,&amp;quot;alt2_stat_dmg_mult&amp;quot;,a.damageDealer?.statDmgMult,.5),r(e,&amp;quot;alt2_trigger_counter&amp;quot;,a.damageDealer?.triggerCounter,!1),r(e,&amp;quot;alt2_buff_sid&amp;quot;,a.damageDealer?.buff?.sid),r(e,&amp;quot;alt2_buff_target&amp;quot;,a.damageDealer?.buffTarget_),r(e,&amp;quot;alt2_buff_duration&amp;quot;,a.damageDealer?.buff?.duration),r(e,&amp;quot;alt2_cd&amp;quot;,a.cd),r(e,&amp;quot;alt2_dont_use_energy&amp;quot;,a.dontUseEnergy),r(e,&amp;quot;alt2_multitarget_type&amp;quot;,a.damageDealer?.multitargetType),r(e,&amp;quot;alt2_num_targets&amp;quot;,a.damageDealer?.numTargets),r(e,&amp;quot;alt2_is_armed_ability&amp;quot;,Et(a.damageDealer?.tags)),e}function Et(t){if(Array.isArray(t)){for(let n of t)if(n.startsWith(&amp;quot;armed_ability&amp;quot;))return!0}}function Ji(t,n){if(t=ht[t],!t)return;let{shared_abilities:e=[]}=n;for(let s of e)if(s.startsWith(&amp;quot;base_passive_&amp;quot;+t))return s.replace(&amp;quot;base_passive_&amp;quot;,&amp;quot;&amp;quot;).replace(&amp;quot;_name&amp;quot;,&amp;quot;&amp;quot;);return t}var gn=Ri;function Yi(t){let n={},e=Ki(t);e.length||g(&amp;quot;No ability type ids found!&amp;quot;),n[&amp;quot;UnitLabels~ability_type&amp;quot;]=jt(e,&amp;quot;ability_type&amp;quot;);let s=Xi(t);s.length||g(&amp;quot;No info_description ids found!&amp;quot;),n[&amp;quot;UnitLabels~info_description&amp;quot;]=jt(s,&amp;quot;info_description&amp;quot;);let i=Qi(t);return i.length||g(&amp;quot;No immunityIds found!&amp;quot;),n[&amp;quot;UnitLabels~immunity&amp;quot;]=jt(i,&amp;quot;immunity&amp;quot;),n}function Ki(t){let n=[],e=p(t,/english.texts.unitsAbility.json$/,null,!0);for(let{sid:s}of e)s.startsWith(&amp;quot;Ability_type_&amp;quot;)&amp;amp;&amp;amp;n.push(s);return n}function Xi(t){let n=new Set,e=p(t,/units_views/);for(let s in e){let i=e[s][0],o=[...i.alternativeAttacks||[],...i.abilities||[]];for(let{infoDescription:a}of o)a&amp;amp;&amp;amp;n.add(a)}return Array.from(n)}function Qi(t){let n=new Set,e=p(t,/units_views/);for(let s in e){let i=e[s][0],o=[...i.alternativeAttacks||[],...i.abilities||[]];for(let{excaptionInTooltip:a}of o)a&amp;amp;&amp;amp;n.add(a)}return Array.from(n)}function jt(t,n){let e=t.map(i=&amp;gt;({target_id:i,type:n,name:i}));return _(e)}var yn=Yi;function to(t){return!(t.startsWith(&amp;quot;base_class_&amp;quot;)||t.startsWith(&amp;quot;base_passive_flyer_&amp;quot;)||t.startsWith(&amp;quot;base_passive_blink_&amp;quot;)||t.match(/base_passive_[a-z]+_attack_/))}var bn=to;var Dn=new Set([]);function eo(t){let n={},e=no(t);for(let s in e)n[&amp;quot;UnitShared~&amp;quot;+s]=so(s,e[s]);return n}function no(t){let n={},e=p(t,/units_logics/),s=p(t,/units_views/);for(let i in e){let o=e[i][0].id;if(Dn.size&amp;amp;&amp;amp;!Dn.has(o))continue;let a=i.replace(&amp;quot;_logics/&amp;quot;,&amp;quot;_views/&amp;quot;).replace(&amp;quot;_l.&amp;quot;,&amp;quot;_v.&amp;quot;),c=e[i],l=s[a],d=ro(c[0],l[0]);Object.assign(n,d)}return n}function ro(t,n){let e={},{id:s,passives:i=[],alternativeAttacks:o=[],abilities:a=[]}=n,c=[...o,...a,...i];for(let l of c){let{name:d,description:u,abilityType:f}=l;if(Y(d,s)&amp;amp;&amp;amp;bn(d)){f&amp;amp;&amp;amp;(f===&amp;quot;Ability_type_attack_alt&amp;quot;||f===&amp;quot;Ability_type_attack_mod&amp;quot;||g(&amp;quot;Unexpected ability!&amp;quot;,n,l));let m=d.replace(/_name$/,&amp;quot;&amp;quot;);e[m]={name:d,description:u,type:f,logic:t}}}return e}function so(t,{name:n,description:e,type:s,logic:i}){let o=!!s,a=[],c={_type:o?&amp;quot;UnitAbilityActiveDef&amp;quot;:&amp;quot;UnitAbilityPassiveDef&amp;quot;};r(c,&amp;quot;ability_id&amp;quot;,t),o&amp;amp;&amp;amp;r(c,&amp;quot;active_type&amp;quot;,s),r(c,&amp;quot;name_sid&amp;quot;,n),r(c,&amp;quot;desc_sid&amp;quot;,e),o&amp;amp;&amp;amp;r(c,&amp;quot;cd&amp;quot;,-1),a.push(c);let l=_([{target_id:t,type:&amp;quot;unit_ability&amp;quot;,name:n,description:e,_data:{CurrentUnitConfig:i,CurrentUnitStats:i.stats}}]);return a.push(...l),a}var kn=eo;var io={damage:{id:&amp;quot;unitStat_damage&amp;quot;,desc_suffix:&amp;quot;_description_detailed&amp;quot;},defence:&amp;quot;unitStat_defence&amp;quot;,hp:{id:&amp;quot;unit_health&amp;quot;,desc_suffix:&amp;quot;_description_detailed&amp;quot;},initiative:{id:&amp;quot;unitStat_initiative&amp;quot;,desc_suffix:&amp;quot;_description_detailed&amp;quot;},luck:&amp;quot;unitStat_luck&amp;quot;,moral:&amp;quot;unitStat_moral&amp;quot;,offence:&amp;quot;unitStat_offence&amp;quot;,speed:{id:&amp;quot;unitStat_speed&amp;quot;,desc_suffix:&amp;quot;_description_detailed&amp;quot;}};function oo(){return L(io,{domain:&amp;quot;UnitStat&amp;quot;,type:&amp;quot;unit_stat&amp;quot;,name_suffix:&amp;quot;&amp;quot;,path:&amp;quot;Lang/english/texts/ui.json&amp;quot;})}var wn=oo;var Sn=new Set([]),ao=[ge,be,we,Ae,Te,ze,Be,_t,mt,Fe,Oe,He,qe,Ge,Ze,Ye,Ke,Qe,rn,on,an,ln,fn,pn,_n,hn,gn,yn,kn,wn];async function An(t){t&amp;amp;&amp;amp;C.redirect(t);let n=await oe();he(n);let e={};for(let i of ao)(!Sn.size||Sn.has(i))&amp;amp;&amp;amp;Object.assign(e,i(n));let s={};for(let i in e){let o=&amp;quot;Data/&amp;quot;+i+&amp;quot;.wiki&amp;quot;;s[o]=co(e[i])}return s}function co(t){let n=[];n.push(&amp;quot;&amp;lt;!-- Bot-managed page. Edit the source in obelisk-bot, not here. --&amp;gt;&amp;quot;),t.comment&amp;amp;&amp;amp;n.push(t.comment);for(let e of t)n.push(lo(e));return n.push(&amp;quot;[[Category:Game Data Import]]&amp;quot;),n.join(`&lt;br /&gt;
&lt;br /&gt;
`).trim()}function lo(t){let n=[];n.push(`{{${t._type}`),delete t._type;for(let e in t)n.push(`| ${e.trim()} = ${uo(t[e])}`);return n.push(&amp;quot;}}&amp;quot;),n.join(`&lt;br /&gt;
`)}function uo(t){switch(typeof t){case&amp;quot;boolean&amp;quot;:return t?&amp;quot;yes&amp;quot;:&amp;quot;no&amp;quot;;case&amp;quot;string&amp;quot;:return t;case&amp;quot;number&amp;quot;:return t.toString();default:return Array.isArray(t)?t.join(&amp;quot;,&amp;quot;):(C.log(&amp;quot;Unexpected value type!&amp;quot;,typeof t,t),String(t))}}C.initialize(An);var _u=An;})();&lt;/div&gt;</summary>
		<author><name>76561198048502585</name></author>
	</entry>
	<entry>
		<id>https://wiki.hoodedhorse.com/Heroes_of_Might_and_Magic_Olden_Era/index.php?title=Template:DataNavBox&amp;diff=41533</id>
		<title>Template:DataNavBox</title>
		<link rel="alternate" type="text/html" href="https://wiki.hoodedhorse.com/Heroes_of_Might_and_Magic_Olden_Era/index.php?title=Template:DataNavBox&amp;diff=41533"/>
		<updated>2026-10-12T14:13:14Z</updated>

		<summary type="html">&lt;p&gt;76561198048502585: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{| class=&amp;quot;wikitable&amp;quot; style=&amp;quot;margin: auto; width: 95%; font-size:1.2rem&amp;quot;&lt;br /&gt;
|+ &lt;br /&gt;
|-&lt;br /&gt;
! colspan=2 | Cargo and Structured Data&lt;br /&gt;
|-&lt;br /&gt;
! style=&amp;quot;width:10rem&amp;quot; | Documentation&lt;br /&gt;
| [[Help:Data Overview|Data Overview]] • [[Help:Cargo|Introduction to Cargo]] • [[Help:Game Files|Game Files]] • [[Help:Obelisk Bot|Obelisk Bot]]&lt;br /&gt;
[[Help:Building Cargo Templates|Building Cargo Templates]] • [[Help:Building Rich Tables|Building Rich Tables]] • [[Help:Debugging Cargo|Debugging Cargo]] • [[Help:Searching Cargo Tables|Searching Cargo Tables]] • [[Help:Using Translations|Using Translations]]&lt;br /&gt;
&lt;br /&gt;
[[Help:Useful Recipes|Useful Recipes]] • [[Help:Useful Templates|Useful Templates]] • [[Help:Applying_Patches|Applying Patches]]&lt;br /&gt;
|-&lt;br /&gt;
! Architecture Reference&lt;br /&gt;
| [[Help:Data Architecture|Data Architecture]] • [[Data:Coverage]] • [[:Category:Cargo Definitions|Cargo Definition Pages]] • [[:Category:Game_Data_Import|Game Data Pages]]&lt;br /&gt;
[[Special:CargoTables|All Cargo Tables]] • &#039;&#039;[[Template:ArtifactDef|Artifacts]] • [[Template:BuildingDef|Buildings]] • [[Template:HeroDef|Heroes]] • [[Template:FactionDef|Factions]] • [[Template:LawDef|Laws]] • [[Template:MapObjectDef|MapObjects]] • [[Template:SkillDef|Skills]] • [[Template:SpellDef|Spells]] • [[Template:TranslationDef|Translations]] • [[Template:UnitDef|Units]]&#039;&#039;&lt;br /&gt;
|-&lt;br /&gt;
! External Links&lt;br /&gt;
| [https://www.mediawiki.org/wiki/Extension:Cargo Official Cargo Extension Documentation] • [https://www.w3schools.com/sql/ SQL References]&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
----&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
[[Category:Data Documentation]]&lt;/div&gt;</summary>
		<author><name>76561198048502585</name></author>
	</entry>
	<entry>
		<id>https://wiki.hoodedhorse.com/Heroes_of_Might_and_Magic_Olden_Era/index.php?title=Help:Applying_Patches&amp;diff=41532</id>
		<title>Help:Applying Patches</title>
		<link rel="alternate" type="text/html" href="https://wiki.hoodedhorse.com/Heroes_of_Might_and_Magic_Olden_Era/index.php?title=Help:Applying_Patches&amp;diff=41532"/>
		<updated>2026-10-12T14:11:49Z</updated>

		<summary type="html">&lt;p&gt;76561198048502585: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;These are the steps to perform whenever the game receives an update:&lt;br /&gt;
&lt;br /&gt;
# Visit [[Data:Update]] and run the tool that refreshes the internal data used by Cargo.&lt;br /&gt;
# Visit [[Data:Diff]] and run the tool that compares the previous &amp;lt;code&amp;gt;Core.zip&amp;lt;/code&amp;gt; with the latest one. Copy the generated output from the comparison to the clipboard.&lt;br /&gt;
# Create a new page to host these database entries. It should be located next to other similar pages (e.g. [[Data:Patches/v0.80.34]]). Paste the clipboard into this page and maybe remove entries that don&#039;t feel relevant.&lt;br /&gt;
# Create a new page for the official patch notes. It should be located next to other similar pages (e.g. [[Patches/v0.80.34]]) and use the same structure. Manually adapt the page for the current patch by copy/pasting from the steamcommunity official post.&lt;br /&gt;
# Create a new page for the display of automated patch comparison. It should be located next to other similar pages (e.g. [[Patches/v0.80.34_auto]]). You only need to change the patch version in the &amp;lt;code&amp;gt;&amp;lt;nowiki&amp;gt;{{Patch}}&amp;lt;/nowiki&amp;gt;&amp;lt;/code&amp;gt; template.&lt;br /&gt;
&lt;br /&gt;
==Related pages==&lt;br /&gt;
{{DataNavBox}}&lt;/div&gt;</summary>
		<author><name>76561198048502585</name></author>
	</entry>
	<entry>
		<id>https://wiki.hoodedhorse.com/Heroes_of_Might_and_Magic_Olden_Era/index.php?title=Help:Applying_Patches&amp;diff=41531</id>
		<title>Help:Applying Patches</title>
		<link rel="alternate" type="text/html" href="https://wiki.hoodedhorse.com/Heroes_of_Might_and_Magic_Olden_Era/index.php?title=Help:Applying_Patches&amp;diff=41531"/>
		<updated>2026-10-12T14:09:05Z</updated>

		<summary type="html">&lt;p&gt;76561198048502585: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;These are the steps to perform whenever the game receives an update:&lt;br /&gt;
&lt;br /&gt;
# Visit [[Data:Update]] and run the tool that refreshes the internal data used by Cargo.&lt;br /&gt;
# Visit [[Data:Diff]] and run the tool that compares the previous &amp;lt;code&amp;gt;Core.zip&amp;lt;/code&amp;gt; with the latest one. Copy the generated output from the comparison to the clipboard.&lt;br /&gt;
# Create a new page to host these database entries. It should be located next to other similar pages (e.g. [[Data:Patches/v0.80.34]]). Paste the clipboard into this page and maybe remove entries that don&#039;t feel relevant.&lt;br /&gt;
# Create a new page for the official patch notes. It should be located next to other similar pages (e.g. [[Patches/v0.80.34]]) and use the same structure. Manually adapt the page for the current patch by copy/pasting from the steamcommunity official post.&lt;br /&gt;
# Create a new page for the display of automated patch comparison. It should be located next to other similar pages (e.g. [[Patches/v0.80.34_auto]]). You only need to change the patch version in the &amp;lt;code&amp;gt;&amp;lt;nowiki&amp;gt;{{Patch}}&amp;lt;/nowiki&amp;gt;&amp;lt;/code&amp;gt; template.&lt;br /&gt;
&lt;br /&gt;
{{DataNavBox}}&lt;/div&gt;</summary>
		<author><name>76561198048502585</name></author>
	</entry>
	<entry>
		<id>https://wiki.hoodedhorse.com/Heroes_of_Might_and_Magic_Olden_Era/index.php?title=Patches/v0.80.34_auto&amp;diff=41530</id>
		<title>Patches/v0.80.34 auto</title>
		<link rel="alternate" type="text/html" href="https://wiki.hoodedhorse.com/Heroes_of_Might_and_Magic_Olden_Era/index.php?title=Patches/v0.80.34_auto&amp;diff=41530"/>
		<updated>2026-10-12T10:01:16Z</updated>

		<summary type="html">&lt;p&gt;76561198048502585: Created page with &amp;quot;{{Patch | version=0.80.34 | lang=en}}  Category:Patch Display&amp;quot;&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{Patch | version=0.80.34 | lang=en}}&lt;br /&gt;
&lt;br /&gt;
[[Category:Patch Display]]&lt;/div&gt;</summary>
		<author><name>76561198048502585</name></author>
	</entry>
	<entry>
		<id>https://wiki.hoodedhorse.com/Heroes_of_Might_and_Magic_Olden_Era/index.php?title=Help:Applying_Patches&amp;diff=41529</id>
		<title>Help:Applying Patches</title>
		<link rel="alternate" type="text/html" href="https://wiki.hoodedhorse.com/Heroes_of_Might_and_Magic_Olden_Era/index.php?title=Help:Applying_Patches&amp;diff=41529"/>
		<updated>2026-10-12T09:50:31Z</updated>

		<summary type="html">&lt;p&gt;76561198048502585: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;These are the steps to perform whenever the game receives an update:&lt;br /&gt;
&lt;br /&gt;
# Visit [[Data:Update]] and run the tool that refreshes the internal data used by Cargo.&lt;br /&gt;
# Visit [[Data:Diff]] and run the tool that compares the previous &amp;lt;code&amp;gt;Core.zip&amp;lt;/code&amp;gt; with the latest one. Copy the generated output from the comparison to the clipboard.&lt;br /&gt;
# Create a new page to host these database entries. It should be located next to other similar pages (e.g. [[Data:Patches/v0.80.34]]). Paste the clipboard into this page and maybe remove entries that don&#039;t feel relevant.&lt;br /&gt;
# Create a new page for the official patch notes. It should be located next to other similar pages (e.g. [[Patches/v0.80.34]]) and use the same structure. Manually adapt the page for the current patch by copy/pasting from the steamcommunity official post.&lt;br /&gt;
# Create a new page for the display of automated patch comparison. It should be located next to other similar pages (e.g. [[Patches/v0.80.34_auto]]). You only need to change the patch version in the &amp;lt;code&amp;gt;&amp;lt;nowiki&amp;gt;{{Patch}}&amp;lt;/nowiki&amp;gt;&amp;lt;/code&amp;gt; template.&lt;/div&gt;</summary>
		<author><name>76561198048502585</name></author>
	</entry>
	<entry>
		<id>https://wiki.hoodedhorse.com/Heroes_of_Might_and_Magic_Olden_Era/index.php?title=Template:DataNavBox&amp;diff=41528</id>
		<title>Template:DataNavBox</title>
		<link rel="alternate" type="text/html" href="https://wiki.hoodedhorse.com/Heroes_of_Might_and_Magic_Olden_Era/index.php?title=Template:DataNavBox&amp;diff=41528"/>
		<updated>2026-10-12T09:48:32Z</updated>

		<summary type="html">&lt;p&gt;76561198048502585: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{loc}}&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; style=&amp;quot;margin: auto; width: 95%; font-size:1.2rem&amp;quot;&lt;br /&gt;
|+ &lt;br /&gt;
|-&lt;br /&gt;
! colspan=2 | Cargo and Structured Data&lt;br /&gt;
|-&lt;br /&gt;
! style=&amp;quot;width:10rem&amp;quot; | Documentation&lt;br /&gt;
| [[Help:Data Overview|Data Overview]] • [[Help:Cargo|Introduction to Cargo]] • [[Help:Game Files|Game Files]] • [[Help:Obelisk Bot|Obelisk Bot]]&lt;br /&gt;
[[Help:Building Cargo Templates|Building Cargo Templates]] • [[Help:Building Rich Tables|Building Rich Tables]] • [[Help:Debugging Cargo|Debugging Cargo]] • [[Help:Searching Cargo Tables|Searching Cargo Tables]] • [[Help:Using Translations|Using Translations]]&lt;br /&gt;
&lt;br /&gt;
[[Help:Useful Recipes|Useful Recipes]] • [[Help:Useful Templates|Useful Templates]] • [[Help:Applying_Patches|Applying Patches]]&lt;br /&gt;
|-&lt;br /&gt;
! Architecture Reference&lt;br /&gt;
| [[Help:Data Architecture|Data Architecture]] • [[Data:Coverage]] • [[:Category:Cargo Definitions|Cargo Definition Pages]] • [[:Category:Game_Data_Import|Game Data Pages]]&lt;br /&gt;
[[Special:CargoTables|All Cargo Tables]] • &#039;&#039;[[Template:ArtifactDef|Artifacts]] • [[Template:BuildingDef|Buildings]] • [[Template:HeroDef|Heroes]] • [[Template:FactionDef|Factions]] • [[Template:LawDef|Laws]] • [[Template:MapObjectDef|MapObjects]] • [[Template:SkillDef|Skills]] • [[Template:SpellDef|Spells]] • [[Template:TranslationDef|Translations]] • [[Template:UnitDef|Units]]&#039;&#039;&lt;br /&gt;
|-&lt;br /&gt;
! External Links&lt;br /&gt;
| [https://www.mediawiki.org/wiki/Extension:Cargo Official Cargo Extension Documentation] • [https://www.w3schools.com/sql/ SQL References]&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
----&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
[[Category:Data Documentation]]&lt;/div&gt;</summary>
		<author><name>76561198048502585</name></author>
	</entry>
	<entry>
		<id>https://wiki.hoodedhorse.com/Heroes_of_Might_and_Magic_Olden_Era/index.php?title=Help:Applying_Patches&amp;diff=41527</id>
		<title>Help:Applying Patches</title>
		<link rel="alternate" type="text/html" href="https://wiki.hoodedhorse.com/Heroes_of_Might_and_Magic_Olden_Era/index.php?title=Help:Applying_Patches&amp;diff=41527"/>
		<updated>2026-10-12T09:47:48Z</updated>

		<summary type="html">&lt;p&gt;76561198048502585: Created page with &amp;quot;These are the steps to perform whenever the game receives an update:  # Visit Data:Update and run the tool that refreshes the internal data used by our database (Cargo).  # Visit Data:Diff and run the tool that compares the previous &amp;lt;code&amp;gt;Core.zip&amp;lt;/code&amp;gt; with the latest one. Copy the generated output from the comparison to the clipboard.  # Create a new page to host these database entries. It should be located next to other similar pages (e.g. Data:Patches/v0.8...&amp;quot;&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;These are the steps to perform whenever the game receives an update:&lt;br /&gt;
&lt;br /&gt;
# Visit [[Data:Update]] and run the tool that refreshes the internal data used by our database (Cargo).&lt;br /&gt;
&lt;br /&gt;
# Visit [[Data:Diff]] and run the tool that compares the previous &amp;lt;code&amp;gt;Core.zip&amp;lt;/code&amp;gt; with the latest one. Copy the generated output from the comparison to the clipboard.&lt;br /&gt;
&lt;br /&gt;
# Create a new page to host these database entries. It should be located next to other similar pages (e.g. [[Data:Patches/v0.80.34]]). Paste the clipboard into this page and maybe remove entries that don&#039;t feel relevant.&lt;br /&gt;
&lt;br /&gt;
# Create a new page for the official patch notes. It should be located next to other similar pages (e.g. [[Patches/v0.80.34]]) and use the same structure. Manually adapt the page for the current patch by copy/pasting from the steamcommunity official post.&lt;br /&gt;
&lt;br /&gt;
# Create a new page for the display of automated patch comparison. It should be located next to other similar pages (e.g. [[Patches/v0.80.34_auto]]). You only need to change the patch version in the &amp;lt;code&amp;gt;&amp;lt;nowiki&amp;gt;{{Patch}}&amp;lt;/nowiki&amp;gt;&amp;lt;/code&amp;gt; template.&lt;/div&gt;</summary>
		<author><name>76561198048502585</name></author>
	</entry>
	<entry>
		<id>https://wiki.hoodedhorse.com/Heroes_of_Might_and_Magic_Olden_Era/index.php?title=Patches/v0.81.02&amp;diff=41526</id>
		<title>Patches/v0.81.02</title>
		<link rel="alternate" type="text/html" href="https://wiki.hoodedhorse.com/Heroes_of_Might_and_Magic_Olden_Era/index.php?title=Patches/v0.81.02&amp;diff=41526"/>
		<updated>2026-10-12T09:47:48Z</updated>

		<summary type="html">&lt;p&gt;76561198048502585: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{DISPLAYTITLE:Patch v0.81.02 (Alliances &amp;amp; Updated Random Map Generator)}}&lt;br /&gt;
Patch {{b|0.80.34}} was released on {{b|{{#cargo_query:tables=Patch|where=Patch.id=&amp;quot;0.80.34&amp;quot;|fields=Patch.date}}}}.&lt;br /&gt;
&lt;br /&gt;
For automatically detected differences, see [[Patches/v0.81.02_auto]].&lt;br /&gt;
&lt;br /&gt;
== Changelog ==&lt;br /&gt;
TODO&lt;br /&gt;
&lt;br /&gt;
== External Links ==&lt;br /&gt;
* [https://steamcommunity.com/games/3105440/announcements/detail/676258795703240872 Official Post]&lt;br /&gt;
&lt;br /&gt;
__NOTOC__&lt;br /&gt;
[[Category:Patch Notes]]&lt;/div&gt;</summary>
		<author><name>76561198048502585</name></author>
	</entry>
	<entry>
		<id>https://wiki.hoodedhorse.com/Heroes_of_Might_and_Magic_Olden_Era/index.php?title=Template:DataNavBox&amp;diff=41525</id>
		<title>Template:DataNavBox</title>
		<link rel="alternate" type="text/html" href="https://wiki.hoodedhorse.com/Heroes_of_Might_and_Magic_Olden_Era/index.php?title=Template:DataNavBox&amp;diff=41525"/>
		<updated>2026-10-12T09:47:48Z</updated>

		<summary type="html">&lt;p&gt;76561198048502585: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{loc}}&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; style=&amp;quot;margin: auto; width: 95%; font-size:1.2rem&amp;quot;&lt;br /&gt;
|+ &lt;br /&gt;
|-&lt;br /&gt;
! colspan=2 | Cargo and Structured Data&lt;br /&gt;
|-&lt;br /&gt;
! style=&amp;quot;width:10rem&amp;quot; | Documentation&lt;br /&gt;
| [[Help:Data Overview|Data Overview]] • [[Help:Cargo|Introduction to Cargo]] • [[Help:Game Files|Game Files]] • [[Help:Obelisk Bot|Obelisk Bot]]&lt;br /&gt;
[[Help:Building Cargo Templates|Building Cargo Templates]] • [[Help:Building Rich Tables|Building Rich Tables]] • [[Help:Debugging Cargo|Debugging Cargo]] • [[Help:Searching Cargo Tables|Searching Cargo Tables]] • [[Help:Using Translations|Using Translations]]&lt;br /&gt;
&lt;br /&gt;
[[Help:Useful Recipes|Useful Recipes]] • [[Help:Useful Templates|Useful Templates]] • [[Help:Applying_Patches]]&lt;br /&gt;
|-&lt;br /&gt;
! Architecture Reference&lt;br /&gt;
| [[Help:Data Architecture|Data Architecture]] • [[Data:Coverage]] • [[:Category:Cargo Definitions|Cargo Definition Pages]] • [[:Category:Game_Data_Import|Game Data Pages]]&lt;br /&gt;
[[Special:CargoTables|All Cargo Tables]] • &#039;&#039;[[Template:ArtifactDef|Artifacts]] • [[Template:BuildingDef|Buildings]] • [[Template:HeroDef|Heroes]] • [[Template:FactionDef|Factions]] • [[Template:LawDef|Laws]] • [[Template:MapObjectDef|MapObjects]] • [[Template:SkillDef|Skills]] • [[Template:SpellDef|Spells]] • [[Template:TranslationDef|Translations]] • [[Template:UnitDef|Units]]&#039;&#039;&lt;br /&gt;
|-&lt;br /&gt;
! External Links&lt;br /&gt;
| [https://www.mediawiki.org/wiki/Extension:Cargo Official Cargo Extension Documentation] • [https://www.w3schools.com/sql/ SQL References]&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
----&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
[[Category:Data Documentation]]&lt;/div&gt;</summary>
		<author><name>76561198048502585</name></author>
	</entry>
</feed>