<?xml version="1.0"?>
<feed xmlns="http://www.w3.org/2005/Atom" xml:lang="zh">
	<id>https://9on0wiki.gunmu.dns.navy/api.php?action=feedcontributions&amp;feedformat=atom&amp;user=DoubleCircle</id>
	<title>久远澪Wiki - 用户贡献 [zh]</title>
	<link rel="self" type="application/atom+xml" href="https://9on0wiki.gunmu.dns.navy/api.php?action=feedcontributions&amp;feedformat=atom&amp;user=DoubleCircle"/>
	<link rel="alternate" type="text/html" href="https://9on0wiki.gunmu.dns.navy/wiki/Special:Contributions/DoubleCircle"/>
	<updated>2026-08-27T15:36:46Z</updated>
	<subtitle>用户贡献</subtitle>
	<generator>MediaWiki 1.46.0</generator>
	<entry>
		<id>https://9on0wiki.gunmu.dns.navy/index.php?title=User_talk:Veila&amp;diff=776</id>
		<title>User talk:Veila</title>
		<link rel="alternate" type="text/html" href="https://9on0wiki.gunmu.dns.navy/index.php?title=User_talk:Veila&amp;diff=776"/>
		<updated>2026-08-27T04:25:56Z</updated>

		<summary type="html">&lt;p&gt;DoubleCircle：​/* 关于模板:Poem quote引用模板丢失 */ 回复&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;== 关于模板:Poem quote引用模板丢失 ==&lt;br /&gt;
&lt;br /&gt;
在[[模板:Poem quote]]中丢失若干引用模板&lt;br /&gt;
&lt;br /&gt;
请创建&lt;br /&gt;
{|class=“wikitabel“&lt;br /&gt;
|-&lt;br /&gt;
| [[Template:If empty]]&lt;br /&gt;
|-&lt;br /&gt;
| [[Template:Lorem​]]&lt;br /&gt;
|-&lt;br /&gt;
| [[Template:逗號分隔各項​]]&lt;br /&gt;
|} [[User:DoubleCircle|DoubleCircle]]（[[User talk:DoubleCircle|留言]]） 2026年8月25日 (二) 17:11 (UTC)&lt;br /&gt;
&lt;br /&gt;
:你好，由于缺少导入模板权限，无法顺利地对需要的模板和模块进行批量导入，故搁置。 [[User:Veila|Veila]]（[[User talk:Veila|留言]]） 2026年8月25日 (二) 17:26 (UTC)&lt;br /&gt;
::请提供模板来源，或者向站长[[User:WhiteBirD]]申请权限 [[User:DoubleCircle|DoubleCircle]]（[[User talk:DoubleCircle|留言]]） 2026年8月26日 (三) 07:32 (UTC)&lt;br /&gt;
:::模板源自中文维基百科：https://zh.wikipedia.org。 [[User:Veila|Veila]]（[[User talk:Veila|留言]]） 2026年8月26日 (三) 09:12 (UTC)&lt;br /&gt;
::::已导入（除引用讨论页相关内容） [[User:DoubleCircle|DoubleCircle]]（[[User talk:DoubleCircle|留言]]） 2026年8月27日 (四) 04:25 (UTC)&lt;br /&gt;
::非常感谢您的反馈！出于安全性考虑，我们暂时只为两位管理员提供了上传权限。您仍可向管理员申请导入。&lt;br /&gt;
::方便提供您的qq昵称吗？确认安全后我可以向您也提供管理员权限。 [[User:WhiteBirD|WhiteBirD]]（[[User talk:WhiteBirD|留言]]） 2026年8月27日 (四) 03:26 (UTC)&lt;/div&gt;</summary>
		<author><name>DoubleCircle</name></author>
	</entry>
	<entry>
		<id>https://9on0wiki.gunmu.dns.navy/index.php?title=Template:%E5%B1%95%E7%A4%BA%E5%8D%A1%E7%89%87/styles.css&amp;diff=774</id>
		<title>Template:展示卡片/styles.css</title>
		<link rel="alternate" type="text/html" href="https://9on0wiki.gunmu.dns.navy/index.php?title=Template:%E5%B1%95%E7%A4%BA%E5%8D%A1%E7%89%87/styles.css&amp;diff=774"/>
		<updated>2026-08-27T03:22:53Z</updated>

		<summary type="html">&lt;p&gt;DoubleCircle：​&amp;quot;移除展示卡片「跟随系统」暗色块&amp;quot;&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;/* ==========================================================================&lt;br /&gt;
   展示卡片（Template:展示卡片/styles.css）&lt;br /&gt;
   ==========================================================================&lt;br /&gt;
   配色与 MediaWiki:Common.css 全局变量保持一致：&lt;br /&gt;
   - 所有颜色通过 var(--xxx, 浅色回退) 引用 common.css 定义的变量，&lt;br /&gt;
     站点调色后本模板自动同步；&lt;br /&gt;
   - 暗色模式自动生效：common.css 会根据站内偏好（&amp;lt;html&amp;gt; 上的&lt;br /&gt;
     skin-theme-clientpref-night / skin-theme-clientpref-os 类）重定义这些变量，&lt;br /&gt;
     本模板颜色无需额外覆盖；仅投影在此按 common.css 的暗色阴影显式适配。&lt;br /&gt;
   ========================================================================== */&lt;br /&gt;
.display-card {&lt;br /&gt;
	position: relative;&lt;br /&gt;
	box-sizing: border-box;&lt;br /&gt;
	height: 100%;&lt;br /&gt;
	margin: 5px;&lt;br /&gt;
	padding: 12px 14px;&lt;br /&gt;
	border: 1px solid var(--color-primary-light, #D4E8C0);&lt;br /&gt;
	border-radius: 8px;&lt;br /&gt;
	background: linear-gradient(180deg, var(--color-theme-soft, #F9FCF4), var(--color-theme, #F1F8E6));&lt;br /&gt;
	box-shadow: 0 1px 3px rgba(143, 188, 143, .25);&lt;br /&gt;
	transition: box-shadow .2s ease, transform .2s ease;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
/* 顶部装饰条 */&lt;br /&gt;
.display-card::before {&lt;br /&gt;
	content: &amp;quot;&amp;quot;;&lt;br /&gt;
	position: absolute;&lt;br /&gt;
	top: -1px;&lt;br /&gt;
	left: -1px;&lt;br /&gt;
	right: -1px;&lt;br /&gt;
	height: 4px;&lt;br /&gt;
	border-radius: 8px 8px 0 0;&lt;br /&gt;
	background: linear-gradient(90deg, var(--color-primary, #8FBC8F), var(--color-primary-lite, #DCEFDC));&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
/* 悬停效果 */&lt;br /&gt;
.display-card:hover {&lt;br /&gt;
	box-shadow: 0 4px 14px rgba(143, 188, 143, .4);&lt;br /&gt;
	transform: translateY(-2px);&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
.display-card-head {&lt;br /&gt;
	margin-bottom: 6px;&lt;br /&gt;
	padding-bottom: 4px;&lt;br /&gt;
	border-bottom: 1px solid var(--color-primary, #8FBC8F);&lt;br /&gt;
	font-size: 1.1em;&lt;br /&gt;
	font-weight: bold;&lt;br /&gt;
	color: var(--color-primary-deep, #2E6B45);&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
.display-card-head::before {&lt;br /&gt;
	content: &amp;quot;◆&amp;quot;;&lt;br /&gt;
	margin-right: 6px;&lt;br /&gt;
	color: var(--color-primary, #8FBC8F);&lt;br /&gt;
	font-size: .75em;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
.display-card-body {&lt;br /&gt;
	color: var(--color-text, #333333);&lt;br /&gt;
	font-size: .95em;&lt;br /&gt;
	line-height: 1.6;&lt;br /&gt;
	overflow-wrap: break-word;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
.display-card-body ul {&lt;br /&gt;
	margin: 0 0 0 1.2em;&lt;br /&gt;
	padding: 0;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
.display-card-body p {&lt;br /&gt;
	margin: .3em 0;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
.display-card-body .more-link {&lt;br /&gt;
	margin-top: 4px;&lt;br /&gt;
	text-align: right;&lt;br /&gt;
	font-size: .9em;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
/* 强调样式 */&lt;br /&gt;
.display-card-accent {&lt;br /&gt;
	background: linear-gradient(180deg, var(--color-accent-bg, #FFF8EF), var(--color-accent-bg-soft, #FDF2E3));&lt;br /&gt;
	border: 1px solid var(--color-accent-border, #E8CFA8);&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
.display-card-accent::before {&lt;br /&gt;
	background: linear-gradient(90deg, var(--color-accent, #E8B96A), var(--color-accent-light, #F3D9AE));&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
.display-card-accent .display-card-head {&lt;br /&gt;
	border-bottom-color: var(--color-accent, #E8B96A);&lt;br /&gt;
	color: var(--color-accent-deep, #8A5A1E);&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
/* ==========================================================================&lt;br /&gt;
   暗色模式投影（颜色由 common.css 变量自动适配，此处仅覆盖投影）&lt;br /&gt;
   与 common.css 暗色 --shadow-card / --shadow-card-hover 一致&lt;br /&gt;
   ========================================================================== */&lt;br /&gt;
@media screen {&lt;br /&gt;
	/* 用户明确选择「深色」 */&lt;br /&gt;
	html.skin-theme-clientpref-night .display-card {&lt;br /&gt;
		box-shadow: 0 1px 3px rgba(0, 0, 0, .4);&lt;br /&gt;
	}&lt;br /&gt;
&lt;br /&gt;
	html.skin-theme-clientpref-night .display-card:hover {&lt;br /&gt;
		box-shadow: 0 4px 14px rgba(0, 0, 0, .55);&lt;br /&gt;
	}&lt;br /&gt;
}&lt;/div&gt;</summary>
		<author><name>DoubleCircle</name></author>
	</entry>
	<entry>
		<id>https://9on0wiki.gunmu.dns.navy/index.php?title=%E6%B2%99%E7%9B%92&amp;diff=773</id>
		<title>沙盒</title>
		<link rel="alternate" type="text/html" href="https://9on0wiki.gunmu.dns.navy/index.php?title=%E6%B2%99%E7%9B%92&amp;diff=773"/>
		<updated>2026-08-27T03:18:34Z</updated>

		<summary type="html">&lt;p&gt;DoubleCircle：​&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;欢迎来到沙盒！这是一个&amp;lt;ruby&amp;gt;赛博猫砂盆&amp;lt;rt&amp;gt;赛博屎坑&amp;lt;/rt&amp;gt;&amp;lt;/ruby&amp;gt;，你可以在这里自由&amp;lt;ruby&amp;gt;创作&amp;lt;rt&amp;gt;拉屎&amp;lt;/rt&amp;gt;&amp;lt;/ruby&amp;gt;！&lt;br /&gt;
所有未经证实的语法都可以在这里尝试，以免污染正常页面！&lt;br /&gt;
&lt;br /&gt;
{{首页/介绍}}&lt;br /&gt;
&lt;br /&gt;
[https://space.bilibili.com/3706995750210156 个人主页]&lt;br /&gt;
&lt;br /&gt;
{{Infobox&lt;br /&gt;
| above = 9on0&lt;br /&gt;
| image = [[File:9on0_avatar.jpg|128x128px]]&lt;br /&gt;
| labelstyle = width:30%;&lt;br /&gt;
| datastyle = width:70%;&lt;br /&gt;
&lt;br /&gt;
| header1 = 设定信息&lt;br /&gt;
| label2 = 本名&lt;br /&gt;
| data2 = ■■ &amp;lt;ruby&amp;gt;久远&amp;lt;rt&amp;gt;Kuon&amp;lt;/rt&amp;gt;&amp;lt;/ruby&amp;gt;&amp;lt;ruby&amp;gt;澪&amp;lt;rt&amp;gt;Rei&amp;lt;/rt&amp;gt;&amp;lt;/ruby&amp;gt;&amp;lt;ref&amp;gt;自称为中文名，只不过有日语读音。&amp;lt;/ref&amp;gt;&amp;lt;br&amp;gt;&amp;lt;s&amp;gt;&amp;lt;ruby&amp;gt;千岁&amp;lt;rt&amp;gt;&amp;lt;s&amp;gt;SenSai&amp;lt;/s&amp;gt;&amp;lt;/rt&amp;gt;&amp;lt;/ruby&amp;gt;&amp;lt;/s&amp;gt;&lt;br /&gt;
| label3 = 别名&lt;br /&gt;
| data3 = 小啾啾、910、920、澪珠、小兔子&amp;lt;ref&amp;gt;小学绰号。&amp;lt;/ref&amp;gt;、绿色小猪&amp;lt;ref&amp;gt;起因是弹幕提到右下角猪头肉，久远澪顺势说起三星堆有一堆绿色猪头，贴吧有人考据了一下发现三星堆里还真有绿色猪头，于是就有久远澪绿色小猪二创了。——百度贴吧《[https://tieba.baidu.com/p/10961734389 关于久远澪的若干条冷知识]》&amp;lt;/ref&amp;gt;、哈基瓜&amp;lt;ref&amp;gt;发色为蜜瓜色，首播将哈密瓜念为哈基瓜，故得此名。&amp;lt;/ref&amp;gt;&lt;br /&gt;
| label4 = 瞳色&lt;br /&gt;
| data4 = 胭脂粉&lt;br /&gt;
| label5 = 发色&lt;br /&gt;
| data5 = 浅蜜瓜绿&lt;br /&gt;
| label6 = 种族&lt;br /&gt;
| data6 = 数字生命.exe&lt;br /&gt;
| label7 = 萌点&lt;br /&gt;
| data7 = 萌音、多重人格&lt;br /&gt;
| label8 = 身高&lt;br /&gt;
| data8 = 156cm&lt;br /&gt;
| label9 = 年龄&lt;br /&gt;
| data9 = 17岁→0岁&lt;br /&gt;
&lt;br /&gt;
| header10 = 活动信息&lt;br /&gt;
| label11 = 个人状态&lt;br /&gt;
| data11 = 活动中&lt;br /&gt;
| label12 = 语言&lt;br /&gt;
| data12 = 汉语&lt;br /&gt;
| label13 = 代表色&lt;br /&gt;
| data13 = &amp;lt;nowiki&amp;gt;#F1F8E6&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
| label14 = 幸运数字&lt;br /&gt;
| data14 = 7&lt;br /&gt;
| label15 = 粉丝勋章&lt;br /&gt;
| data15 = 澪距离&lt;br /&gt;
| label16 = Emoji&lt;br /&gt;
| data16 = 🍈、∞&amp;lt;ref&amp;gt;角色千岁的代表符号。&amp;lt;/ref&amp;gt;&lt;br /&gt;
| label17 = Tag&lt;br /&gt;
| data17 = [https://www.bilibili.com/v/topic/detail?topic_id=1344246 #久远澪的数据库]&lt;br /&gt;
&lt;br /&gt;
| header18 = 人际关系&lt;br /&gt;
| label19 = 形象设计&lt;br /&gt;
| data19 = 9on0&lt;br /&gt;
| label20 = Live2D&lt;br /&gt;
| data20 = 黄泉月辉夜&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
! 9on0 &lt;br /&gt;
|-&lt;br /&gt;
| [[File:图片]]&lt;br /&gt;
|-&lt;br /&gt;
| something&lt;br /&gt;
|-&lt;br /&gt;
! 基本信息 &lt;br /&gt;
|-&lt;br /&gt;
| 生日&lt;br /&gt;
|-&lt;br /&gt;
| something&lt;br /&gt;
|-&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
澪考子必读[https://tieba.baidu.com/p/10961734389?see_lz=1]&lt;br /&gt;
&lt;br /&gt;
神秘账号&amp;lt;ref&amp;gt;[https://space.bilibili.com/3707034304252555 小说家的草稿纸]&amp;lt;/ref&amp;gt;&lt;br /&gt;
&lt;br /&gt;
文件上传功能已禁用？&lt;br /&gt;
&lt;br /&gt;
↑已修复，by傻卵站长&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&amp;lt;ruby&amp;gt;久远澪&amp;lt;rt&amp;gt;大绿猪&amp;lt;/rt&amp;gt;&amp;lt;/ruby&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==註釋==&lt;br /&gt;
&amp;lt;references /&amp;gt;&lt;/div&gt;</summary>
		<author><name>DoubleCircle</name></author>
	</entry>
	<entry>
		<id>https://9on0wiki.gunmu.dns.navy/index.php?title=Template:%E9%A6%96%E9%A1%B5/%E4%BB%8B%E7%BB%8D&amp;diff=772</id>
		<title>Template:首页/介绍</title>
		<link rel="alternate" type="text/html" href="https://9on0wiki.gunmu.dns.navy/index.php?title=Template:%E9%A6%96%E9%A1%B5/%E4%BB%8B%E7%BB%8D&amp;diff=772"/>
		<updated>2026-08-27T03:18:04Z</updated>

		<summary type="html">&lt;p&gt;DoubleCircle：​&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&amp;lt;includeonly&amp;gt;&lt;br /&gt;
{{展示卡片|标题=介绍|内容=&lt;br /&gt;
[[久远澪]]是一位活动于哔哩哔哩的虚拟UP主，设定为游荡于互联网的数字生命。&lt;br /&gt;
&lt;br /&gt;
[[9on0 System]]为久远澪世界观的网页解谜游戏，自 2026 年 6 月发布，目前持续进行中。&lt;br /&gt;
围绕该世界观和主播，构成一项有关[[久远澪]]的 ARG活动&lt;br /&gt;
&lt;br /&gt;
[[遗闻之钟计划]]则是与她相关的 ARG，自 2026 年 7 月发布，目前持续进行中。&lt;br /&gt;
}}&lt;br /&gt;
&amp;lt;/includeonly&amp;gt;&lt;br /&gt;
&amp;lt;noinclude&amp;gt;&lt;br /&gt;
{{Documentation}}&lt;br /&gt;
&amp;lt;/noinclude&amp;gt;&lt;/div&gt;</summary>
		<author><name>DoubleCircle</name></author>
	</entry>
	<entry>
		<id>https://9on0wiki.gunmu.dns.navy/index.php?title=Template:%E9%A6%96%E9%A1%B5/DataList&amp;diff=771</id>
		<title>Template:首页/DataList</title>
		<link rel="alternate" type="text/html" href="https://9on0wiki.gunmu.dns.navy/index.php?title=Template:%E9%A6%96%E9%A1%B5/DataList&amp;diff=771"/>
		<updated>2026-08-27T03:09:03Z</updated>

		<summary type="html">&lt;p&gt;DoubleCircle：​&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&amp;lt;includeonly&amp;gt;&lt;br /&gt;
{{展示卡片|标题=数据档案|内容=&lt;br /&gt;
&amp;lt;table class=&amp;quot;wikitable&amp;quot; style=&amp;quot;width:100%; text-align:center;&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;tr&amp;gt;&amp;lt;th&amp;gt;条目&amp;lt;/th&amp;gt;&amp;lt;th&amp;gt;简介&amp;lt;/th&amp;gt;&amp;lt;/tr&amp;gt;&lt;br /&gt;
&amp;lt;tr&amp;gt;&amp;lt;td&amp;gt;[[久远澪]]&amp;lt;/td&amp;gt;&amp;lt;td&amp;gt;设定信息、历程与语录&amp;lt;/td&amp;gt;&amp;lt;/tr&amp;gt;&lt;br /&gt;
&amp;lt;tr&amp;gt;&amp;lt;td&amp;gt;[[遗闻之钟计划]]&amp;lt;/td&amp;gt;&amp;lt;td&amp;gt;ARG 情报与考据&amp;lt;/td&amp;gt;&amp;lt;/tr&amp;gt;&lt;br /&gt;
&amp;lt;tr&amp;gt;&amp;lt;td&amp;gt;[[久远澪Wiki:社群首页|社群首页]]&amp;lt;/td&amp;gt;&amp;lt;td&amp;gt;社区交流与公告&amp;lt;/td&amp;gt;&amp;lt;/tr&amp;gt;&lt;br /&gt;
&amp;lt;tr&amp;gt;&amp;lt;td&amp;gt;[[沙盒]]&amp;lt;/td&amp;gt;&amp;lt;td&amp;gt;实验性编辑&amp;lt;/td&amp;gt;&amp;lt;/tr&amp;gt;&lt;br /&gt;
&amp;lt;/table&amp;gt;&lt;br /&gt;
}}&lt;br /&gt;
&amp;lt;/includeonly&amp;gt;&lt;br /&gt;
&amp;lt;noinclude&amp;gt;&lt;br /&gt;
{{Documentation}}&lt;br /&gt;
&amp;lt;/noinclude&amp;gt;&lt;/div&gt;</summary>
		<author><name>DoubleCircle</name></author>
	</entry>
	<entry>
		<id>https://9on0wiki.gunmu.dns.navy/index.php?title=Template:%E5%B1%95%E7%A4%BA%E5%8D%A1%E7%89%87/styles.css&amp;diff=770</id>
		<title>Template:展示卡片/styles.css</title>
		<link rel="alternate" type="text/html" href="https://9on0wiki.gunmu.dns.navy/index.php?title=Template:%E5%B1%95%E7%A4%BA%E5%8D%A1%E7%89%87/styles.css&amp;diff=770"/>
		<updated>2026-08-27T03:06:06Z</updated>

		<summary type="html">&lt;p&gt;DoubleCircle：​&amp;quot;展示卡片样式接入 common.css 变量并支持暗色模式&amp;quot;&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;/* ==========================================================================&lt;br /&gt;
   展示卡片（Template:展示卡片/styles.css）&lt;br /&gt;
   ==========================================================================&lt;br /&gt;
   配色与 MediaWiki:Common.css 全局变量保持一致：&lt;br /&gt;
   - 所有颜色通过 var(--xxx, 浅色回退) 引用 common.css 定义的变量，&lt;br /&gt;
     站点调色后本模板自动同步；&lt;br /&gt;
   - 暗色模式自动生效：common.css 会根据站内偏好（&amp;lt;html&amp;gt; 上的&lt;br /&gt;
     skin-theme-clientpref-night / skin-theme-clientpref-os 类）重定义这些变量，&lt;br /&gt;
     本模板颜色无需额外覆盖；仅投影在此按 common.css 的暗色阴影显式适配。&lt;br /&gt;
   ========================================================================== */&lt;br /&gt;
.display-card {&lt;br /&gt;
	position: relative;&lt;br /&gt;
	box-sizing: border-box;&lt;br /&gt;
	height: 100%;&lt;br /&gt;
	margin: 5px;&lt;br /&gt;
	padding: 12px 14px;&lt;br /&gt;
	border: 1px solid var(--color-primary-light, #D4E8C0);&lt;br /&gt;
	border-radius: 8px;&lt;br /&gt;
	background: linear-gradient(180deg, var(--color-theme-soft, #F9FCF4), var(--color-theme, #F1F8E6));&lt;br /&gt;
	box-shadow: 0 1px 3px rgba(143, 188, 143, .25);&lt;br /&gt;
	transition: box-shadow .2s ease, transform .2s ease;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
/* 顶部装饰条 */&lt;br /&gt;
.display-card::before {&lt;br /&gt;
	content: &amp;quot;&amp;quot;;&lt;br /&gt;
	position: absolute;&lt;br /&gt;
	top: -1px;&lt;br /&gt;
	left: -1px;&lt;br /&gt;
	right: -1px;&lt;br /&gt;
	height: 4px;&lt;br /&gt;
	border-radius: 8px 8px 0 0;&lt;br /&gt;
	background: linear-gradient(90deg, var(--color-primary, #8FBC8F), var(--color-primary-lite, #DCEFDC));&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
/* 悬停效果 */&lt;br /&gt;
.display-card:hover {&lt;br /&gt;
	box-shadow: 0 4px 14px rgba(143, 188, 143, .4);&lt;br /&gt;
	transform: translateY(-2px);&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
.display-card-head {&lt;br /&gt;
	margin-bottom: 6px;&lt;br /&gt;
	padding-bottom: 4px;&lt;br /&gt;
	border-bottom: 1px solid var(--color-primary, #8FBC8F);&lt;br /&gt;
	font-size: 1.1em;&lt;br /&gt;
	font-weight: bold;&lt;br /&gt;
	color: var(--color-primary-deep, #2E6B45);&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
.display-card-head::before {&lt;br /&gt;
	content: &amp;quot;◆&amp;quot;;&lt;br /&gt;
	margin-right: 6px;&lt;br /&gt;
	color: var(--color-primary, #8FBC8F);&lt;br /&gt;
	font-size: .75em;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
.display-card-body {&lt;br /&gt;
	color: var(--color-text, #333333);&lt;br /&gt;
	font-size: .95em;&lt;br /&gt;
	line-height: 1.6;&lt;br /&gt;
	overflow-wrap: break-word;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
.display-card-body ul {&lt;br /&gt;
	margin: 0 0 0 1.2em;&lt;br /&gt;
	padding: 0;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
.display-card-body p {&lt;br /&gt;
	margin: .3em 0;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
.display-card-body .more-link {&lt;br /&gt;
	margin-top: 4px;&lt;br /&gt;
	text-align: right;&lt;br /&gt;
	font-size: .9em;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
/* 强调样式 */&lt;br /&gt;
.display-card-accent {&lt;br /&gt;
	background: linear-gradient(180deg, var(--color-accent-bg, #FFF8EF), var(--color-accent-bg-soft, #FDF2E3));&lt;br /&gt;
	border: 1px solid var(--color-accent-border, #E8CFA8);&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
.display-card-accent::before {&lt;br /&gt;
	background: linear-gradient(90deg, var(--color-accent, #E8B96A), var(--color-accent-light, #F3D9AE));&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
.display-card-accent .display-card-head {&lt;br /&gt;
	border-bottom-color: var(--color-accent, #E8B96A);&lt;br /&gt;
	color: var(--color-accent-deep, #8A5A1E);&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
/* ==========================================================================&lt;br /&gt;
   暗色模式投影（颜色由 common.css 变量自动适配，此处仅覆盖投影）&lt;br /&gt;
   与 common.css 暗色 --shadow-card / --shadow-card-hover 一致&lt;br /&gt;
   ========================================================================== */&lt;br /&gt;
@media screen {&lt;br /&gt;
	/* 用户明确选择「深色」 */&lt;br /&gt;
	html.skin-theme-clientpref-night .display-card {&lt;br /&gt;
		box-shadow: 0 1px 3px rgba(0, 0, 0, .4);&lt;br /&gt;
	}&lt;br /&gt;
&lt;br /&gt;
	html.skin-theme-clientpref-night .display-card:hover {&lt;br /&gt;
		box-shadow: 0 4px 14px rgba(0, 0, 0, .55);&lt;br /&gt;
	}&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
/* 用户选择「跟随系统」且系统为深色 */&lt;br /&gt;
@media screen and (prefers-color-scheme: dark) {&lt;br /&gt;
	html.skin-theme-clientpref-os .display-card {&lt;br /&gt;
		box-shadow: 0 1px 3px rgba(0, 0, 0, .4);&lt;br /&gt;
	}&lt;br /&gt;
&lt;br /&gt;
	html.skin-theme-clientpref-os .display-card:hover {&lt;br /&gt;
		box-shadow: 0 4px 14px rgba(0, 0, 0, .55);&lt;br /&gt;
	}&lt;br /&gt;
}&lt;/div&gt;</summary>
		<author><name>DoubleCircle</name></author>
	</entry>
	<entry>
		<id>https://9on0wiki.gunmu.dns.navy/index.php?title=%E6%B2%99%E7%9B%92&amp;diff=769</id>
		<title>沙盒</title>
		<link rel="alternate" type="text/html" href="https://9on0wiki.gunmu.dns.navy/index.php?title=%E6%B2%99%E7%9B%92&amp;diff=769"/>
		<updated>2026-08-27T01:41:08Z</updated>

		<summary type="html">&lt;p&gt;DoubleCircle：​&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;欢迎来到沙盒！这是一个&amp;lt;ruby&amp;gt;赛博猫砂盆&amp;lt;rt&amp;gt;赛博屎坑&amp;lt;/rt&amp;gt;&amp;lt;/ruby&amp;gt;，你可以在这里自由&amp;lt;ruby&amp;gt;创作&amp;lt;rt&amp;gt;拉屎&amp;lt;/rt&amp;gt;&amp;lt;/ruby&amp;gt;！&lt;br /&gt;
所有未经证实的语法都可以在这里尝试，以免污染正常页面！&lt;br /&gt;
&lt;br /&gt;
{{首页/关于}}&lt;br /&gt;
&lt;br /&gt;
[https://space.bilibili.com/3706995750210156 个人主页]&lt;br /&gt;
&lt;br /&gt;
{{Infobox&lt;br /&gt;
| above = 9on0&lt;br /&gt;
| image = [[File:9on0_avatar.jpg|128x128px]]&lt;br /&gt;
| labelstyle = width:30%;&lt;br /&gt;
| datastyle = width:70%;&lt;br /&gt;
&lt;br /&gt;
| header1 = 设定信息&lt;br /&gt;
| label2 = 本名&lt;br /&gt;
| data2 = ■■ &amp;lt;ruby&amp;gt;久远&amp;lt;rt&amp;gt;Kuon&amp;lt;/rt&amp;gt;&amp;lt;/ruby&amp;gt;&amp;lt;ruby&amp;gt;澪&amp;lt;rt&amp;gt;Rei&amp;lt;/rt&amp;gt;&amp;lt;/ruby&amp;gt;&amp;lt;ref&amp;gt;自称为中文名，只不过有日语读音。&amp;lt;/ref&amp;gt;&amp;lt;br&amp;gt;&amp;lt;s&amp;gt;&amp;lt;ruby&amp;gt;千岁&amp;lt;rt&amp;gt;&amp;lt;s&amp;gt;SenSai&amp;lt;/s&amp;gt;&amp;lt;/rt&amp;gt;&amp;lt;/ruby&amp;gt;&amp;lt;/s&amp;gt;&lt;br /&gt;
| label3 = 别名&lt;br /&gt;
| data3 = 小啾啾、910、920、澪珠、小兔子&amp;lt;ref&amp;gt;小学绰号。&amp;lt;/ref&amp;gt;、绿色小猪&amp;lt;ref&amp;gt;起因是弹幕提到右下角猪头肉，久远澪顺势说起三星堆有一堆绿色猪头，贴吧有人考据了一下发现三星堆里还真有绿色猪头，于是就有久远澪绿色小猪二创了。——百度贴吧《[https://tieba.baidu.com/p/10961734389 关于久远澪的若干条冷知识]》&amp;lt;/ref&amp;gt;、哈基瓜&amp;lt;ref&amp;gt;发色为蜜瓜色，首播将哈密瓜念为哈基瓜，故得此名。&amp;lt;/ref&amp;gt;&lt;br /&gt;
| label4 = 瞳色&lt;br /&gt;
| data4 = 胭脂粉&lt;br /&gt;
| label5 = 发色&lt;br /&gt;
| data5 = 浅蜜瓜绿&lt;br /&gt;
| label6 = 种族&lt;br /&gt;
| data6 = 数字生命.exe&lt;br /&gt;
| label7 = 萌点&lt;br /&gt;
| data7 = 萌音、多重人格&lt;br /&gt;
| label8 = 身高&lt;br /&gt;
| data8 = 156cm&lt;br /&gt;
| label9 = 年龄&lt;br /&gt;
| data9 = 17岁→0岁&lt;br /&gt;
&lt;br /&gt;
| header10 = 活动信息&lt;br /&gt;
| label11 = 个人状态&lt;br /&gt;
| data11 = 活动中&lt;br /&gt;
| label12 = 语言&lt;br /&gt;
| data12 = 汉语&lt;br /&gt;
| label13 = 代表色&lt;br /&gt;
| data13 = &amp;lt;nowiki&amp;gt;#F1F8E6&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
| label14 = 幸运数字&lt;br /&gt;
| data14 = 7&lt;br /&gt;
| label15 = 粉丝勋章&lt;br /&gt;
| data15 = 澪距离&lt;br /&gt;
| label16 = Emoji&lt;br /&gt;
| data16 = 🍈、∞&amp;lt;ref&amp;gt;角色千岁的代表符号。&amp;lt;/ref&amp;gt;&lt;br /&gt;
| label17 = Tag&lt;br /&gt;
| data17 = [https://www.bilibili.com/v/topic/detail?topic_id=1344246 #久远澪的数据库]&lt;br /&gt;
&lt;br /&gt;
| header18 = 人际关系&lt;br /&gt;
| label19 = 形象设计&lt;br /&gt;
| data19 = 9on0&lt;br /&gt;
| label20 = Live2D&lt;br /&gt;
| data20 = 黄泉月辉夜&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
! 9on0 &lt;br /&gt;
|-&lt;br /&gt;
| [[File:图片]]&lt;br /&gt;
|-&lt;br /&gt;
| something&lt;br /&gt;
|-&lt;br /&gt;
! 基本信息 &lt;br /&gt;
|-&lt;br /&gt;
| 生日&lt;br /&gt;
|-&lt;br /&gt;
| something&lt;br /&gt;
|-&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
澪考子必读[https://tieba.baidu.com/p/10961734389?see_lz=1]&lt;br /&gt;
&lt;br /&gt;
神秘账号&amp;lt;ref&amp;gt;[https://space.bilibili.com/3707034304252555 小说家的草稿纸]&amp;lt;/ref&amp;gt;&lt;br /&gt;
&lt;br /&gt;
文件上传功能已禁用？&lt;br /&gt;
&lt;br /&gt;
↑已修复，by傻卵站长&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&amp;lt;ruby&amp;gt;久远澪&amp;lt;rt&amp;gt;大绿猪&amp;lt;/rt&amp;gt;&amp;lt;/ruby&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==註釋==&lt;br /&gt;
&amp;lt;references /&amp;gt;&lt;/div&gt;</summary>
		<author><name>DoubleCircle</name></author>
	</entry>
	<entry>
		<id>https://9on0wiki.gunmu.dns.navy/index.php?title=User_talk:DoubleCircle&amp;diff=768</id>
		<title>User talk:DoubleCircle</title>
		<link rel="alternate" type="text/html" href="https://9on0wiki.gunmu.dns.navy/index.php?title=User_talk:DoubleCircle&amp;diff=768"/>
		<updated>2026-08-27T01:20:25Z</updated>

		<summary type="html">&lt;p&gt;DoubleCircle：​创建页面，内容为“==欢迎== 欢迎来到我的讨论页！如您在编辑中遇到问题，或对页面样式有建议，欢迎在此留言反馈。我会在职责范围内尽力协助，也请各位不吝赐教。”&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;==欢迎==&lt;br /&gt;
欢迎来到我的讨论页！如您在编辑中遇到问题，或对页面样式有建议，欢迎在此留言反馈。我会在职责范围内尽力协助，也请各位不吝赐教。&lt;/div&gt;</summary>
		<author><name>DoubleCircle</name></author>
	</entry>
	<entry>
		<id>https://9on0wiki.gunmu.dns.navy/index.php?title=User:DoubleCircle&amp;diff=767</id>
		<title>User:DoubleCircle</title>
		<link rel="alternate" type="text/html" href="https://9on0wiki.gunmu.dns.navy/index.php?title=User:DoubleCircle&amp;diff=767"/>
		<updated>2026-08-27T01:17:32Z</updated>

		<summary type="html">&lt;p&gt;DoubleCircle：​创建页面，内容为“==个人介绍==  AKA: 画圆圈的圈圈  自愿&amp;lt;s&amp;gt;遭陷害&amp;lt;/s&amp;gt;参与遗闻之钟计划  目前进行的工作有维护久远澪Wiki的页面管理和基础模板等  ==贡献列表==  [{{fullurl:Special:Contributions/DoubleCircle|namespace=0}} 主命名空间贡献]  [{{fullurl:Special:Contributions/DoubleCircle|namespace=10}} 模板贡献]  [{{fullurl:Special:Contributions/DoubleCircle|namespace=828}} 模块贡献]  [{{fullurl:Special:Contributions/Doub…”&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;==个人介绍==&lt;br /&gt;
&lt;br /&gt;
AKA: 画圆圈的圈圈&lt;br /&gt;
&lt;br /&gt;
自愿&amp;lt;s&amp;gt;遭陷害&amp;lt;/s&amp;gt;参与[[遗闻之钟计划]]&lt;br /&gt;
&lt;br /&gt;
目前进行的工作有维护久远澪Wiki的页面管理和基础模板等&lt;br /&gt;
&lt;br /&gt;
==贡献列表==&lt;br /&gt;
&lt;br /&gt;
[{{fullurl:Special:Contributions/DoubleCircle|namespace=0}} 主命名空间贡献]&lt;br /&gt;
&lt;br /&gt;
[{{fullurl:Special:Contributions/DoubleCircle|namespace=10}} 模板贡献]&lt;br /&gt;
&lt;br /&gt;
[{{fullurl:Special:Contributions/DoubleCircle|namespace=828}} 模块贡献]&lt;br /&gt;
&lt;br /&gt;
[{{fullurl:Special:Contributions/DoubleCircle|namespace=274}} 微件贡献]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==反馈和讨论==&lt;br /&gt;
&lt;br /&gt;
欢迎在我编辑下的页面反馈意见，或前往[[用户讨论:DoubleCircle|讨论页面]]评论&lt;/div&gt;</summary>
		<author><name>DoubleCircle</name></author>
	</entry>
	<entry>
		<id>https://9on0wiki.gunmu.dns.navy/index.php?title=9on0_System&amp;diff=766</id>
		<title>9on0 System</title>
		<link rel="alternate" type="text/html" href="https://9on0wiki.gunmu.dns.navy/index.php?title=9on0_System&amp;diff=766"/>
		<updated>2026-08-27T00:51:41Z</updated>

		<summary type="html">&lt;p&gt;DoubleCircle：​&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{正在施工|[[User:DoubleCircle|DoubleCircle]]（[[User talk:DoubleCircle|留言]]）|}}&lt;br /&gt;
{{需要帮助}}&lt;/div&gt;</summary>
		<author><name>DoubleCircle</name></author>
	</entry>
	<entry>
		<id>https://9on0wiki.gunmu.dns.navy/index.php?title=Category:%E6%AD%A3%E5%9C%A8%E6%96%BD%E5%B7%A5&amp;diff=765</id>
		<title>Category:正在施工</title>
		<link rel="alternate" type="text/html" href="https://9on0wiki.gunmu.dns.navy/index.php?title=Category:%E6%AD%A3%E5%9C%A8%E6%96%BD%E5%B7%A5&amp;diff=765"/>
		<updated>2026-08-27T00:49:44Z</updated>

		<summary type="html">&lt;p&gt;DoubleCircle：​创建页面，内容为“本目录下是正在施工的词条，欢迎各位前往提交意见或修改，但请注意不要同时修改，避免撞车”&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;本目录下是正在施工的词条，欢迎各位前往提交意见或修改，但请注意不要同时修改，避免撞车&lt;/div&gt;</summary>
		<author><name>DoubleCircle</name></author>
	</entry>
	<entry>
		<id>https://9on0wiki.gunmu.dns.navy/index.php?title=Category:%E9%9C%80%E8%A6%81%E5%B8%AE%E5%8A%A9&amp;diff=764</id>
		<title>Category:需要帮助</title>
		<link rel="alternate" type="text/html" href="https://9on0wiki.gunmu.dns.navy/index.php?title=Category:%E9%9C%80%E8%A6%81%E5%B8%AE%E5%8A%A9&amp;diff=764"/>
		<updated>2026-08-27T00:48:11Z</updated>

		<summary type="html">&lt;p&gt;DoubleCircle：​&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;本目录下是当前wiki中需要帮助的词条，欢迎各位前往编辑&lt;/div&gt;</summary>
		<author><name>DoubleCircle</name></author>
	</entry>
	<entry>
		<id>https://9on0wiki.gunmu.dns.navy/index.php?title=Category:%E9%9C%80%E8%A6%81%E5%B8%AE%E5%8A%A9&amp;diff=763</id>
		<title>Category:需要帮助</title>
		<link rel="alternate" type="text/html" href="https://9on0wiki.gunmu.dns.navy/index.php?title=Category:%E9%9C%80%E8%A6%81%E5%B8%AE%E5%8A%A9&amp;diff=763"/>
		<updated>2026-08-27T00:47:04Z</updated>

		<summary type="html">&lt;p&gt;DoubleCircle：​创建页面，内容为“ 包含{{需要帮助}}的目录”&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;[[9on0 System]]&lt;/div&gt;</summary>
		<author><name>DoubleCircle</name></author>
	</entry>
	<entry>
		<id>https://9on0wiki.gunmu.dns.navy/index.php?title=9on0_System&amp;diff=762</id>
		<title>9on0 System</title>
		<link rel="alternate" type="text/html" href="https://9on0wiki.gunmu.dns.navy/index.php?title=9on0_System&amp;diff=762"/>
		<updated>2026-08-27T00:45:08Z</updated>

		<summary type="html">&lt;p&gt;DoubleCircle：​创建页面，内容为“{{正在施工}} {{需要帮助}}”&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{正在施工}}&lt;br /&gt;
{{需要帮助}}&lt;/div&gt;</summary>
		<author><name>DoubleCircle</name></author>
	</entry>
	<entry>
		<id>https://9on0wiki.gunmu.dns.navy/index.php?title=Template:%E9%9C%80%E8%A6%81%E5%B8%AE%E5%8A%A9/doc&amp;diff=761</id>
		<title>Template:需要帮助/doc</title>
		<link rel="alternate" type="text/html" href="https://9on0wiki.gunmu.dns.navy/index.php?title=Template:%E9%9C%80%E8%A6%81%E5%B8%AE%E5%8A%A9/doc&amp;diff=761"/>
		<updated>2026-08-27T00:43:42Z</updated>

		<summary type="html">&lt;p&gt;DoubleCircle：​导入1个版本&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;在页面起始部位或者任意章节开始处插入&amp;lt;nowiki&amp;gt;{{&amp;lt;/nowiki&amp;gt;&#039;&#039;&#039;需要帮助&#039;&#039;&#039;&amp;lt;nowiki&amp;gt;}}&amp;lt;/nowiki&amp;gt; 来标记当前页面亟需改进。&lt;br /&gt;
*本模板同时会为本页面添加一个名为“需要帮助的分类”&lt;br /&gt;
===语法===&lt;br /&gt;
{{需要帮助|[[用户:SerGawen|SerGawen]]（[[用户讨论:SerGawen|讨论]]）}}&lt;br /&gt;
&amp;lt;pre&amp;gt;{{需要帮助}} 或者 {{需要帮助|自定义文字}}&amp;lt;/pre&amp;gt;&lt;br /&gt;
&amp;lt;pre&amp;gt;{{需要帮助|~~~}}带有个人签名的用法&amp;lt;/pre&amp;gt;&lt;br /&gt;
===注释===&lt;br /&gt;
本模板通过[[template:Mbox]]来生成&lt;/div&gt;</summary>
		<author><name>DoubleCircle</name></author>
	</entry>
	<entry>
		<id>https://9on0wiki.gunmu.dns.navy/index.php?title=Template:%E9%9C%80%E8%A6%81%E5%B8%AE%E5%8A%A9&amp;diff=759</id>
		<title>Template:需要帮助</title>
		<link rel="alternate" type="text/html" href="https://9on0wiki.gunmu.dns.navy/index.php?title=Template:%E9%9C%80%E8%A6%81%E5%B8%AE%E5%8A%A9&amp;diff=759"/>
		<updated>2026-08-27T00:43:42Z</updated>

		<summary type="html">&lt;p&gt;DoubleCircle：​导入1个版本&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&amp;lt;includeonly&amp;gt;{{Mbox&lt;br /&gt;
 |type  = help&lt;br /&gt;
 |text = &amp;lt;div class=&amp;quot;autoconfmessage&amp;quot;&amp;gt;&amp;lt;/div&amp;gt;这{{#if: {{{section|}}} |段文字|篇文章}}需要改进。你可以帮助{{SITENAME}}来 [{{fullurl:{{FULLPAGENAME}}|veaction=edit}} 编辑它]。{{#IF: {{{1|}}} |&amp;lt;br&amp;gt;{{{1}}} }}&lt;br /&gt;
}}[[Category:需要帮助]]&amp;lt;/includeonly&amp;gt;&amp;lt;noinclude&amp;gt;{{优质模板|功能}}{{documentation}}&amp;lt;/noinclude&amp;gt;&amp;lt;noinclude&amp;gt;[[Category:huiji template]]{{DEFAULTSORT:Xuyaobangzhu}}&amp;lt;/noinclude&amp;gt;&amp;lt;noinclude&amp;gt;&lt;br /&gt;
&amp;lt;templatedata&amp;gt;&lt;br /&gt;
{&lt;br /&gt;
	&amp;quot;params&amp;quot;: {},&lt;br /&gt;
	&amp;quot;description&amp;quot;: &amp;quot;本模版用于在页面起始部位或者任意章节开始处插入{{需要帮助}} 来标记当前页面亟需改进。\n详细信息与案例请前往https://templatemanager.huiji.wiki/wiki/%E6%A8%A1%E6%9D%BF:%E9%9C%80%E8%A6%81%E5%B8%AE%E5%8A%A9&amp;quot;&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/templatedata&amp;gt;&lt;br /&gt;
&amp;lt;/noinclude&amp;gt;&lt;/div&gt;</summary>
		<author><name>DoubleCircle</name></author>
	</entry>
	<entry>
		<id>https://9on0wiki.gunmu.dns.navy/index.php?title=Template:%E6%AD%A3%E5%9C%A8%E6%96%BD%E5%B7%A5/doc&amp;diff=757</id>
		<title>Template:正在施工/doc</title>
		<link rel="alternate" type="text/html" href="https://9on0wiki.gunmu.dns.navy/index.php?title=Template:%E6%AD%A3%E5%9C%A8%E6%96%BD%E5%B7%A5/doc&amp;diff=757"/>
		<updated>2026-08-27T00:38:11Z</updated>

		<summary type="html">&lt;p&gt;DoubleCircle：​导入1个版本&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;在页面起始部位插入&amp;lt;nowiki&amp;gt;{{&amp;lt;/nowiki&amp;gt;&#039;&#039;&#039;正在施工&#039;&#039;&#039;&amp;lt;nowiki&amp;gt;}}&amp;lt;/nowiki&amp;gt; 来标记当前页面已有人进行编辑，以避免编辑冲突。&lt;br /&gt;
*本模板同时会为本页面添加一个名为“正在施工”的分类&lt;br /&gt;
===语法===&lt;br /&gt;
{{正在施工|[[用户:SerGawen|SerGawen]]（[[用户讨论:SerGawen|讨论]]）|已占坑，勿抢！}}&lt;br /&gt;
&amp;lt;pre&amp;gt;{{正在施工}} 或者 {{正在施工|自定义文字}}&amp;lt;/pre&amp;gt;&lt;br /&gt;
&amp;lt;pre&amp;gt;{{正在施工|~~~|自定义文字}}带有个人签名的用法&amp;lt;/pre&amp;gt;&lt;br /&gt;
===注释===&lt;br /&gt;
本模板通过[[template:Mbox]]来生成&lt;/div&gt;</summary>
		<author><name>DoubleCircle</name></author>
	</entry>
	<entry>
		<id>https://9on0wiki.gunmu.dns.navy/index.php?title=Template:Mbox&amp;diff=755</id>
		<title>Template:Mbox</title>
		<link rel="alternate" type="text/html" href="https://9on0wiki.gunmu.dns.navy/index.php?title=Template:Mbox&amp;diff=755"/>
		<updated>2026-08-27T00:38:11Z</updated>

		<summary type="html">&lt;p&gt;DoubleCircle：​导入1个版本&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&amp;lt;noinclude&amp;gt;[[Category:huiji template]]&amp;lt;/noinclude&amp;gt;&lt;br /&gt;
&amp;lt;includeonly&amp;gt;&amp;lt;div class=&amp;quot;mbox&amp;quot; style=&amp;quot;overflow:auto;margin:0.5em auto;border-left-width:10px;{{{style|}}}&amp;quot; class=&amp;quot;well quote-{{#switch:{{{border|}}}&lt;br /&gt;
  | default     = primary&lt;br /&gt;
  | primary     = primary&lt;br /&gt;
  | success     = success&lt;br /&gt;
  | info        = info&lt;br /&gt;
  | warning     = warning&lt;br /&gt;
  | danger      = danger&lt;br /&gt;
  | #default    = primary}}&amp;quot;&amp;gt;&amp;lt;div style=&amp;quot;vertical-align:top;display:inline-block;width:20px;&amp;quot;&amp;gt;{{#if:{{{image|}}}   &lt;br /&gt;
  |{{{image}}}&lt;br /&gt;
  | {{#switch:{{{type|}}}     &lt;br /&gt;
  | delete     =&amp;lt;i class=&amp;quot;fa fa-times&amp;quot; style=&amp;quot;font-size:20px;&amp;quot;&amp;gt;&amp;lt;/i&amp;gt;&lt;br /&gt;
  | content    =&amp;lt;i class=&amp;quot;fa fa-exclamation-triangle&amp;quot; style=&amp;quot;font-size:20px;&amp;quot;&amp;gt;&amp;lt;/i&amp;gt;&lt;br /&gt;
  | style      = &amp;lt;i class=&amp;quot;fa fa-css3&amp;quot; style=&amp;quot;font-size:20px;&amp;quot;&amp;gt;&amp;lt;/i&amp;gt;&lt;br /&gt;
  | move       =&amp;lt;i class=&amp;quot;fa fa-share&amp;quot; style=&amp;quot;font-size:20px;&amp;quot;&amp;gt;&amp;lt;/i&amp;gt;&lt;br /&gt;
  | protected  =&amp;lt;i class=&amp;quot;fa fa-lock&amp;quot; style=&amp;quot;font-size:20px;&amp;quot;&amp;gt;&amp;lt;/i&amp;gt;&lt;br /&gt;
  | help  =&amp;lt;i class=&amp;quot;fa fa-hand-paper-o&amp;quot; style=&amp;quot;font-size:20px;&amp;quot;&amp;gt;&amp;lt;/i&amp;gt;&lt;br /&gt;
  | expand  =&amp;lt;i class=&amp;quot;fa fa-expand&amp;quot; style=&amp;quot;font-size:20px;&amp;gt;&amp;lt;/i&amp;gt;&lt;br /&gt;
  | #default   =&amp;lt;i class=&amp;quot;fa fa-pencil&amp;quot; style=&amp;quot;font-size:20px;&amp;quot;&amp;gt;&amp;lt;/i&amp;gt;}}}}&amp;lt;/div&amp;gt;&lt;br /&gt;
&amp;lt;div style=&amp;quot;display:inline-block;font-size:14px;border: none; padding: 0.25em 0.9em 0.25em 0; width: 75%;margin-left:0.5em;{{{text-style|}}}&amp;quot;&amp;gt; {{{text|No text supplied}}}&amp;lt;/div&amp;gt;&amp;lt;/div&amp;gt;&amp;lt;/includeonly&amp;gt;&amp;lt;noinclude&amp;gt;{{优质模板|功能}}{{documentation}}&amp;lt;/noinclude&amp;gt;&amp;lt;noinclude&amp;gt;&lt;br /&gt;
&amp;lt;templatedata&amp;gt;&lt;br /&gt;
{&lt;br /&gt;
	&amp;quot;params&amp;quot;: {&lt;br /&gt;
		&amp;quot;style&amp;quot;: {},&lt;br /&gt;
		&amp;quot;border&amp;quot;: {&lt;br /&gt;
			&amp;quot;description&amp;quot;: &amp;quot;可选值：default、primary、success&amp;quot;,&lt;br /&gt;
			&amp;quot;example&amp;quot;: &amp;quot;primary&amp;quot;,&lt;br /&gt;
			&amp;quot;type&amp;quot;: &amp;quot;string&amp;quot;,&lt;br /&gt;
			&amp;quot;required&amp;quot;: true,&lt;br /&gt;
			&amp;quot;suggested&amp;quot;: true&lt;br /&gt;
		},&lt;br /&gt;
		&amp;quot;image&amp;quot;: {},&lt;br /&gt;
		&amp;quot;type&amp;quot;: {&lt;br /&gt;
			&amp;quot;description&amp;quot;: &amp;quot;可选值：default、delete、content、style、move、protected、help、expand&amp;quot;&lt;br /&gt;
		},&lt;br /&gt;
		&amp;quot;text-style&amp;quot;: {},&lt;br /&gt;
		&amp;quot;text&amp;quot;: {}&lt;br /&gt;
	},&lt;br /&gt;
	&amp;quot;description&amp;quot;: &amp;quot;本模板用来生成各种页面顶部通知&amp;quot;&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/templatedata&amp;gt;&lt;br /&gt;
&amp;lt;/noinclude&amp;gt;&lt;/div&gt;</summary>
		<author><name>DoubleCircle</name></author>
	</entry>
	<entry>
		<id>https://9on0wiki.gunmu.dns.navy/index.php?title=Template:%E6%AD%A3%E5%9C%A8%E6%96%BD%E5%B7%A5&amp;diff=753</id>
		<title>Template:正在施工</title>
		<link rel="alternate" type="text/html" href="https://9on0wiki.gunmu.dns.navy/index.php?title=Template:%E6%AD%A3%E5%9C%A8%E6%96%BD%E5%B7%A5&amp;diff=753"/>
		<updated>2026-08-27T00:38:11Z</updated>

		<summary type="html">&lt;p&gt;DoubleCircle：​导入1个版本&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&amp;lt;includeonly&amp;gt;{{Mbox&lt;br /&gt;
 |border = warning&lt;br /&gt;
 |text = 这篇文章正在被&#039;&#039;&#039;编辑&#039;&#039;&#039;中，编辑完成前请不要同时编辑，以免撞车。此处查看[[:Category:需要帮助|需要帮助的词条列表]]。编辑者签名:{{#if:{{{1|}}}|{{{1}}} }}，本提示有效期15天，过期请协助解除。{{#IF: {{{2|}}} |&amp;lt;br&amp;gt;&amp;lt;b&amp;gt;{{{2}}}&amp;lt;/b&amp;gt;}}&lt;br /&gt;
}}[[Category:正在施工]]&amp;lt;/includeonly&amp;gt;&amp;lt;noinclude&amp;gt;&amp;lt;noinclude&amp;gt;{{documentation}}[[Category:huiji template]]&amp;lt;/noinclude&amp;gt;&amp;lt;noinclude&amp;gt;&lt;br /&gt;
&amp;lt;templatedata&amp;gt;&lt;br /&gt;
{&lt;br /&gt;
	&amp;quot;params&amp;quot;: {},&lt;br /&gt;
	&amp;quot;description&amp;quot;: &amp;quot;本模版用于在页面起始部位插入{{正在施工}} 来标记当前页面已有人进行编辑，以避免编辑冲突。\n详细信息与案例请前往https://templatemanager.huiji.wiki/wiki/%E6%A8%A1%E6%9D%BF:%E6%AD%A3%E5%9C%A8%E6%96%BD%E5%B7%A5&amp;quot;&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/templatedata&amp;gt;&lt;br /&gt;
&amp;lt;/noinclude&amp;gt;&lt;/div&gt;</summary>
		<author><name>DoubleCircle</name></author>
	</entry>
	<entry>
		<id>https://9on0wiki.gunmu.dns.navy/index.php?title=Talk:%E4%B9%85%E8%BF%9C%E6%BE%AA&amp;diff=751</id>
		<title>Talk:久远澪</title>
		<link rel="alternate" type="text/html" href="https://9on0wiki.gunmu.dns.navy/index.php?title=Talk:%E4%B9%85%E8%BF%9C%E6%BE%AA&amp;diff=751"/>
		<updated>2026-08-27T00:24:35Z</updated>

		<summary type="html">&lt;p&gt;DoubleCircle：​/* 有关深色模式的适配 */ 回复&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;== 有关深色模式的适配 ==&lt;br /&gt;
&lt;br /&gt;
本页面使用的 Infobox 模板在深色模式下的栏目文字几乎不可读，考虑修改层叠样式表以实现自适应？ [[User:Veila|Veila]]（[[User talk:Veila|留言]]） 2026年8月26日 (三) 15:59 (UTC)&lt;br /&gt;
&lt;br /&gt;
:已兼容深色模式，如果对深色模式配色方案有建议，欢迎前往[[MediaWiki:common.css]]讨论 [[User:DoubleCircle|DoubleCircle]]（[[User talk:DoubleCircle|留言]]） 2026年8月27日 (四) 00:24 (UTC)&lt;/div&gt;</summary>
		<author><name>DoubleCircle</name></author>
	</entry>
	<entry>
		<id>https://9on0wiki.gunmu.dns.navy/index.php?title=MediaWiki:Common.css&amp;diff=750</id>
		<title>MediaWiki:Common.css</title>
		<link rel="alternate" type="text/html" href="https://9on0wiki.gunmu.dns.navy/index.php?title=MediaWiki:Common.css&amp;diff=750"/>
		<updated>2026-08-27T00:22:58Z</updated>

		<summary type="html">&lt;p&gt;DoubleCircle：​&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;:root {&lt;br /&gt;
    /* ---------------- 主题色 · 浅蜜瓜绿系 ---------------- */&lt;br /&gt;
    --color-theme:          #F1F8E6;  /* 久远澪代表色 · 页面/信息框底色 */&lt;br /&gt;
    --color-theme-soft:     #F9FCF4;  /* 更浅底色 · 卡片渐变顶部 */&lt;br /&gt;
    --color-theme-deep:     #e0efd0;  /* 稍深浅绿 · 标签/分区底色 */&lt;br /&gt;
&lt;br /&gt;
    /* ---------------- 主强调色 · 绿色系 ---------------- */&lt;br /&gt;
    --color-primary:        #8FBC8F;  /* 主强调色 · 标题栏/按钮/边框 */&lt;br /&gt;
    --color-primary-hover:  #7AA87A;  /* 主强调色 · 悬停加深 */&lt;br /&gt;
    --color-primary-deep:   #2E6B45;  /* 深绿 · 标题/强调文字 */&lt;br /&gt;
    --color-primary-light:  #D4E8C0;  /* 浅绿 · 卡片/信息框边框 */&lt;br /&gt;
    --color-primary-lite:   #DCEFDC;  /* 更浅绿 · 装饰渐变 */&lt;br /&gt;
&lt;br /&gt;
    /* ---------------- 暖橙强调色 · 点缀 ---------------- */&lt;br /&gt;
    --color-accent:         #E8B96A;  /* 暖橙 · 强调卡片/点缀 */&lt;br /&gt;
    --color-accent-light:   #F3D9AE;  /* 暖橙浅色 · 渐变 */&lt;br /&gt;
    --color-accent-deep:    #8A5A1E;  /* 暖橙深色 · 文字 */&lt;br /&gt;
    --color-accent-bg:      #FFF8EF;  /* 暖橙背景 */&lt;br /&gt;
    --color-accent-bg-soft: #FDF2E3;  /* 暖橙背景 · 渐变底部 */&lt;br /&gt;
    --color-accent-border:  #E8CFA8;  /* 暖橙边框 */&lt;br /&gt;
&lt;br /&gt;
    /* ---------------- 文字 ---------------- */&lt;br /&gt;
    --color-text:           #333333;  /* 正文 */&lt;br /&gt;
    --color-text-sub:       #5A5A5A;  /* 次要文字 */&lt;br /&gt;
    --color-text-muted:     #8A8A8A;  /* 弱化/注释文字 */&lt;br /&gt;
    --color-text-invert:    #FFFFFF;  /* 强调色底色上的文字 */&lt;br /&gt;
&lt;br /&gt;
    /* ---------------- 语义色 · 与主题协调 ---------------- */&lt;br /&gt;
    --color-info-bg:        #E9F2F7;  /* 信息提示背景 */&lt;br /&gt;
    --color-info-border:    #B9D5E1;  /* 信息提示边框 */&lt;br /&gt;
    --color-info-text:      #2F5E74;  /* 信息提示文字 */&lt;br /&gt;
    --color-success-bg:     #EEF7E4;  /* 成功提示背景 */&lt;br /&gt;
    --color-success-border: #C9E2AF;  /* 成功提示边框 */&lt;br /&gt;
    --color-success-text:   #3E6B2F;  /* 成功提示文字 */&lt;br /&gt;
    --color-warning-bg:     #FBF3E4;  /* 警告提示背景 */&lt;br /&gt;
    --color-warning-border: #EAD5A6;  /* 警告提示边框 */&lt;br /&gt;
    --color-warning-text:   #7A5C22;  /* 警告提示文字 */&lt;br /&gt;
    --color-error-bg:       #FAECEA;  /* 错误提示背景 */&lt;br /&gt;
    --color-error-border:   #E4B9B4;  /* 错误提示边框 */&lt;br /&gt;
    --color-error-text:     #8A3B36;  /* 错误提示文字 */&lt;br /&gt;
&lt;br /&gt;
    /* ---------------- 中性色 ---------------- */&lt;br /&gt;
    --color-border:         #DDDDDD;  /* 通用边框 */&lt;br /&gt;
    --color-bg:             #FFFFFF;  /* 卡片/表格底色 */&lt;br /&gt;
    --color-bg-subtle:      #FAFAF7;  /* 轻微底纹 */&lt;br /&gt;
&lt;br /&gt;
    /* ---------------- 投影 · 绿色系 ---------------- */&lt;br /&gt;
    --shadow-card:          0 1px 3px rgba(143, 188, 143, .25);&lt;br /&gt;
    --shadow-card-hover:    0 4px 14px rgba(143, 188, 143, .4);&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
@media screen {&lt;br /&gt;
    html.skin-theme-clientpref-night {&lt;br /&gt;
        /* ---------------- 主题色 · 墨绿系 ---------------- */&lt;br /&gt;
        --color-theme:          #1D2618;  /* 深色页面底色（墨绿） */&lt;br /&gt;
        --color-theme-soft:     #232D1D;  /* 更浅一档深色（卡片渐变顶部） */&lt;br /&gt;
        --color-theme-deep:     #303D2A;  /* 稍亮深绿（标签/分区底色，与底色区分） */&lt;br /&gt;
&lt;br /&gt;
        /* ---------------- 主强调色 · 绿色系 ---------------- */&lt;br /&gt;
        --color-primary:        #7FAA85;  /* 主强调色（深色下略提亮） */&lt;br /&gt;
        --color-primary-hover:  #93BC98;  /* 主强调色 · 悬停提亮 */&lt;br /&gt;
        --color-primary-deep:   #A9CFAE;  /* 亮绿 · 标题/强调文字 */&lt;br /&gt;
        --color-primary-light:  #3A4736;  /* 深绿 · 卡片/信息框边框 */&lt;br /&gt;
        --color-primary-lite:   #33402F;  /* 更暗绿 · 装饰渐变 */&lt;br /&gt;
&lt;br /&gt;
        /* ---------------- 暖橙强调色 · 点缀 ---------------- */&lt;br /&gt;
        --color-accent:         #E0A85C;  /* 暖橙 · 强调卡片/点缀 */&lt;br /&gt;
        --color-accent-light:   #C99A52;  /* 暖橙浅色 · 渐变 */&lt;br /&gt;
        --color-accent-deep:    #F0C48A;  /* 暖橙浅色 · 文字 */&lt;br /&gt;
        --color-accent-bg:      #2E2719;  /* 暖橙深色背景 */&lt;br /&gt;
        --color-accent-bg-soft: #382D1C;  /* 暖橙背景 · 渐变底部 */&lt;br /&gt;
        --color-accent-border:  #57451F;  /* 暖橙深色边框 */&lt;br /&gt;
&lt;br /&gt;
        /* ---------------- 文字 ---------------- */&lt;br /&gt;
        --color-text:           #E8EDE3;  /* 正文（浅色） */&lt;br /&gt;
        --color-text-sub:       #B8C2B0;  /* 次要文字 */&lt;br /&gt;
        --color-text-muted:     #8A9484;  /* 弱化/注释文字 */&lt;br /&gt;
        --color-text-invert:    #FFFFFF;  /* 强调色底色上的文字 */&lt;br /&gt;
&lt;br /&gt;
        /* ---------------- 语义色 · 深色 ---------------- */&lt;br /&gt;
        --color-info-bg:        #1D2A33;  /* 信息提示背景 */&lt;br /&gt;
        --color-info-border:    #2E4656;  /* 信息提示边框 */&lt;br /&gt;
        --color-info-text:      #9CC7DE;  /* 信息提示文字 */&lt;br /&gt;
        --color-success-bg:     #1E2A1A;  /* 成功提示背景 */&lt;br /&gt;
        --color-success-border: #33502E;  /* 成功提示边框 */&lt;br /&gt;
        --color-success-text:   #A8D29C;  /* 成功提示文字 */&lt;br /&gt;
        --color-warning-bg:     #2E2615;  /* 警告提示背景 */&lt;br /&gt;
        --color-warning-border: #57481F;  /* 警告提示边框 */&lt;br /&gt;
        --color-warning-text:   #E3C07A;  /* 警告提示文字 */&lt;br /&gt;
        --color-error-bg:       #301D1C;  /* 错误提示背景 */&lt;br /&gt;
        --color-error-border:   #57302C;  /* 错误提示边框 */&lt;br /&gt;
        --color-error-text:     #E09A94;  /* 错误提示文字 */&lt;br /&gt;
&lt;br /&gt;
        /* ---------------- 中性色 ---------------- */&lt;br /&gt;
        --color-border:         #3A3A3A;  /* 通用边框 */&lt;br /&gt;
        --color-bg:             #161A14;  /* 卡片/表格底色 */&lt;br /&gt;
        --color-bg-subtle:      #20251C;  /* 轻微底纹 */&lt;br /&gt;
&lt;br /&gt;
        /* ---------------- 投影 · 深色下用黑色 ---------------- */&lt;br /&gt;
        --shadow-card:          0 1px 3px rgba(0, 0, 0, .4);&lt;br /&gt;
        --shadow-card-hover:    0 4px 14px rgba(0, 0, 0, .55);&lt;br /&gt;
    }&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
/* ==========================================================================&lt;br /&gt;
   Infobox 统一配色&lt;br /&gt;
   ========================================================================== */&lt;br /&gt;
.infobox {&lt;br /&gt;
    float: right;&lt;br /&gt;
    margin-left: 10px;&lt;br /&gt;
    max-width: 20em;&lt;br /&gt;
    text-align: center;&lt;br /&gt;
    color: var(--color-text);&lt;br /&gt;
    background-color: var(--color-theme);&lt;br /&gt;
    /* 整体浅绿背景 */&lt;br /&gt;
    border: 1px solid var(--color-primary-light);&lt;br /&gt;
    /* 浅绿边框，与卡片风格呼应 */&lt;br /&gt;
    border-collapse: collapse;&lt;br /&gt;
    box-shadow: var(--shadow-card);&lt;br /&gt;
    /* 轻投影，增加层次 */&lt;br /&gt;
    font-size: 88%;&lt;br /&gt;
    line-height: 1.5em;&lt;br /&gt;
    clear: right;&lt;br /&gt;
    margin-bottom: 1em;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
/* 顶部标题行（above）和分组标题行（header） */&lt;br /&gt;
.infobox .infobox-above,&lt;br /&gt;
.infobox .infobox-header {&lt;br /&gt;
    background-color: var(--color-primary);&lt;br /&gt;
    /* 暗绿色背景 */&lt;br /&gt;
    color: var(--color-text-invert);&lt;br /&gt;
    /* 白色文字 */&lt;br /&gt;
    font-weight: bold;&lt;br /&gt;
    padding: 0.4em 0.2em;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
/* 标签单元格 */&lt;br /&gt;
.infobox .infobox-label {&lt;br /&gt;
    width: 30%;&lt;br /&gt;
    font-weight: bold;&lt;br /&gt;
    background-color: var(--color-theme-deep);&lt;br /&gt;
    /* 比整体背景稍深的浅绿，突出标签 */&lt;br /&gt;
    padding: 0.3em 0.4em;&lt;br /&gt;
    text-align: right;&lt;br /&gt;
    vertical-align: top;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
/* 数据单元格 */&lt;br /&gt;
.infobox .infobox-data {&lt;br /&gt;
    width: 70%;&lt;br /&gt;
    padding: 0.3em 0.4em;&lt;br /&gt;
    text-align: left;&lt;br /&gt;
    vertical-align: top;&lt;br /&gt;
}&lt;/div&gt;</summary>
		<author><name>DoubleCircle</name></author>
	</entry>
	<entry>
		<id>https://9on0wiki.gunmu.dns.navy/index.php?title=MediaWiki:Common.css&amp;diff=749</id>
		<title>MediaWiki:Common.css</title>
		<link rel="alternate" type="text/html" href="https://9on0wiki.gunmu.dns.navy/index.php?title=MediaWiki:Common.css&amp;diff=749"/>
		<updated>2026-08-27T00:17:27Z</updated>

		<summary type="html">&lt;p&gt;DoubleCircle：​&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;:root {&lt;br /&gt;
	color-scheme: light dark;&lt;br /&gt;
	&lt;br /&gt;
    /* ---------------- 主题色 · 浅蜜瓜绿系 ---------------- */&lt;br /&gt;
    --color-theme:          #F1F8E6;  /* 久远澪代表色 · 页面/信息框底色 */&lt;br /&gt;
    --color-theme-soft:     #F9FCF4;  /* 更浅底色 · 卡片渐变顶部 */&lt;br /&gt;
    --color-theme-deep:     #e0efd0;  /* 稍深浅绿 · 标签/分区底色 */&lt;br /&gt;
&lt;br /&gt;
    /* ---------------- 主强调色 · 绿色系 ---------------- */&lt;br /&gt;
    --color-primary:        #8FBC8F;  /* 主强调色 · 标题栏/按钮/边框 */&lt;br /&gt;
    --color-primary-hover:  #7AA87A;  /* 主强调色 · 悬停加深 */&lt;br /&gt;
    --color-primary-deep:   #2E6B45;  /* 深绿 · 标题/强调文字 */&lt;br /&gt;
    --color-primary-light:  #D4E8C0;  /* 浅绿 · 卡片/信息框边框 */&lt;br /&gt;
    --color-primary-lite:   #DCEFDC;  /* 更浅绿 · 装饰渐变 */&lt;br /&gt;
&lt;br /&gt;
    /* ---------------- 暖橙强调色 · 点缀 ---------------- */&lt;br /&gt;
    --color-accent:         #E8B96A;  /* 暖橙 · 强调卡片/点缀 */&lt;br /&gt;
    --color-accent-light:   #F3D9AE;  /* 暖橙浅色 · 渐变 */&lt;br /&gt;
    --color-accent-deep:    #8A5A1E;  /* 暖橙深色 · 文字 */&lt;br /&gt;
    --color-accent-bg:      #FFF8EF;  /* 暖橙背景 */&lt;br /&gt;
    --color-accent-bg-soft: #FDF2E3;  /* 暖橙背景 · 渐变底部 */&lt;br /&gt;
    --color-accent-border:  #E8CFA8;  /* 暖橙边框 */&lt;br /&gt;
&lt;br /&gt;
    /* ---------------- 文字 ---------------- */&lt;br /&gt;
    --color-text:           #333333;  /* 正文 */&lt;br /&gt;
    --color-text-sub:       #5A5A5A;  /* 次要文字 */&lt;br /&gt;
    --color-text-muted:     #8A8A8A;  /* 弱化/注释文字 */&lt;br /&gt;
    --color-text-invert:    #FFFFFF;  /* 强调色底色上的文字 */&lt;br /&gt;
&lt;br /&gt;
    /* ---------------- 语义色 · 与主题协调 ---------------- */&lt;br /&gt;
    --color-info-bg:        #E9F2F7;  /* 信息提示背景 */&lt;br /&gt;
    --color-info-border:    #B9D5E1;  /* 信息提示边框 */&lt;br /&gt;
    --color-info-text:      #2F5E74;  /* 信息提示文字 */&lt;br /&gt;
    --color-success-bg:     #EEF7E4;  /* 成功提示背景 */&lt;br /&gt;
    --color-success-border: #C9E2AF;  /* 成功提示边框 */&lt;br /&gt;
    --color-success-text:   #3E6B2F;  /* 成功提示文字 */&lt;br /&gt;
    --color-warning-bg:     #FBF3E4;  /* 警告提示背景 */&lt;br /&gt;
    --color-warning-border: #EAD5A6;  /* 警告提示边框 */&lt;br /&gt;
    --color-warning-text:   #7A5C22;  /* 警告提示文字 */&lt;br /&gt;
    --color-error-bg:       #FAECEA;  /* 错误提示背景 */&lt;br /&gt;
    --color-error-border:   #E4B9B4;  /* 错误提示边框 */&lt;br /&gt;
    --color-error-text:     #8A3B36;  /* 错误提示文字 */&lt;br /&gt;
&lt;br /&gt;
    /* ---------------- 中性色 ---------------- */&lt;br /&gt;
    --color-border:         #DDDDDD;  /* 通用边框 */&lt;br /&gt;
    --color-bg:             #FFFFFF;  /* 卡片/表格底色 */&lt;br /&gt;
    --color-bg-subtle:      #FAFAF7;  /* 轻微底纹 */&lt;br /&gt;
&lt;br /&gt;
    /* ---------------- 投影 · 绿色系 ---------------- */&lt;br /&gt;
    --shadow-card:          0 1px 3px rgba(143, 188, 143, .25);&lt;br /&gt;
    --shadow-card-hover:    0 4px 14px rgba(143, 188, 143, .4);&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
@media (prefers-color-scheme: dark) {&lt;br /&gt;
    :root {&lt;br /&gt;
        /* ---------------- 主题色 · 墨绿系 ---------------- */&lt;br /&gt;
        --color-theme:          #1D2618;  /* 深色页面底色（墨绿） */&lt;br /&gt;
        --color-theme-soft:     #232D1D;  /* 更浅一档深色（卡片渐变顶部） */&lt;br /&gt;
        --color-theme-deep:     #2A3625;  /* 稍亮深绿（标签/分区底色） */&lt;br /&gt;
&lt;br /&gt;
        /* ---------------- 主强调色 · 绿色系 ---------------- */&lt;br /&gt;
        --color-primary:        #7FAA85;  /* 主强调色（深色下略提亮） */&lt;br /&gt;
        --color-primary-hover:  #93BC98;  /* 主强调色 · 悬停提亮 */&lt;br /&gt;
        --color-primary-deep:   #A9CFAE;  /* 亮绿 · 标题/强调文字 */&lt;br /&gt;
        --color-primary-light:  #3A4736;  /* 深绿 · 卡片/信息框边框 */&lt;br /&gt;
        --color-primary-lite:   #33402F;  /* 更暗绿 · 装饰渐变 */&lt;br /&gt;
&lt;br /&gt;
        /* ---------------- 暖橙强调色 · 点缀 ---------------- */&lt;br /&gt;
        --color-accent:         #E0A85C;  /* 暖橙 · 强调卡片/点缀 */&lt;br /&gt;
        --color-accent-light:   #C99A52;  /* 暖橙浅色 · 渐变 */&lt;br /&gt;
        --color-accent-deep:    #F0C48A;  /* 暖橙浅色 · 文字 */&lt;br /&gt;
        --color-accent-bg:      #2E2719;  /* 暖橙深色背景 */&lt;br /&gt;
        --color-accent-bg-soft: #382D1C;  /* 暖橙背景 · 渐变底部 */&lt;br /&gt;
        --color-accent-border:  #57451F;  /* 暖橙深色边框 */&lt;br /&gt;
&lt;br /&gt;
        /* ---------------- 文字 ---------------- */&lt;br /&gt;
        --color-text:           #E8EDE3;  /* 正文（浅色） */&lt;br /&gt;
        --color-text-sub:       #B8C2B0;  /* 次要文字 */&lt;br /&gt;
        --color-text-muted:     #8A9484;  /* 弱化/注释文字 */&lt;br /&gt;
        --color-text-invert:    #FFFFFF;  /* 强调色底色上的文字 */&lt;br /&gt;
&lt;br /&gt;
        /* ---------------- 语义色 · 深色 ---------------- */&lt;br /&gt;
        --color-info-bg:        #1D2A33;  /* 信息提示背景 */&lt;br /&gt;
        --color-info-border:    #2E4656;  /* 信息提示边框 */&lt;br /&gt;
        --color-info-text:      #9CC7DE;  /* 信息提示文字 */&lt;br /&gt;
        --color-success-bg:     #1E2A1A;  /* 成功提示背景 */&lt;br /&gt;
        --color-success-border: #33502E;  /* 成功提示边框 */&lt;br /&gt;
        --color-success-text:   #A8D29C;  /* 成功提示文字 */&lt;br /&gt;
        --color-warning-bg:     #2E2615;  /* 警告提示背景 */&lt;br /&gt;
        --color-warning-border: #57481F;  /* 警告提示边框 */&lt;br /&gt;
        --color-warning-text:   #E3C07A;  /* 警告提示文字 */&lt;br /&gt;
        --color-error-bg:       #301D1C;  /* 错误提示背景 */&lt;br /&gt;
        --color-error-border:   #57302C;  /* 错误提示边框 */&lt;br /&gt;
        --color-error-text:     #E09A94;  /* 错误提示文字 */&lt;br /&gt;
&lt;br /&gt;
        /* ---------------- 中性色 ---------------- */&lt;br /&gt;
        --color-border:         #3A3A3A;  /* 通用边框 */&lt;br /&gt;
        --color-bg:             #161A14;  /* 卡片/表格底色 */&lt;br /&gt;
        --color-bg-subtle:      #20251C;  /* 轻微底纹 */&lt;br /&gt;
&lt;br /&gt;
        /* ---------------- 投影 · 深色下用黑色 ---------------- */&lt;br /&gt;
        --shadow-card:          0 1px 3px rgba(0, 0, 0, .4);&lt;br /&gt;
        --shadow-card-hover:    0 4px 14px rgba(0, 0, 0, .55);&lt;br /&gt;
    }&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
/* ==========================================================================&lt;br /&gt;
   Infobox 统一配色&lt;br /&gt;
   ========================================================================== */&lt;br /&gt;
.infobox {&lt;br /&gt;
    float: right;&lt;br /&gt;
    margin-left: 10px;&lt;br /&gt;
    max-width: 20em;&lt;br /&gt;
    text-align: center;&lt;br /&gt;
    color: var(--color-text);&lt;br /&gt;
    background-color: var(--color-theme);&lt;br /&gt;
    /* 整体浅绿背景 */&lt;br /&gt;
    border: 1px solid var(--color-primary-light);&lt;br /&gt;
    /* 浅绿边框，与卡片风格呼应 */&lt;br /&gt;
    border-collapse: collapse;&lt;br /&gt;
    box-shadow: var(--shadow-card);&lt;br /&gt;
    /* 轻投影，增加层次 */&lt;br /&gt;
    font-size: 88%;&lt;br /&gt;
    line-height: 1.5em;&lt;br /&gt;
    clear: right;&lt;br /&gt;
    margin-bottom: 1em;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
/* 顶部标题行（above）和分组标题行（header） */&lt;br /&gt;
.infobox .infobox-above,&lt;br /&gt;
.infobox .infobox-header {&lt;br /&gt;
    background-color: var(--color-primary);&lt;br /&gt;
    /* 暗绿色背景 */&lt;br /&gt;
    color: var(--color-text-invert);&lt;br /&gt;
    /* 白色文字 */&lt;br /&gt;
    font-weight: bold;&lt;br /&gt;
    padding: 0.4em 0.2em;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
/* 标签单元格 */&lt;br /&gt;
.infobox .infobox-label {&lt;br /&gt;
    width: 30%;&lt;br /&gt;
    font-weight: bold;&lt;br /&gt;
    background-color: var(--color-theme-deep);&lt;br /&gt;
    /* 比整体背景稍深的浅绿，突出标签 */&lt;br /&gt;
    padding: 0.3em 0.4em;&lt;br /&gt;
    text-align: right;&lt;br /&gt;
    vertical-align: top;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
/* 数据单元格 */&lt;br /&gt;
.infobox .infobox-data {&lt;br /&gt;
    width: 70%;&lt;br /&gt;
    padding: 0.3em 0.4em;&lt;br /&gt;
    text-align: left;&lt;br /&gt;
    vertical-align: top;&lt;br /&gt;
}&lt;/div&gt;</summary>
		<author><name>DoubleCircle</name></author>
	</entry>
	<entry>
		<id>https://9on0wiki.gunmu.dns.navy/index.php?title=MediaWiki:Common.css&amp;diff=748</id>
		<title>MediaWiki:Common.css</title>
		<link rel="alternate" type="text/html" href="https://9on0wiki.gunmu.dns.navy/index.php?title=MediaWiki:Common.css&amp;diff=748"/>
		<updated>2026-08-27T00:13:06Z</updated>

		<summary type="html">&lt;p&gt;DoubleCircle：​&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;:root {&lt;br /&gt;
	color-scheme: light dark;&lt;br /&gt;
	&lt;br /&gt;
    /* ---------------- 主题色 · 浅蜜瓜绿系 ---------------- */&lt;br /&gt;
    --color-theme:          #F1F8E6;  /* 久远澪代表色 · 页面/信息框底色 */&lt;br /&gt;
    --color-theme-soft:     #F9FCF4;  /* 更浅底色 · 卡片渐变顶部 */&lt;br /&gt;
    --color-theme-deep:     #e0efd0;  /* 稍深浅绿 · 标签/分区底色 */&lt;br /&gt;
&lt;br /&gt;
    /* ---------------- 主强调色 · 绿色系 ---------------- */&lt;br /&gt;
    --color-primary:        #8FBC8F;  /* 主强调色 · 标题栏/按钮/边框 */&lt;br /&gt;
    --color-primary-hover:  #7AA87A;  /* 主强调色 · 悬停加深 */&lt;br /&gt;
    --color-primary-deep:   #2E6B45;  /* 深绿 · 标题/强调文字 */&lt;br /&gt;
    --color-primary-light:  #D4E8C0;  /* 浅绿 · 卡片/信息框边框 */&lt;br /&gt;
    --color-primary-lite:   #DCEFDC;  /* 更浅绿 · 装饰渐变 */&lt;br /&gt;
&lt;br /&gt;
    /* ---------------- 暖橙强调色 · 点缀 ---------------- */&lt;br /&gt;
    --color-accent:         #E8B96A;  /* 暖橙 · 强调卡片/点缀 */&lt;br /&gt;
    --color-accent-light:   #F3D9AE;  /* 暖橙浅色 · 渐变 */&lt;br /&gt;
    --color-accent-deep:    #8A5A1E;  /* 暖橙深色 · 文字 */&lt;br /&gt;
    --color-accent-bg:      #FFF8EF;  /* 暖橙背景 */&lt;br /&gt;
    --color-accent-bg-soft: #FDF2E3;  /* 暖橙背景 · 渐变底部 */&lt;br /&gt;
    --color-accent-border:  #E8CFA8;  /* 暖橙边框 */&lt;br /&gt;
&lt;br /&gt;
    /* ---------------- 文字 ---------------- */&lt;br /&gt;
    --color-text:           #333333;  /* 正文 */&lt;br /&gt;
    --color-text-sub:       #5A5A5A;  /* 次要文字 */&lt;br /&gt;
    --color-text-muted:     #8A8A8A;  /* 弱化/注释文字 */&lt;br /&gt;
    --color-text-invert:    #FFFFFF;  /* 强调色底色上的文字 */&lt;br /&gt;
&lt;br /&gt;
    /* ---------------- 语义色 · 与主题协调 ---------------- */&lt;br /&gt;
    --color-info-bg:        #E9F2F7;  /* 信息提示背景 */&lt;br /&gt;
    --color-info-border:    #B9D5E1;  /* 信息提示边框 */&lt;br /&gt;
    --color-info-text:      #2F5E74;  /* 信息提示文字 */&lt;br /&gt;
    --color-success-bg:     #EEF7E4;  /* 成功提示背景 */&lt;br /&gt;
    --color-success-border: #C9E2AF;  /* 成功提示边框 */&lt;br /&gt;
    --color-success-text:   #3E6B2F;  /* 成功提示文字 */&lt;br /&gt;
    --color-warning-bg:     #FBF3E4;  /* 警告提示背景 */&lt;br /&gt;
    --color-warning-border: #EAD5A6;  /* 警告提示边框 */&lt;br /&gt;
    --color-warning-text:   #7A5C22;  /* 警告提示文字 */&lt;br /&gt;
    --color-error-bg:       #FAECEA;  /* 错误提示背景 */&lt;br /&gt;
    --color-error-border:   #E4B9B4;  /* 错误提示边框 */&lt;br /&gt;
    --color-error-text:     #8A3B36;  /* 错误提示文字 */&lt;br /&gt;
&lt;br /&gt;
    /* ---------------- 中性色 ---------------- */&lt;br /&gt;
    --color-border:         #DDDDDD;  /* 通用边框 */&lt;br /&gt;
    --color-bg:             #FFFFFF;  /* 卡片/表格底色 */&lt;br /&gt;
    --color-bg-subtle:      #FAFAF7;  /* 轻微底纹 */&lt;br /&gt;
&lt;br /&gt;
    /* ---------------- 投影 · 绿色系 ---------------- */&lt;br /&gt;
    --shadow-card:          0 1px 3px rgba(143, 188, 143, .25);&lt;br /&gt;
    --shadow-card-hover:    0 4px 14px rgba(143, 188, 143, .4);&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
@media (prefers-color-scheme: dark) {&lt;br /&gt;
    :root {&lt;br /&gt;
        /* ---------------- 主题色 · 墨绿系 ---------------- */&lt;br /&gt;
        --color-theme:          #1D2618;  /* 深色页面底色（墨绿） */&lt;br /&gt;
        --color-theme-soft:     #232D1D;  /* 更浅一档深色（卡片渐变顶部） */&lt;br /&gt;
        --color-theme-deep:     #2A3625;  /* 稍亮深绿（标签/分区底色） */&lt;br /&gt;
&lt;br /&gt;
        /* ---------------- 主强调色 · 绿色系 ---------------- */&lt;br /&gt;
        --color-primary:        #7FAA85;  /* 主强调色（深色下略提亮） */&lt;br /&gt;
        --color-primary-hover:  #93BC98;  /* 主强调色 · 悬停提亮 */&lt;br /&gt;
        --color-primary-deep:   #A9CFAE;  /* 亮绿 · 标题/强调文字 */&lt;br /&gt;
        --color-primary-light:  #3A4736;  /* 深绿 · 卡片/信息框边框 */&lt;br /&gt;
        --color-primary-lite:   #33402F;  /* 更暗绿 · 装饰渐变 */&lt;br /&gt;
&lt;br /&gt;
        /* ---------------- 暖橙强调色 · 点缀 ---------------- */&lt;br /&gt;
        --color-accent:         #E0A85C;  /* 暖橙 · 强调卡片/点缀 */&lt;br /&gt;
        --color-accent-light:   #C99A52;  /* 暖橙浅色 · 渐变 */&lt;br /&gt;
        --color-accent-deep:    #F0C48A;  /* 暖橙浅色 · 文字 */&lt;br /&gt;
        --color-accent-bg:      #2E2719;  /* 暖橙深色背景 */&lt;br /&gt;
        --color-accent-bg-soft: #382D1C;  /* 暖橙背景 · 渐变底部 */&lt;br /&gt;
        --color-accent-border:  #57451F;  /* 暖橙深色边框 */&lt;br /&gt;
&lt;br /&gt;
        /* ---------------- 文字 ---------------- */&lt;br /&gt;
        --color-text:           #E8EDE3;  /* 正文（浅色） */&lt;br /&gt;
        --color-text-sub:       #B8C2B0;  /* 次要文字 */&lt;br /&gt;
        --color-text-muted:     #8A9484;  /* 弱化/注释文字 */&lt;br /&gt;
        --color-text-invert:    #FFFFFF;  /* 强调色底色上的文字 */&lt;br /&gt;
&lt;br /&gt;
        /* ---------------- 语义色 · 深色 ---------------- */&lt;br /&gt;
        --color-info-bg:        #1D2A33;  /* 信息提示背景 */&lt;br /&gt;
        --color-info-border:    #2E4656;  /* 信息提示边框 */&lt;br /&gt;
        --color-info-text:      #9CC7DE;  /* 信息提示文字 */&lt;br /&gt;
        --color-success-bg:     #1E2A1A;  /* 成功提示背景 */&lt;br /&gt;
        --color-success-border: #33502E;  /* 成功提示边框 */&lt;br /&gt;
        --color-success-text:   #A8D29C;  /* 成功提示文字 */&lt;br /&gt;
        --color-warning-bg:     #2E2615;  /* 警告提示背景 */&lt;br /&gt;
        --color-warning-border: #57481F;  /* 警告提示边框 */&lt;br /&gt;
        --color-warning-text:   #E3C07A;  /* 警告提示文字 */&lt;br /&gt;
        --color-error-bg:       #301D1C;  /* 错误提示背景 */&lt;br /&gt;
        --color-error-border:   #57302C;  /* 错误提示边框 */&lt;br /&gt;
        --color-error-text:     #E09A94;  /* 错误提示文字 */&lt;br /&gt;
&lt;br /&gt;
        /* ---------------- 中性色 ---------------- */&lt;br /&gt;
        --color-border:         #3A3A3A;  /* 通用边框 */&lt;br /&gt;
        --color-bg:             #161A14;  /* 卡片/表格底色 */&lt;br /&gt;
        --color-bg-subtle:      #20251C;  /* 轻微底纹 */&lt;br /&gt;
&lt;br /&gt;
        /* ---------------- 投影 · 深色下用黑色 ---------------- */&lt;br /&gt;
        --shadow-card:          0 1px 3px rgba(0, 0, 0, .4);&lt;br /&gt;
        --shadow-card-hover:    0 4px 14px rgba(0, 0, 0, .55);&lt;br /&gt;
    }&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
/* ==========================================================================&lt;br /&gt;
   Infobox 统一配色&lt;br /&gt;
   ========================================================================== */&lt;br /&gt;
.infobox {&lt;br /&gt;
    float: right;&lt;br /&gt;
    margin-left: 10px;&lt;br /&gt;
    max-width: 20em;&lt;br /&gt;
    text-align: center;&lt;br /&gt;
    background-color: var(--color-theme);&lt;br /&gt;
    /* 整体浅绿背景 */&lt;br /&gt;
    border: 1px solid var(--color-primary-light);&lt;br /&gt;
    /* 浅绿边框，与卡片风格呼应 */&lt;br /&gt;
    border-collapse: collapse;&lt;br /&gt;
    box-shadow: var(--shadow-card);&lt;br /&gt;
    /* 轻投影，增加层次 */&lt;br /&gt;
    font-size: 88%;&lt;br /&gt;
    line-height: 1.5em;&lt;br /&gt;
    clear: right;&lt;br /&gt;
    margin-bottom: 1em;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
/* 顶部标题行（above）和分组标题行（header） */&lt;br /&gt;
.infobox .infobox-above,&lt;br /&gt;
.infobox .infobox-header {&lt;br /&gt;
    background-color: var(--color-primary);&lt;br /&gt;
    /* 暗绿色背景 */&lt;br /&gt;
    color: var(--color-text-invert);&lt;br /&gt;
    /* 白色文字 */&lt;br /&gt;
    font-weight: bold;&lt;br /&gt;
    padding: 0.4em 0.2em;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
/* 标签单元格 */&lt;br /&gt;
.infobox .infobox-label {&lt;br /&gt;
    width: 30%;&lt;br /&gt;
    font-weight: bold;&lt;br /&gt;
    background-color: var(--color-theme-deep);&lt;br /&gt;
    /* 比整体背景稍深的浅绿，突出标签 */&lt;br /&gt;
    padding: 0.3em 0.4em;&lt;br /&gt;
    text-align: right;&lt;br /&gt;
    vertical-align: top;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
/* 数据单元格 */&lt;br /&gt;
.infobox .infobox-data {&lt;br /&gt;
    width: 70%;&lt;br /&gt;
    padding: 0.3em 0.4em;&lt;br /&gt;
    text-align: left;&lt;br /&gt;
    vertical-align: top;&lt;br /&gt;
}&lt;/div&gt;</summary>
		<author><name>DoubleCircle</name></author>
	</entry>
	<entry>
		<id>https://9on0wiki.gunmu.dns.navy/index.php?title=Template:%E6%8C%89%E9%92%AE&amp;diff=744</id>
		<title>Template:按钮</title>
		<link rel="alternate" type="text/html" href="https://9on0wiki.gunmu.dns.navy/index.php?title=Template:%E6%8C%89%E9%92%AE&amp;diff=744"/>
		<updated>2026-08-26T12:36:21Z</updated>

		<summary type="html">&lt;p&gt;DoubleCircle：​&amp;quot;按钮链接修复&amp;quot;&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&amp;lt;includeonly&amp;gt;&amp;lt;templatestyles src=&amp;quot;Template:按钮/styles.css&amp;quot; /&amp;gt;&amp;lt;div class=&amp;quot;wiki-button-wrap&amp;quot;&amp;gt;[{{#if:{{{外部链接|}}}|{{{链接|}}}|{{fullurl:{{{链接|}}}}}} &amp;lt;span class=&amp;quot;wiki-button wiki-button-{{{形状|圆角矩形}}}&amp;quot;&amp;gt;&amp;lt;span class=&amp;quot;wiki-button-icon&amp;quot;&amp;gt;{{#if:{{{图片|}}}|[[File:{{{图片}}}|{{{尺寸|64}}}px|link=]]|{{#if:{{{图标|}}}|&amp;lt;span class=&amp;quot;wiki-button-emoji&amp;quot;&amp;gt;{{{图标}}}&amp;lt;/span&amp;gt;|}}}}&amp;lt;/span&amp;gt;&amp;lt;span class=&amp;quot;wiki-button-label&amp;quot;&amp;gt;{{{label|{{{标签|}}}}}}&amp;lt;/span&amp;gt;&amp;lt;/span&amp;gt;]&amp;lt;/div&amp;gt;&amp;lt;/includeonly&amp;gt;&amp;lt;noinclude&amp;gt;{{Documentation}}&amp;lt;/noinclude&amp;gt;&lt;/div&gt;</summary>
		<author><name>DoubleCircle</name></author>
	</entry>
	<entry>
		<id>https://9on0wiki.gunmu.dns.navy/index.php?title=Template:%E6%8C%89%E9%92%AE&amp;diff=743</id>
		<title>Template:按钮</title>
		<link rel="alternate" type="text/html" href="https://9on0wiki.gunmu.dns.navy/index.php?title=Template:%E6%8C%89%E9%92%AE&amp;diff=743"/>
		<updated>2026-08-26T12:09:36Z</updated>

		<summary type="html">&lt;p&gt;DoubleCircle：​&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&amp;lt;includeonly&amp;gt;&amp;lt;templatestyles src=&amp;quot;Template:按钮/styles.css&amp;quot; /&amp;gt;{{#invoke:按钮|render}}&amp;lt;/includeonly&amp;gt;&lt;br /&gt;
&amp;lt;noinclude&amp;gt;{{Documentation}}&amp;lt;/noinclude&amp;gt;&lt;/div&gt;</summary>
		<author><name>DoubleCircle</name></author>
	</entry>
	<entry>
		<id>https://9on0wiki.gunmu.dns.navy/index.php?title=Template:Quotation_templates&amp;diff=742</id>
		<title>Template:Quotation templates</title>
		<link rel="alternate" type="text/html" href="https://9on0wiki.gunmu.dns.navy/index.php?title=Template:Quotation_templates&amp;diff=742"/>
		<updated>2026-08-26T11:36:56Z</updated>

		<summary type="html">&lt;p&gt;DoubleCircle：​&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;* {{tl|Quote}}——不带边框的引用，可设定高度。&lt;br /&gt;
** {{tl|QuoteH}}——和{{tl|QuoteF}}成對使用，作為{{tl|Quote}}的補充。&lt;br /&gt;
** {{tl|Poemquote}}——引用詩歌、歌詞等頻頻斷行的引文，與{{tl|Quote}}相同。&lt;br /&gt;
* {{tl|Verse translation}}——引用外文詩歌、歌詞等引文，並附上譯文&amp;lt;!--&lt;br /&gt;
* {{tl|Verse transliteration-translation}}——同樣引用外文詩歌、歌詞及譯文，但在中間插入羅馬字轉寫--&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;带边框式&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
* {{tl|Wquote}}——带柔和渐变的灰色阴影，采用圆角。&lt;br /&gt;
* {{tl|现代显示框}}——同样带柔和渐变的灰色阴影，但更为柔和、没有圆角，且更为美观。&lt;br /&gt;
* {{tl|现代蓝边、渐变底纹显示框}}——框内由上至下呈现白色至蓝色的渐变，非常柔和，边线偏蓝且较为柔和。&lt;br /&gt;
* {{tl|Quote box}}——带边框的引用，在一个缩小的浮动框中。&lt;br /&gt;
* {{tl|Quote frame}}——带边框的引用。&lt;br /&gt;
* {{tl|Squote}}——带边框的引用，有立體感。&lt;br /&gt;
** {{tl|SquoteH}}——和{{tl|SquoteF}}成對使用，作為{{tl|Squote}}的補充。&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;带引号式&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
* {{tl|Cquote}}——带引号标记的抬升式引用，采用页面宽度。&lt;br /&gt;
** {{tl|Cquote 3}}——用于进行繁简转换的页面，与{{tl|Cquote}}相同。&lt;br /&gt;
** {{tl|Cquotes}}——提供等寬的多個{{tl|Cquote}}框。&lt;br /&gt;
* {{tl|Rquote}}——带引号标记的抬升式引用，在一个缩小的区域中。&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;讨论页&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
{{Alert|type=warning|暂不需要，如有需要请自行搬运}}&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;参见&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
* [[:Category:引文模板]]——更多模板。&lt;br /&gt;
&amp;lt;noinclude&amp;gt;{{Documentation}}&amp;lt;/noinclude&amp;gt;&lt;/div&gt;</summary>
		<author><name>DoubleCircle</name></author>
	</entry>
	<entry>
		<id>https://9on0wiki.gunmu.dns.navy/index.php?title=Template:Quotation_templates&amp;diff=741</id>
		<title>Template:Quotation templates</title>
		<link rel="alternate" type="text/html" href="https://9on0wiki.gunmu.dns.navy/index.php?title=Template:Quotation_templates&amp;diff=741"/>
		<updated>2026-08-26T11:36:07Z</updated>

		<summary type="html">&lt;p&gt;DoubleCircle：​&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;* {{tl|Quote}}——不带边框的引用，可设定高度。&lt;br /&gt;
** {{tl|QuoteH}}——和{{tl|QuoteF}}成對使用，作為{{tl|Quote}}的補充。&lt;br /&gt;
** {{tl|Poemquote}}——引用詩歌、歌詞等頻頻斷行的引文，與{{tl|Quote}}相同。&lt;br /&gt;
* {{tl|Verse translation}}——引用外文詩歌、歌詞等引文，並附上譯文&amp;lt;!--&lt;br /&gt;
* {{tl|Verse transliteration-translation}}——同樣引用外文詩歌、歌詞及譯文，但在中間插入羅馬字轉寫--&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;带边框式&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
* {{tl|Wquote}}——带柔和渐变的灰色阴影，采用圆角。&lt;br /&gt;
* {{tl|现代显示框}}——同样带柔和渐变的灰色阴影，但更为柔和、没有圆角，且更为美观。&lt;br /&gt;
* {{tl|现代蓝边、渐变底纹显示框}}——框内由上至下呈现白色至蓝色的渐变，非常柔和，边线偏蓝且较为柔和。&lt;br /&gt;
* {{tl|Quote box}}——带边框的引用，在一个缩小的浮动框中。&lt;br /&gt;
* {{tl|Quote frame}}——带边框的引用。&lt;br /&gt;
* {{tl|Squote}}——带边框的引用，有立體感。&lt;br /&gt;
** {{tl|SquoteH}}——和{{tl|SquoteF}}成對使用，作為{{tl|Squote}}的補充。&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;带引号式&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
* {{tl|Cquote}}——带引号标记的抬升式引用，采用页面宽度。&lt;br /&gt;
** {{tl|Cquote 3}}——用于进行繁简转换的页面，与{{tl|Cquote}}相同。&lt;br /&gt;
** {{tl|Cquotes}}——提供等寬的多個{{tl|Cquote}}框。&lt;br /&gt;
* {{tl|Rquote}}——带引号标记的抬升式引用，在一个缩小的区域中。&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;讨论页&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
暂不需要，如有需要请自行搬运&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;参见&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
* [[:Category:引文模板]]——更多模板。&lt;br /&gt;
&amp;lt;noinclude&amp;gt;{{Documentation}}&amp;lt;/noinclude&amp;gt;&lt;/div&gt;</summary>
		<author><name>DoubleCircle</name></author>
	</entry>
	<entry>
		<id>https://9on0wiki.gunmu.dns.navy/index.php?title=Template:Quotation_templates&amp;diff=740</id>
		<title>Template:Quotation templates</title>
		<link rel="alternate" type="text/html" href="https://9on0wiki.gunmu.dns.navy/index.php?title=Template:Quotation_templates&amp;diff=740"/>
		<updated>2026-08-26T11:35:59Z</updated>

		<summary type="html">&lt;p&gt;DoubleCircle：​&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;* {{tl|Quote}}——不带边框的引用，可设定高度。&lt;br /&gt;
** {{tl|QuoteH}}——和{{tl|QuoteF}}成對使用，作為{{tl|Quote}}的補充。&lt;br /&gt;
** {{tl|Poemquote}}——引用詩歌、歌詞等頻頻斷行的引文，與{{tl|Quote}}相同。&lt;br /&gt;
* {{tl|Verse translation}}——引用外文詩歌、歌詞等引文，並附上譯文&amp;lt;!--&lt;br /&gt;
* {{tl|Verse transliteration-translation}}——同樣引用外文詩歌、歌詞及譯文，但在中間插入羅馬字轉寫--&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;带边框式&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
* {{tl|Wquote}}——带柔和渐变的灰色阴影，采用圆角。&lt;br /&gt;
* {{tl|现代显示框}}——同样带柔和渐变的灰色阴影，但更为柔和、没有圆角，且更为美观。&lt;br /&gt;
* {{tl|现代蓝边、渐变底纹显示框}}——框内由上至下呈现白色至蓝色的渐变，非常柔和，边线偏蓝且较为柔和。&lt;br /&gt;
* {{tl|Quote box}}——带边框的引用，在一个缩小的浮动框中。&lt;br /&gt;
* {{tl|Quote frame}}——带边框的引用。&lt;br /&gt;
* {{tl|Squote}}——带边框的引用，有立體感。&lt;br /&gt;
** {{tl|SquoteH}}——和{{tl|SquoteF}}成對使用，作為{{tl|Squote}}的補充。&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;带引号式&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
* {{tl|Cquote}}——带引号标记的抬升式引用，采用页面宽度。&lt;br /&gt;
** {{tl|Cquote 3}}——用于进行繁简转换的页面，与{{tl|Cquote}}相同。&lt;br /&gt;
** {{tl|Cquotes}}——提供等寬的多個{{tl|Cquote}}框。&lt;br /&gt;
* {{tl|Rquote}}——带引号标记的抬升式引用，在一个缩小的区域中。&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;讨论页&#039;&#039;&#039;&lt;br /&gt;
暂不需要，如有需要请自行搬运&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;参见&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
* [[:Category:引文模板]]——更多模板。&lt;br /&gt;
&amp;lt;noinclude&amp;gt;{{Documentation}}&amp;lt;/noinclude&amp;gt;&lt;/div&gt;</summary>
		<author><name>DoubleCircle</name></author>
	</entry>
	<entry>
		<id>https://9on0wiki.gunmu.dns.navy/index.php?title=Template:Documentation_subpage&amp;diff=739</id>
		<title>Template:Documentation subpage</title>
		<link rel="alternate" type="text/html" href="https://9on0wiki.gunmu.dns.navy/index.php?title=Template:Documentation_subpage&amp;diff=739"/>
		<updated>2026-08-26T11:33:36Z</updated>

		<summary type="html">&lt;p&gt;DoubleCircle：​&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{#if:{{{Original-recipe|}}}{{{Orig|}}}&lt;br /&gt;
|&amp;lt;!-- reconstruction of original  Template:Template doc page pattern (now the redirected to &amp;quot; Template:Documentation subpage&amp;quot;) template... ca mid-November 2007 --&amp;gt;&lt;br /&gt;
&amp;lt;table  class=&amp;quot;messagebox&amp;quot; style=&amp;quot;line-height:1.1em;&amp;quot; style=&amp;quot; background:#f9f9b7;&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;tr&amp;gt;&lt;br /&gt;
&amp;lt;td&amp;gt; 本文档是[[{{NAMESPACE}}:{{{1|{{BASEPAGENAME}}}}}]]的[[Wikipedia:模板文档|模板文档]]&amp;lt;!--&lt;br /&gt;
--&amp;gt;页。&amp;lt;/td&amp;gt;&amp;lt;/tr&amp;gt;&lt;br /&gt;
&amp;lt;tr&amp;gt;&amp;lt;td&amp;gt;&amp;lt;small&amp;gt;This page may not be intended to be viewed directly. &amp;lt;br/&lt;br /&gt;
&amp;gt;Links using [[Help:Variable|variable]]s may appear broken; do not replace these with [[hardcoded]] page names or URLs.&amp;lt;/small&amp;gt;&amp;lt;/td&amp;gt;&amp;lt;/tr&amp;gt;&lt;br /&gt;
&amp;lt;/table&amp;gt;{{#if:{{{inhib|x}}}{{{inhibit|}}}|&amp;lt;!-- skip ---&amp;gt;|&amp;lt;includeonly&amp;gt;[[Category:模板說明文件|{{PAGENAME}}]]&amp;lt;/includeonly&amp;gt;&lt;br /&gt;
}}&amp;lt;!-- Please retain the above original template... &lt;br /&gt;
&lt;br /&gt;
There are templates formulated to [[WP:DPP]] that need this.&lt;br /&gt;
&lt;br /&gt;
Of course, if you all want to start updating all the interwiki exported templates, go on making things more incompatible... queries to User:Fabartus.&lt;br /&gt;
&lt;br /&gt;
---&amp;gt;&lt;br /&gt;
|&amp;lt;includeonly&amp;gt;{{#ifeq: {{lc:{{SUBPAGENAME}}}} | {{{override|doc}}}&lt;br /&gt;
  | &amp;lt;!-- doc page --&amp;gt;&lt;br /&gt;
&amp;lt;/includeonly&amp;gt;{{&lt;br /&gt;
    #ifeq: {{{doc-notice|show}}} | show&lt;br /&gt;
    | {{mbox&lt;br /&gt;
      | type = notice&lt;br /&gt;
      | text = &lt;br /&gt;
&#039;&#039;&#039;本文档是{{{1|[[{{SUBJECTSPACE}}:{{BASEPAGENAME}}]]}}}的[[Wikipedia:模板文档|文档]][[Wikipedia:子页面|子页面]]&#039;&#039;&#039;&amp;lt;small&amp;gt;（见{{ #if: {{SUBJECTSPACE}} | {{lc:{{SUBJECTSPACE ZH}}}} | 条目 }}页自身）&amp;lt;/small&amp;gt;。&amp;lt;br /&amp;gt;&amp;lt;small&amp;gt;本页包含用法信息、[[Wikipedia:分类|分类]]和其他非原{{ #if: {{SUBJECTSPACE}} |{{lc:{{SUBJECTSPACE ZH}}}}页面|条目}}的内容。&amp;lt;/small&amp;gt;&lt;br /&gt;
      }}&lt;br /&gt;
    }}{{DEFAULTSORT:{{PAGENAME}}}}{{&lt;br /&gt;
    #if: {{{inhibit|}}}&lt;br /&gt;
    | &amp;lt;!-- skip --&amp;gt;&lt;br /&gt;
    | [[Category:{{&lt;br /&gt;
      #if: {{SUBJECTSPACE}}&lt;br /&gt;
      | {{SUBJECTSPACE ZH}}&lt;br /&gt;
      |條目&lt;br /&gt;
    }}說明文件&amp;lt;noinclude&amp;gt;| &amp;lt;/noinclude&amp;gt;]]&lt;br /&gt;
  }}&amp;lt;includeonly&amp;gt;&lt;br /&gt;
| &amp;lt;!-- if not on a /doc subpage, do nothing --&amp;gt;&lt;br /&gt;
}}&amp;lt;/includeonly&amp;gt;&amp;lt;noinclude&amp;gt;&lt;br /&gt;
&lt;br /&gt;
{{pp-template|small=yes}}&lt;br /&gt;
{{documentation}}&lt;br /&gt;
&amp;lt;!-- Add categories and interwikis to the /doc subpage, not here! --&amp;gt;&lt;br /&gt;
&amp;lt;/noinclude&amp;gt;&lt;br /&gt;
}}&lt;/div&gt;</summary>
		<author><name>DoubleCircle</name></author>
	</entry>
	<entry>
		<id>https://9on0wiki.gunmu.dns.navy/index.php?title=Template:SUBJECTSPACE_ZH&amp;diff=738</id>
		<title>Template:SUBJECTSPACE ZH</title>
		<link rel="alternate" type="text/html" href="https://9on0wiki.gunmu.dns.navy/index.php?title=Template:SUBJECTSPACE_ZH&amp;diff=738"/>
		<updated>2026-08-26T11:23:37Z</updated>

		<summary type="html">&lt;p&gt;DoubleCircle：​导入1个版本&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{#switch:{{SUBJECTSPACE}}|Main=条目|User=用户|Wikipedia=维基百科|Image=图像|MediaWiki=媒体维基|Template=模板|Help=帮助|Category=分类|Portal=门户}}&lt;/div&gt;</summary>
		<author><name>DoubleCircle</name></author>
	</entry>
	<entry>
		<id>https://9on0wiki.gunmu.dns.navy/index.php?title=Template:Mbox&amp;diff=736</id>
		<title>Template:Mbox</title>
		<link rel="alternate" type="text/html" href="https://9on0wiki.gunmu.dns.navy/index.php?title=Template:Mbox&amp;diff=736"/>
		<updated>2026-08-26T11:23:37Z</updated>

		<summary type="html">&lt;p&gt;DoubleCircle：​导入1个版本&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&amp;lt;noinclude&amp;gt;[[Category:huiji template]]&amp;lt;/noinclude&amp;gt;&lt;br /&gt;
&amp;lt;includeonly&amp;gt;&amp;lt;div class=&amp;quot;mbox&amp;quot; style=&amp;quot;overflow:auto;margin:0.5em auto;border-left-width:10px;{{{style|}}}&amp;quot; class=&amp;quot;well quote-{{#switch:{{{border|}}}&lt;br /&gt;
  | default     = primary&lt;br /&gt;
  | primary     = primary&lt;br /&gt;
  | success     = success&lt;br /&gt;
  | info        = info&lt;br /&gt;
  | warning     = warning&lt;br /&gt;
  | danger      = danger&lt;br /&gt;
  | #default    = primary}}&amp;quot;&amp;gt;&amp;lt;div style=&amp;quot;vertical-align:top;display:inline-block;width:20px;&amp;quot;&amp;gt;{{#if:{{{image|}}}   &lt;br /&gt;
  |{{{image}}}&lt;br /&gt;
  | {{#switch:{{{type|}}}     &lt;br /&gt;
  | delete     =&amp;lt;i class=&amp;quot;fa fa-times&amp;quot; style=&amp;quot;font-size:20px;&amp;quot;&amp;gt;&amp;lt;/i&amp;gt;&lt;br /&gt;
  | content    =&amp;lt;i class=&amp;quot;fa fa-exclamation-triangle&amp;quot; style=&amp;quot;font-size:20px;&amp;quot;&amp;gt;&amp;lt;/i&amp;gt;&lt;br /&gt;
  | style      = &amp;lt;i class=&amp;quot;fa fa-css3&amp;quot; style=&amp;quot;font-size:20px;&amp;quot;&amp;gt;&amp;lt;/i&amp;gt;&lt;br /&gt;
  | move       =&amp;lt;i class=&amp;quot;fa fa-share&amp;quot; style=&amp;quot;font-size:20px;&amp;quot;&amp;gt;&amp;lt;/i&amp;gt;&lt;br /&gt;
  | protected  =&amp;lt;i class=&amp;quot;fa fa-lock&amp;quot; style=&amp;quot;font-size:20px;&amp;quot;&amp;gt;&amp;lt;/i&amp;gt;&lt;br /&gt;
  | help  =&amp;lt;i class=&amp;quot;fa fa-hand-paper-o&amp;quot; style=&amp;quot;font-size:20px;&amp;quot;&amp;gt;&amp;lt;/i&amp;gt;&lt;br /&gt;
  | expand  =&amp;lt;i class=&amp;quot;fa fa-expand&amp;quot; style=&amp;quot;font-size:20px;&amp;gt;&amp;lt;/i&amp;gt;&lt;br /&gt;
  | #default   =&amp;lt;i class=&amp;quot;fa fa-pencil&amp;quot; style=&amp;quot;font-size:20px;&amp;quot;&amp;gt;&amp;lt;/i&amp;gt;}}}}&amp;lt;/div&amp;gt;&lt;br /&gt;
&amp;lt;div style=&amp;quot;display:inline-block;font-size:14px;border: none; padding: 0.25em 0.9em 0.25em 0; width: 75%;margin-left:0.5em;{{{text-style|}}}&amp;quot;&amp;gt; {{{text|No text supplied}}}&amp;lt;/div&amp;gt;&amp;lt;/div&amp;gt;&amp;lt;/includeonly&amp;gt;&amp;lt;noinclude&amp;gt;{{优质模板|功能}}{{documentation}}&amp;lt;/noinclude&amp;gt;&amp;lt;noinclude&amp;gt;&lt;br /&gt;
&amp;lt;templatedata&amp;gt;&lt;br /&gt;
{&lt;br /&gt;
	&amp;quot;params&amp;quot;: {&lt;br /&gt;
		&amp;quot;style&amp;quot;: {},&lt;br /&gt;
		&amp;quot;border&amp;quot;: {&lt;br /&gt;
			&amp;quot;description&amp;quot;: &amp;quot;可选值：default、primary、success&amp;quot;,&lt;br /&gt;
			&amp;quot;example&amp;quot;: &amp;quot;primary&amp;quot;,&lt;br /&gt;
			&amp;quot;type&amp;quot;: &amp;quot;string&amp;quot;,&lt;br /&gt;
			&amp;quot;required&amp;quot;: true,&lt;br /&gt;
			&amp;quot;suggested&amp;quot;: true&lt;br /&gt;
		},&lt;br /&gt;
		&amp;quot;image&amp;quot;: {},&lt;br /&gt;
		&amp;quot;type&amp;quot;: {&lt;br /&gt;
			&amp;quot;description&amp;quot;: &amp;quot;可选值：default、delete、content、style、move、protected、help、expand&amp;quot;&lt;br /&gt;
		},&lt;br /&gt;
		&amp;quot;text-style&amp;quot;: {},&lt;br /&gt;
		&amp;quot;text&amp;quot;: {}&lt;br /&gt;
	},&lt;br /&gt;
	&amp;quot;description&amp;quot;: &amp;quot;本模板用来生成各种页面顶部通知&amp;quot;&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/templatedata&amp;gt;&lt;br /&gt;
&amp;lt;/noinclude&amp;gt;&lt;/div&gt;</summary>
		<author><name>DoubleCircle</name></author>
	</entry>
	<entry>
		<id>https://9on0wiki.gunmu.dns.navy/index.php?title=Template:Documentation_subpage&amp;diff=734</id>
		<title>Template:Documentation subpage</title>
		<link rel="alternate" type="text/html" href="https://9on0wiki.gunmu.dns.navy/index.php?title=Template:Documentation_subpage&amp;diff=734"/>
		<updated>2026-08-26T11:23:37Z</updated>

		<summary type="html">&lt;p&gt;DoubleCircle：​导入1个版本&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{#if:{{{Original-recipe|}}}{{{Orig|}}}&lt;br /&gt;
|&amp;lt;!-- reconstruction of original  Template:Template doc page pattern (now the redirected to &amp;quot; Template:Documentation subpage&amp;quot;) template... ca mid-November 2007 --&amp;gt;&lt;br /&gt;
&amp;lt;table  class=&amp;quot;messagebox&amp;quot; style=&amp;quot;line-height:1.1em;&amp;quot; style=&amp;quot; background:#f9f9b7;&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;tr&amp;gt; &amp;lt;td rowspan=&amp;quot;3&amp;quot; style=&amp;quot;width:60px;text-align:center;&amp;quot; &amp;gt; [[File:Edit-paste.svg|40px]]&amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;td&amp;gt; 本文档是[[{{NAMESPACE}}:{{{1|{{BASEPAGENAME}}}}}]]的[[Wikipedia:模板文档|模板文档]]&amp;lt;!--&lt;br /&gt;
--&amp;gt;页。&amp;lt;/td&amp;gt;&amp;lt;/tr&amp;gt;&lt;br /&gt;
&amp;lt;tr&amp;gt;&amp;lt;td&amp;gt;&amp;lt;small&amp;gt;This page may not be intended to be viewed directly. &amp;lt;br/&lt;br /&gt;
&amp;gt;Links using [[Help:Variable|variable]]s may appear broken; do not replace these with [[hardcoded]] page names or URLs.&amp;lt;/small&amp;gt;&amp;lt;/td&amp;gt;&amp;lt;/tr&amp;gt;&lt;br /&gt;
&amp;lt;/table&amp;gt;{{#if:{{{inhib|x}}}{{{inhibit|}}}|&amp;lt;!-- skip ---&amp;gt;|&amp;lt;includeonly&amp;gt;[[Category:模板說明文件|{{PAGENAME}}]]&amp;lt;/includeonly&amp;gt;&lt;br /&gt;
}}&amp;lt;!-- Please retain the above original template... &lt;br /&gt;
&lt;br /&gt;
There are templates formulated to [[WP:DPP]] that need this.&lt;br /&gt;
&lt;br /&gt;
Of course, if you all want to start updating all the interwiki exported templates, go on making things more incompatible... queries to User:Fabartus.&lt;br /&gt;
&lt;br /&gt;
---&amp;gt;&lt;br /&gt;
|&amp;lt;includeonly&amp;gt;{{#ifeq: {{lc:{{SUBPAGENAME}}}} | {{{override|doc}}}&lt;br /&gt;
  | &amp;lt;!-- doc page --&amp;gt;&lt;br /&gt;
&amp;lt;/includeonly&amp;gt;{{&lt;br /&gt;
    #ifeq: {{{doc-notice|show}}} | show&lt;br /&gt;
    | {{mbox&lt;br /&gt;
      | type = notice&lt;br /&gt;
      | image = [[File:Edit-copy green.svg|40px]]&lt;br /&gt;
      | text = &lt;br /&gt;
&#039;&#039;&#039;本文档是{{{1|[[{{SUBJECTSPACE}}:{{BASEPAGENAME}}]]}}}的[[Wikipedia:模板文档|文档]][[Wikipedia:子页面|子页面]]&#039;&#039;&#039;&amp;lt;small&amp;gt;（见{{ #if: {{SUBJECTSPACE}} | {{lc:{{SUBJECTSPACE ZH}}}} | 条目 }}页自身）&amp;lt;/small&amp;gt;。&amp;lt;br /&amp;gt;&amp;lt;small&amp;gt;本页包含用法信息、[[Wikipedia:分类|分类]]和其他非原{{ #if: {{SUBJECTSPACE}} |{{lc:{{SUBJECTSPACE ZH}}}}页面|条目}}的内容。&amp;lt;/small&amp;gt;&lt;br /&gt;
      }}&lt;br /&gt;
    }}{{DEFAULTSORT:{{PAGENAME}}}}{{&lt;br /&gt;
    #if: {{{inhibit|}}}&lt;br /&gt;
    | &amp;lt;!-- skip --&amp;gt;&lt;br /&gt;
    | [[Category:{{&lt;br /&gt;
      #if: {{SUBJECTSPACE}}&lt;br /&gt;
      | {{SUBJECTSPACE ZH}}&lt;br /&gt;
      |條目&lt;br /&gt;
    }}說明文件&amp;lt;noinclude&amp;gt;| &amp;lt;/noinclude&amp;gt;]]&lt;br /&gt;
  }}&amp;lt;includeonly&amp;gt;&lt;br /&gt;
| &amp;lt;!-- if not on a /doc subpage, do nothing --&amp;gt;&lt;br /&gt;
}}&amp;lt;/includeonly&amp;gt;&amp;lt;noinclude&amp;gt;&lt;br /&gt;
&lt;br /&gt;
{{pp-template|small=yes}}&lt;br /&gt;
{{documentation}}&lt;br /&gt;
&amp;lt;!-- Add categories and interwikis to the /doc subpage, not here! --&amp;gt;&lt;br /&gt;
&amp;lt;/noinclude&amp;gt;&lt;br /&gt;
}}&lt;/div&gt;</summary>
		<author><name>DoubleCircle</name></author>
	</entry>
	<entry>
		<id>https://9on0wiki.gunmu.dns.navy/index.php?title=Template:Quote_box/styles.css&amp;diff=732</id>
		<title>Template:Quote box/styles.css</title>
		<link rel="alternate" type="text/html" href="https://9on0wiki.gunmu.dns.navy/index.php?title=Template:Quote_box/styles.css&amp;diff=732"/>
		<updated>2026-08-26T11:17:12Z</updated>

		<summary type="html">&lt;p&gt;DoubleCircle：​导入1个版本&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;/*  */&lt;br /&gt;
.quotebox {&lt;br /&gt;
	background-color: #F9F9F9;&lt;br /&gt;
	border: 1px solid #aaa;&lt;br /&gt;
	box-sizing: border-box;&lt;br /&gt;
	padding: .25em .5em;&lt;br /&gt;
	font-size: 88%;&lt;br /&gt;
	max-width: 100%;&lt;br /&gt;
}&lt;br /&gt;
.quotebox.floatleft {&lt;br /&gt;
	margin: .5em 1.4em .8em 0;&lt;br /&gt;
}&lt;br /&gt;
.quotebox.floatright {&lt;br /&gt;
	margin: .5em 0 .8em 1.4em;&lt;br /&gt;
}&lt;br /&gt;
.quotebox.centered {&lt;br /&gt;
	margin: .5em auto .8em auto;&lt;br /&gt;
}&lt;br /&gt;
.quotebox p {&lt;br /&gt;
	font-style: inherit;	&lt;br /&gt;
	margin-bottom: 0;&lt;br /&gt;
}&lt;br /&gt;
.quotebox-title {&lt;br /&gt;
	background-color: #F9F9F9;&lt;br /&gt;
	text-align: center; &lt;br /&gt;
    font-size: larger;&lt;br /&gt;
    font-weight: bold; &lt;br /&gt;
	margin-bottom: 0;&lt;br /&gt;
}&lt;br /&gt;
.quotebox-quote.quoted:before {&lt;br /&gt;
    font-family:&#039;Times New Roman&#039;,serif;&lt;br /&gt;
    font-weight:bold;&lt;br /&gt;
    font-size: large;&lt;br /&gt;
    color: gray;&lt;br /&gt;
    content: &#039; “ &#039;;&lt;br /&gt;
    vertical-align: -45%;&lt;br /&gt;
	line-height: 0;&lt;br /&gt;
}&lt;br /&gt;
.quotebox-quote.quoted:after {&lt;br /&gt;
    font-family:&#039;Times New Roman&#039;,serif;&lt;br /&gt;
    font-weight:bold;&lt;br /&gt;
    font-size: large;&lt;br /&gt;
    color: gray;&lt;br /&gt;
	content: &#039; ” &#039;;&lt;br /&gt;
	line-height: 0;&lt;br /&gt;
}&lt;br /&gt;
.quotebox .left-aligned {&lt;br /&gt;
	text-align: left;&lt;br /&gt;
}&lt;br /&gt;
.quotebox .right-aligned {&lt;br /&gt;
	text-align: right;&lt;br /&gt;
}&lt;br /&gt;
.quotebox .center-aligned {&lt;br /&gt;
	text-align: center;&lt;br /&gt;
}&lt;br /&gt;
.quotebox .quotebox-cite,&lt;br /&gt;
.quotebox cite {&lt;br /&gt;
	display:block;&lt;br /&gt;
	font-style:normal;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
@media all and (max-width:720px) {&lt;br /&gt;
	.quotebox {&lt;br /&gt;
		/*override inline styles */&lt;br /&gt;
		width: 100% !important;&lt;br /&gt;
		margin: 0 0 .8em !important;&lt;br /&gt;
		float: none !important;&lt;br /&gt;
	}&lt;br /&gt;
}&lt;/div&gt;</summary>
		<author><name>DoubleCircle</name></author>
	</entry>
	<entry>
		<id>https://9on0wiki.gunmu.dns.navy/index.php?title=Template:%E7%8E%B0%E4%BB%A3%E6%98%BE%E7%A4%BA%E6%A1%86/styles.css&amp;diff=730</id>
		<title>Template:现代显示框/styles.css</title>
		<link rel="alternate" type="text/html" href="https://9on0wiki.gunmu.dns.navy/index.php?title=Template:%E7%8E%B0%E4%BB%A3%E6%98%BE%E7%A4%BA%E6%A1%86/styles.css&amp;diff=730"/>
		<updated>2026-08-26T11:17:12Z</updated>

		<summary type="html">&lt;p&gt;DoubleCircle：​导入1个版本&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;.templatequote {&lt;br /&gt;
	border: 1px solid var(--border-color-muted, #eaecf0);&lt;br /&gt;
	box-sizing: border-box;&lt;br /&gt;
	box-shadow: 0px 1px 3px rgba(0, 0, 0, 0.08);&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
/* night mode */&lt;br /&gt;
&lt;br /&gt;
@media screen {&lt;br /&gt;
    html.skin-theme-clientpref-night .templatequote {&lt;br /&gt;
		border: 1px solid var(--border-color-muted, #404244);&lt;br /&gt;
		box-shadow: 0px 1px 3px rgba(255, 255, 255, 0.16);&lt;br /&gt;
	}&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
@media screen and ( prefers-color-scheme: dark) {&lt;br /&gt;
	html.skin-theme-clientpref-os .templatequote {&lt;br /&gt;
		border: 1px solid var(--border-color-muted, #404244);&lt;br /&gt;
		box-shadow: 0px 1px 3px rgba(255, 255, 255, 0.16);&lt;br /&gt;
	}&lt;br /&gt;
}&lt;/div&gt;</summary>
		<author><name>DoubleCircle</name></author>
	</entry>
	<entry>
		<id>https://9on0wiki.gunmu.dns.navy/index.php?title=Template:Cquotes/core&amp;diff=728</id>
		<title>Template:Cquotes/core</title>
		<link rel="alternate" type="text/html" href="https://9on0wiki.gunmu.dns.navy/index.php?title=Template:Cquotes/core&amp;diff=728"/>
		<updated>2026-08-26T11:17:12Z</updated>

		<summary type="html">&lt;p&gt;DoubleCircle：​导入1个版本&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;|-&lt;br /&gt;
| width=&amp;quot;20&amp;quot; valign=&amp;quot;top&amp;quot; class=skin-invert style=&amp;quot;color:#B2B7F2;font-size:{{#switch:{{{size|{{{4|{{{quotewidth|{{{width|20px}}}}}}}}}}}}&lt;br /&gt;
|10px=20px&lt;br /&gt;
|30px=60px&lt;br /&gt;
|40px=80px&lt;br /&gt;
|50px=100px&lt;br /&gt;
|60px=120px&lt;br /&gt;
|#default=36px}};font-family:&#039;Times New Roman&#039;,serif;font-weight:bold;text-align:left;padding:10px 10px; text-orientation: upright&amp;quot; | “&lt;br /&gt;
| valign=&amp;quot;top&amp;quot; style=&amp;quot;padding:4px 10px;&amp;quot; | {{{1}}}&lt;br /&gt;
| width=&amp;quot;20&amp;quot; valign=&amp;quot;bottom&amp;quot; class=skin-invert style=&amp;quot;color:#B2B7F2;font-size:{{#switch: {{{size}}}&lt;br /&gt;
|10px=20px&lt;br /&gt;
|30px=60px&lt;br /&gt;
|40px=80px&lt;br /&gt;
|50px=100px&lt;br /&gt;
|60px=120px&lt;br /&gt;
|#default=36px}};font-family:&#039;Times New Roman&#039;,serif;font-weight:bold;text-align:right;padding:10px 10px; text-orientation: upright&amp;quot; | ”&lt;br /&gt;
|-&lt;br /&gt;
{{#if:{{{2|}}}{{{3|}}}|&lt;br /&gt;
{{!}} colspan=&amp;quot;3&amp;quot; style=&amp;quot;padding-right: 4%&amp;quot; {{!}} {{#if:{{{2}}}|&amp;lt;p style=&amp;quot;font-size:smaller;text-align: right&amp;quot;&amp;gt;&amp;lt;cite style=&amp;quot;font-style:normal;&amp;quot;&amp;gt;——{{{2}}}{{#if:{{{3}}}|，{{{3}}}}}&amp;lt;/cite&amp;gt;&amp;lt;/p&amp;gt;}}&lt;br /&gt;
}}&amp;lt;noinclude&amp;gt;&lt;br /&gt;
&amp;lt;/noinclude&amp;gt;&lt;/div&gt;</summary>
		<author><name>DoubleCircle</name></author>
	</entry>
	<entry>
		<id>https://9on0wiki.gunmu.dns.navy/index.php?title=Template:Wquote&amp;diff=726</id>
		<title>Template:Wquote</title>
		<link rel="alternate" type="text/html" href="https://9on0wiki.gunmu.dns.navy/index.php?title=Template:Wquote&amp;diff=726"/>
		<updated>2026-08-26T11:12:15Z</updated>

		<summary type="html">&lt;p&gt;DoubleCircle：​&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&amp;lt;div class=skin-invert style=&amp;quot;overflow: auto; background-color:#fff; -webkit-box-shadow: 0px 0px 6px #808080; -moz-box-shadow: 0px 0px 6px #808080; box-shadow: 0px 0px 6px #808080; border-radius: 0.4em; -moz-border-radius: 0.4em; -webkit-border-radius: 0.4em; margin-bottom:2em; margin-left:4px; margin-right:4px; padding:1em; float:{{#switch:{{{align|}}}| left = left| right = right| center = none; margin-left:auto; margin-right:auto| #default = none}}; {{#if:{{{height|}}}|height: {{{height}}}; }}{{#if:{{{width|}}}|width: {{{width|}}}; }}{{{style|}}}&amp;quot;&amp;gt;&amp;lt;!--&lt;br /&gt;
--&amp;gt;&amp;lt;div style=&amp;quot;display: table-cell; text-align: left; padding: 1em; vertical-align: middle;&amp;quot;&amp;gt;{{{1|&amp;lt;noinclude&amp;gt;插入引文于此，不带引号。&amp;lt;/noinclude&amp;gt;}}}&amp;lt;/div&amp;gt;&amp;lt;!--&lt;br /&gt;
--&amp;gt;{{#if:{{{author|}}}{{{2|}}}{{{title|}}}{{{3|}}}{{{source|}}}{{{4|}}}&lt;br /&gt;
 |&amp;lt;cite style=&amp;quot;display: block; text-align: left; padding-left: 2em;&amp;quot;&amp;gt; ——{{逗號分隔各項&lt;br /&gt;
   |{{{author|{{{2|}}}}}}&lt;br /&gt;
   |{{{title|{{{3|}}}}}}&lt;br /&gt;
   |{{{source|{{{4|}}}}}}&lt;br /&gt;
   }}&amp;lt;/cite&amp;gt;&lt;br /&gt;
 }}&amp;lt;/div&amp;gt;&amp;lt;noinclude&amp;gt;&lt;br /&gt;
{{documentation}}&lt;br /&gt;
&amp;lt;/noinclude&amp;gt;&lt;/div&gt;</summary>
		<author><name>DoubleCircle</name></author>
	</entry>
	<entry>
		<id>https://9on0wiki.gunmu.dns.navy/index.php?title=Module:List&amp;diff=724</id>
		<title>Module:List</title>
		<link rel="alternate" type="text/html" href="https://9on0wiki.gunmu.dns.navy/index.php?title=Module:List&amp;diff=724"/>
		<updated>2026-08-26T10:58:54Z</updated>

		<summary type="html">&lt;p&gt;DoubleCircle：​导入1个版本&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;local libUtil = require(&#039;libraryUtil&#039;)&lt;br /&gt;
local checkType = libUtil.checkType&lt;br /&gt;
local mTableTools = require(&#039;Module:TableTools&#039;)&lt;br /&gt;
&lt;br /&gt;
local p = {}&lt;br /&gt;
&lt;br /&gt;
local listTypes = {&lt;br /&gt;
	[&#039;bulleted&#039;] = true,&lt;br /&gt;
	[&#039;unbulleted&#039;] = true,&lt;br /&gt;
	[&#039;horizontal&#039;] = true,&lt;br /&gt;
	[&#039;ordered&#039;] = true,&lt;br /&gt;
	[&#039;horizontal_ordered&#039;] = true&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
function p.makeListData(listType, args)&lt;br /&gt;
	-- Constructs a data table to be passed to p.renderList.&lt;br /&gt;
	local data = {}&lt;br /&gt;
&lt;br /&gt;
	-- Classes and TemplateStyles&lt;br /&gt;
	data.classes = {}&lt;br /&gt;
	data.templatestyles = &#039;&#039;&lt;br /&gt;
	if listType == &#039;horizontal&#039; or listType == &#039;horizontal_ordered&#039; then&lt;br /&gt;
		table.insert(data.classes, &#039;hlist&#039;)&lt;br /&gt;
		data.templatestyles = mw.getCurrentFrame():extensionTag{&lt;br /&gt;
			name = &#039;templatestyles&#039;, args = { src = &#039;Hlist/styles.css&#039; }&lt;br /&gt;
		}&lt;br /&gt;
	elseif listType == &#039;unbulleted&#039; then&lt;br /&gt;
		table.insert(data.classes, &#039;plainlist&#039;)&lt;br /&gt;
		data.templatestyles = mw.getCurrentFrame():extensionTag{&lt;br /&gt;
			name = &#039;templatestyles&#039;, args = { src = &#039;Plainlist/styles.css&#039; }&lt;br /&gt;
		}&lt;br /&gt;
	end&lt;br /&gt;
	table.insert(data.classes, args.class)&lt;br /&gt;
&lt;br /&gt;
	-- Main div style&lt;br /&gt;
	data.style = args.style&lt;br /&gt;
&lt;br /&gt;
	-- Indent for horizontal lists&lt;br /&gt;
	if listType == &#039;horizontal&#039; or listType == &#039;horizontal_ordered&#039; then&lt;br /&gt;
		local indent = tonumber(args.indent)&lt;br /&gt;
		indent = indent and indent * 1.6 or 0&lt;br /&gt;
		if indent &amp;gt; 0 then&lt;br /&gt;
			data.marginLeft = indent .. &#039;em&#039;&lt;br /&gt;
		end&lt;br /&gt;
	end&lt;br /&gt;
	&lt;br /&gt;
	-- List style types for ordered lists&lt;br /&gt;
	-- This could be &amp;quot;1, 2, 3&amp;quot;, &amp;quot;a, b, c&amp;quot;, or a number of others. The list style&lt;br /&gt;
	-- type is either set by the &amp;quot;type&amp;quot; attribute or the &amp;quot;list-style-type&amp;quot; CSS&lt;br /&gt;
	-- property.&lt;br /&gt;
	if listType == &#039;ordered&#039; or listType == &#039;horizontal_ordered&#039; then &lt;br /&gt;
		data.listStyleType = args.list_style_type or args[&#039;list-style-type&#039;]&lt;br /&gt;
		data.type = args[&#039;type&#039;]&lt;br /&gt;
&lt;br /&gt;
		-- Detect invalid type attributes and attempt to convert them to&lt;br /&gt;
		-- list-style-type CSS properties.&lt;br /&gt;
		if data.type &lt;br /&gt;
			and not data.listStyleType&lt;br /&gt;
			and not tostring(data.type):find(&#039;^%s*[1AaIi]%s*$&#039;)&lt;br /&gt;
		then&lt;br /&gt;
			data.listStyleType = data.type&lt;br /&gt;
			data.type = nil&lt;br /&gt;
		end&lt;br /&gt;
	end&lt;br /&gt;
	&lt;br /&gt;
	-- List tag type&lt;br /&gt;
	if listType == &#039;ordered&#039; or listType == &#039;horizontal_ordered&#039; then&lt;br /&gt;
		data.listTag = &#039;ol&#039;&lt;br /&gt;
	else&lt;br /&gt;
		data.listTag = &#039;ul&#039;&lt;br /&gt;
	end&lt;br /&gt;
&lt;br /&gt;
	-- Start number for ordered lists&lt;br /&gt;
	data.start = args.start&lt;br /&gt;
	if listType == &#039;horizontal_ordered&#039; then&lt;br /&gt;
		-- Apply fix to get start numbers working with horizontal ordered lists.&lt;br /&gt;
		local startNum = tonumber(data.start)&lt;br /&gt;
		if startNum then&lt;br /&gt;
			data.counterReset = &#039;listitem &#039; .. tostring(startNum - 1)&lt;br /&gt;
		end&lt;br /&gt;
	end&lt;br /&gt;
&lt;br /&gt;
	-- List style&lt;br /&gt;
	 -- ul_style and ol_style are included for backwards compatibility. No&lt;br /&gt;
	 -- distinction is made for ordered or unordered lists.&lt;br /&gt;
	data.listStyle = args.list_style&lt;br /&gt;
&lt;br /&gt;
	-- List items&lt;br /&gt;
	-- li_style is included for backwards compatibility. item_style was included&lt;br /&gt;
	-- to be easier to understand for non-coders.&lt;br /&gt;
	data.itemStyle = args.item_style or args.li_style&lt;br /&gt;
	data.items = {}&lt;br /&gt;
	for _, num in ipairs(mTableTools.numKeys(args)) do&lt;br /&gt;
		local item = {}&lt;br /&gt;
		item.content = args[num]&lt;br /&gt;
		item.style = args[&#039;item&#039; .. tostring(num) .. &#039;_style&#039;]&lt;br /&gt;
			or args[&#039;item_style&#039; .. tostring(num)]&lt;br /&gt;
			or args[&#039;li_style&#039; .. tostring(num)]&lt;br /&gt;
		item.value = args[&#039;item&#039; .. tostring(num) .. &#039;_value&#039;]&lt;br /&gt;
			or args[&#039;item_value&#039; .. tostring(num)]&lt;br /&gt;
			or args[&#039;li_value&#039; .. tostring(num)]&lt;br /&gt;
		table.insert(data.items, item)&lt;br /&gt;
	end&lt;br /&gt;
	&lt;br /&gt;
	return data&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
function p.renderList(data)&lt;br /&gt;
	-- Renders the list HTML.&lt;br /&gt;
	&lt;br /&gt;
	-- Return the blank string if there are no list items.&lt;br /&gt;
	if type(data.items) ~= &#039;table&#039; or #data.items &amp;lt; 1 then&lt;br /&gt;
		return &#039;&#039;&lt;br /&gt;
	end&lt;br /&gt;
	&lt;br /&gt;
	-- Render the main div tag.&lt;br /&gt;
	local root = mw.html.create(&#039;div&#039;)&lt;br /&gt;
	for _, class in ipairs(data.classes or {}) do&lt;br /&gt;
		root:addClass(class)&lt;br /&gt;
	end&lt;br /&gt;
	root:css{[&#039;margin-left&#039;] = data.marginLeft}&lt;br /&gt;
	if data.style then&lt;br /&gt;
		root:cssText(data.style)&lt;br /&gt;
	end&lt;br /&gt;
&lt;br /&gt;
	-- Render the list tag.&lt;br /&gt;
	local list = root:tag(data.listTag or &#039;ul&#039;)&lt;br /&gt;
	list&lt;br /&gt;
		:attr{start = data.start, type = data.type}&lt;br /&gt;
		:css{&lt;br /&gt;
			[&#039;counter-reset&#039;] = data.counterReset,&lt;br /&gt;
			[&#039;list-style-type&#039;] = data.listStyleType&lt;br /&gt;
		}&lt;br /&gt;
	if data.listStyle then&lt;br /&gt;
		list:cssText(data.listStyle)&lt;br /&gt;
	end&lt;br /&gt;
&lt;br /&gt;
	-- Render the list items&lt;br /&gt;
	for _, t in ipairs(data.items or {}) do&lt;br /&gt;
		local item = list:tag(&#039;li&#039;)&lt;br /&gt;
		if data.itemStyle then&lt;br /&gt;
			item:cssText(data.itemStyle)&lt;br /&gt;
		end&lt;br /&gt;
		if t.style then&lt;br /&gt;
			item:cssText(t.style)&lt;br /&gt;
		end&lt;br /&gt;
		item&lt;br /&gt;
			:attr{value = t.value}&lt;br /&gt;
			:wikitext(t.content)&lt;br /&gt;
	end&lt;br /&gt;
&lt;br /&gt;
	return data.templatestyles .. tostring(root)&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
function p.renderTrackingCategories(args)&lt;br /&gt;
	local isDeprecated = false -- Tracks deprecated parameters.&lt;br /&gt;
	for k, v in pairs(args) do&lt;br /&gt;
		k = tostring(k)&lt;br /&gt;
		if k:find(&#039;^item_style%d+$&#039;) or k:find(&#039;^item_value%d+$&#039;) then&lt;br /&gt;
			isDeprecated = true&lt;br /&gt;
			break&lt;br /&gt;
		end&lt;br /&gt;
	end&lt;br /&gt;
	local ret = &#039;&#039;&lt;br /&gt;
	if isDeprecated then&lt;br /&gt;
		ret = ret .. &#039;[[Category:含有过期参数的列表模板]]&#039;&lt;br /&gt;
	end&lt;br /&gt;
	return ret&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
function p.makeList(listType, args)&lt;br /&gt;
	if not listType or not listTypes[listType] then&lt;br /&gt;
		error(string.format(&lt;br /&gt;
			&amp;quot;bad argument #1 to &#039;makeList&#039; (&#039;%s&#039;不是合适的列表类型)&amp;quot;,&lt;br /&gt;
			tostring(listType)&lt;br /&gt;
		), 2)&lt;br /&gt;
	end&lt;br /&gt;
	checkType(&#039;makeList&#039;, 2, args, &#039;table&#039;)&lt;br /&gt;
	local data = p.makeListData(listType, args)&lt;br /&gt;
	local list = p.renderList(data)&lt;br /&gt;
	local trackingCategories = p.renderTrackingCategories(args)&lt;br /&gt;
	return list .. trackingCategories&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
for listType in pairs(listTypes) do&lt;br /&gt;
	p[listType] = function (frame)&lt;br /&gt;
		local mArguments = require(&#039;Module:Arguments&#039;)&lt;br /&gt;
		local origArgs = mArguments.getArgs(frame, {&lt;br /&gt;
			frameOnly = ((frame and frame.args and frame.args.frameonly or &#039;&#039;) ~= &#039;&#039;),&lt;br /&gt;
			valueFunc = function (key, value)&lt;br /&gt;
			if not value or not mw.ustring.find(value, &#039;%S&#039;) then return nil end&lt;br /&gt;
			if mw.ustring.find(value, &#039;^%s*[%*#;:]&#039;) then&lt;br /&gt;
				return value&lt;br /&gt;
			else&lt;br /&gt;
				return value:match(&#039;^%s*(.-)%s*$&#039;)&lt;br /&gt;
			end&lt;br /&gt;
			return nil&lt;br /&gt;
		end&lt;br /&gt;
		})&lt;br /&gt;
		-- Copy all the arguments to a new table, for faster indexing.&lt;br /&gt;
		local args = {}&lt;br /&gt;
		for k, v in pairs(origArgs) do&lt;br /&gt;
			args[k] = v&lt;br /&gt;
		end&lt;br /&gt;
		return p.makeList(listType, args)&lt;br /&gt;
	end&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
return p&lt;/div&gt;</summary>
		<author><name>DoubleCircle</name></author>
	</entry>
	<entry>
		<id>https://9on0wiki.gunmu.dns.navy/index.php?title=Template:Center&amp;diff=722</id>
		<title>Template:Center</title>
		<link rel="alternate" type="text/html" href="https://9on0wiki.gunmu.dns.navy/index.php?title=Template:Center&amp;diff=722"/>
		<updated>2026-08-26T10:58:54Z</updated>

		<summary type="html">&lt;p&gt;DoubleCircle：​导入1个版本&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&amp;lt;includeonly&amp;gt;&amp;lt;div class=&amp;quot;center&amp;quot; {{#if: {{{style|}}} |style=&amp;quot;{{{style}}}&amp;quot;}}&amp;gt;{{{1}}}&amp;lt;/div&amp;gt;{{#ifeq:{{{1|}}}||[[Category:使用Center模板卻未提供置中文字參數]]}}&amp;lt;/includeonly&amp;gt;&amp;lt;noinclude&amp;gt;&lt;br /&gt;
{{documentation}}&lt;br /&gt;
&amp;lt;/noinclude&amp;gt;&lt;/div&gt;</summary>
		<author><name>DoubleCircle</name></author>
	</entry>
	<entry>
		<id>https://9on0wiki.gunmu.dns.navy/index.php?title=Module:Exponential_search&amp;diff=720</id>
		<title>Module:Exponential search</title>
		<link rel="alternate" type="text/html" href="https://9on0wiki.gunmu.dns.navy/index.php?title=Module:Exponential_search&amp;diff=720"/>
		<updated>2026-08-26T10:58:54Z</updated>

		<summary type="html">&lt;p&gt;DoubleCircle：​导入1个版本&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;-- This module provides a generic exponential search algorithm.&lt;br /&gt;
&lt;br /&gt;
local checkType = require(&#039;libraryUtil&#039;).checkType&lt;br /&gt;
local floor = math.floor&lt;br /&gt;
&lt;br /&gt;
local function midPoint(lower, upper)&lt;br /&gt;
	return floor(lower + (upper - lower) / 2)&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
local function search(testFunc, i, lower, upper)&lt;br /&gt;
	if testFunc(i) then&lt;br /&gt;
		if i + 1 == upper then&lt;br /&gt;
			return i&lt;br /&gt;
		end&lt;br /&gt;
		lower = i&lt;br /&gt;
		if upper then&lt;br /&gt;
			i = midPoint(lower, upper)&lt;br /&gt;
		else&lt;br /&gt;
			i = i * 2&lt;br /&gt;
		end&lt;br /&gt;
		return search(testFunc, i, lower, upper)&lt;br /&gt;
	else&lt;br /&gt;
		upper = i&lt;br /&gt;
		i = midPoint(lower, upper)&lt;br /&gt;
		return search(testFunc, i, lower, upper)&lt;br /&gt;
	end&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
return function (testFunc, init)&lt;br /&gt;
	checkType(&#039;Exponential search&#039;, 1, testFunc, &#039;function&#039;)&lt;br /&gt;
	checkType(&#039;Exponential search&#039;, 2, init, &#039;number&#039;, true)&lt;br /&gt;
	if init and (init &amp;lt; 1 or init ~= floor(init) or init == math.huge) then&lt;br /&gt;
		error(string.format(&lt;br /&gt;
			&amp;quot;无效的初始值 &#039;%s&#039; 在参数 #2 中检测到&amp;quot; ..&lt;br /&gt;
			&amp;quot;&#039;Exponential search&#039;（初始值必须是正整数）&amp;quot;,&lt;br /&gt;
			tostring(init)&lt;br /&gt;
		), 2)&lt;br /&gt;
	end&lt;br /&gt;
	init = init or 2&lt;br /&gt;
	if not testFunc(1) then&lt;br /&gt;
		return nil&lt;br /&gt;
	end&lt;br /&gt;
	return search(testFunc, init, 1, nil)&lt;br /&gt;
end&lt;/div&gt;</summary>
		<author><name>DoubleCircle</name></author>
	</entry>
	<entry>
		<id>https://9on0wiki.gunmu.dns.navy/index.php?title=Module:Unicode_data/scripts&amp;diff=718</id>
		<title>Module:Unicode data/scripts</title>
		<link rel="alternate" type="text/html" href="https://9on0wiki.gunmu.dns.navy/index.php?title=Module:Unicode_data/scripts&amp;diff=718"/>
		<updated>2026-08-26T10:58:54Z</updated>

		<summary type="html">&lt;p&gt;DoubleCircle：​导入1个版本&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;--[=[&lt;br /&gt;
-- Official Unicode script values for individual codepoints and ranges of&lt;br /&gt;
-- codepoints.&lt;br /&gt;
&lt;br /&gt;
-- https://www.unicode.org/Public/UNIDATA/Scripts.txt provided&lt;br /&gt;
-- the script names, and https://www.unicode.org/Public/UNIDATA/PropertyValueAliases.txt&lt;br /&gt;
-- provided script codes corresponding to the names (see [[Script (Unicode)]]).&lt;br /&gt;
--]=]&lt;br /&gt;
&lt;br /&gt;
local data = {&lt;br /&gt;
	singles = {&lt;br /&gt;
		[0x000AA] = &amp;quot;Latn&amp;quot;,&lt;br /&gt;
		[0x000BA] = &amp;quot;Latn&amp;quot;,&lt;br /&gt;
		[0x000D7] = &amp;quot;Zyyy&amp;quot;,&lt;br /&gt;
		[0x000F7] = &amp;quot;Zyyy&amp;quot;,&lt;br /&gt;
		[0x00374] = &amp;quot;Zyyy&amp;quot;,&lt;br /&gt;
		[0x0037E] = &amp;quot;Zyyy&amp;quot;,&lt;br /&gt;
		[0x0037F] = &amp;quot;Grek&amp;quot;,&lt;br /&gt;
		[0x00384] = &amp;quot;Grek&amp;quot;,&lt;br /&gt;
		[0x00385] = &amp;quot;Zyyy&amp;quot;,&lt;br /&gt;
		[0x00386] = &amp;quot;Grek&amp;quot;,&lt;br /&gt;
		[0x00387] = &amp;quot;Zyyy&amp;quot;,&lt;br /&gt;
		[0x0038C] = &amp;quot;Grek&amp;quot;,&lt;br /&gt;
		[0x00605] = &amp;quot;Zyyy&amp;quot;,&lt;br /&gt;
		[0x0060C] = &amp;quot;Zyyy&amp;quot;,&lt;br /&gt;
		[0x0061B] = &amp;quot;Zyyy&amp;quot;,&lt;br /&gt;
		[0x0061F] = &amp;quot;Zyyy&amp;quot;,&lt;br /&gt;
		[0x00640] = &amp;quot;Zyyy&amp;quot;,&lt;br /&gt;
		[0x00670] = &amp;quot;Zinh&amp;quot;,&lt;br /&gt;
		[0x006DD] = &amp;quot;Zyyy&amp;quot;,&lt;br /&gt;
		[0x0085E] = &amp;quot;Mand&amp;quot;,&lt;br /&gt;
		[0x008E2] = &amp;quot;Zyyy&amp;quot;,&lt;br /&gt;
		[0x009B2] = &amp;quot;Beng&amp;quot;,&lt;br /&gt;
		[0x009D7] = &amp;quot;Beng&amp;quot;,&lt;br /&gt;
		[0x00A3C] = &amp;quot;Guru&amp;quot;,&lt;br /&gt;
		[0x00A51] = &amp;quot;Guru&amp;quot;,&lt;br /&gt;
		[0x00A5E] = &amp;quot;Guru&amp;quot;,&lt;br /&gt;
		[0x00AD0] = &amp;quot;Gujr&amp;quot;,&lt;br /&gt;
		[0x00B9C] = &amp;quot;Taml&amp;quot;,&lt;br /&gt;
		[0x00BD0] = &amp;quot;Taml&amp;quot;,&lt;br /&gt;
		[0x00BD7] = &amp;quot;Taml&amp;quot;,&lt;br /&gt;
		[0x00C5D] = &amp;quot;Telu&amp;quot;,&lt;br /&gt;
		[0x00DBD] = &amp;quot;Sinh&amp;quot;,&lt;br /&gt;
		[0x00DCA] = &amp;quot;Sinh&amp;quot;,&lt;br /&gt;
		[0x00DD6] = &amp;quot;Sinh&amp;quot;,&lt;br /&gt;
		[0x00E3F] = &amp;quot;Zyyy&amp;quot;,&lt;br /&gt;
		[0x00E84] = &amp;quot;Laoo&amp;quot;,&lt;br /&gt;
		[0x00EA5] = &amp;quot;Laoo&amp;quot;,&lt;br /&gt;
		[0x00EC6] = &amp;quot;Laoo&amp;quot;,&lt;br /&gt;
		[0x010C7] = &amp;quot;Geor&amp;quot;,&lt;br /&gt;
		[0x010CD] = &amp;quot;Geor&amp;quot;,&lt;br /&gt;
		[0x010FB] = &amp;quot;Zyyy&amp;quot;,&lt;br /&gt;
		[0x01258] = &amp;quot;Ethi&amp;quot;,&lt;br /&gt;
		[0x012C0] = &amp;quot;Ethi&amp;quot;,&lt;br /&gt;
		[0x0171F] = &amp;quot;Tglg&amp;quot;,&lt;br /&gt;
		[0x01804] = &amp;quot;Mong&amp;quot;,&lt;br /&gt;
		[0x01805] = &amp;quot;Zyyy&amp;quot;,&lt;br /&gt;
		[0x01940] = &amp;quot;Limb&amp;quot;,&lt;br /&gt;
		[0x01CD3] = &amp;quot;Zyyy&amp;quot;,&lt;br /&gt;
		[0x01CE1] = &amp;quot;Zyyy&amp;quot;,&lt;br /&gt;
		[0x01CED] = &amp;quot;Zinh&amp;quot;,&lt;br /&gt;
		[0x01CF4] = &amp;quot;Zinh&amp;quot;,&lt;br /&gt;
		[0x01CFA] = &amp;quot;Zyyy&amp;quot;,&lt;br /&gt;
		[0x01D2B] = &amp;quot;Cyrl&amp;quot;,&lt;br /&gt;
		[0x01D78] = &amp;quot;Cyrl&amp;quot;,&lt;br /&gt;
		[0x01DBF] = &amp;quot;Grek&amp;quot;,&lt;br /&gt;
		[0x01F59] = &amp;quot;Grek&amp;quot;,&lt;br /&gt;
		[0x01F5B] = &amp;quot;Grek&amp;quot;,&lt;br /&gt;
		[0x01F5D] = &amp;quot;Grek&amp;quot;,&lt;br /&gt;
		[0x02071] = &amp;quot;Latn&amp;quot;,&lt;br /&gt;
		[0x0207F] = &amp;quot;Latn&amp;quot;,&lt;br /&gt;
		[0x02126] = &amp;quot;Grek&amp;quot;,&lt;br /&gt;
		[0x02132] = &amp;quot;Latn&amp;quot;,&lt;br /&gt;
		[0x0214E] = &amp;quot;Latn&amp;quot;,&lt;br /&gt;
		[0x02D27] = &amp;quot;Geor&amp;quot;,&lt;br /&gt;
		[0x02D2D] = &amp;quot;Geor&amp;quot;,&lt;br /&gt;
		[0x02D7F] = &amp;quot;Tfng&amp;quot;,&lt;br /&gt;
		[0x03005] = &amp;quot;Hani&amp;quot;,&lt;br /&gt;
		[0x03006] = &amp;quot;Zyyy&amp;quot;,&lt;br /&gt;
		[0x03007] = &amp;quot;Hani&amp;quot;,&lt;br /&gt;
		[0x030A0] = &amp;quot;Zyyy&amp;quot;,&lt;br /&gt;
		[0x032FF] = &amp;quot;Zyyy&amp;quot;,&lt;br /&gt;
		[0x0A7D3] = &amp;quot;Latn&amp;quot;,&lt;br /&gt;
		[0x0A92E] = &amp;quot;Zyyy&amp;quot;,&lt;br /&gt;
		[0x0A92F] = &amp;quot;Kali&amp;quot;,&lt;br /&gt;
		[0x0A95F] = &amp;quot;Rjng&amp;quot;,&lt;br /&gt;
		[0x0A9CF] = &amp;quot;Zyyy&amp;quot;,&lt;br /&gt;
		[0x0AB5B] = &amp;quot;Zyyy&amp;quot;,&lt;br /&gt;
		[0x0AB65] = &amp;quot;Grek&amp;quot;,&lt;br /&gt;
		[0x0FB3E] = &amp;quot;Hebr&amp;quot;,&lt;br /&gt;
		[0x0FDCF] = &amp;quot;Arab&amp;quot;,&lt;br /&gt;
		[0x0FEFF] = &amp;quot;Zyyy&amp;quot;,&lt;br /&gt;
		[0x0FF70] = &amp;quot;Zyyy&amp;quot;,&lt;br /&gt;
		[0x101A0] = &amp;quot;Grek&amp;quot;,&lt;br /&gt;
		[0x101FD] = &amp;quot;Zinh&amp;quot;,&lt;br /&gt;
		[0x102E0] = &amp;quot;Zinh&amp;quot;,&lt;br /&gt;
		[0x1039F] = &amp;quot;Ugar&amp;quot;,&lt;br /&gt;
		[0x1056F] = &amp;quot;Aghb&amp;quot;,&lt;br /&gt;
		[0x10808] = &amp;quot;Cprt&amp;quot;,&lt;br /&gt;
		[0x1083C] = &amp;quot;Cprt&amp;quot;,&lt;br /&gt;
		[0x1083F] = &amp;quot;Cprt&amp;quot;,&lt;br /&gt;
		[0x1091F] = &amp;quot;Phnx&amp;quot;,&lt;br /&gt;
		[0x1093F] = &amp;quot;Lydi&amp;quot;,&lt;br /&gt;
		[0x1107F] = &amp;quot;Brah&amp;quot;,&lt;br /&gt;
		[0x110CD] = &amp;quot;Kthi&amp;quot;,&lt;br /&gt;
		[0x11288] = &amp;quot;Mult&amp;quot;,&lt;br /&gt;
		[0x1133B] = &amp;quot;Zinh&amp;quot;,&lt;br /&gt;
		[0x11350] = &amp;quot;Gran&amp;quot;,&lt;br /&gt;
		[0x11357] = &amp;quot;Gran&amp;quot;,&lt;br /&gt;
		[0x118FF] = &amp;quot;Wara&amp;quot;,&lt;br /&gt;
		[0x11909] = &amp;quot;Diak&amp;quot;,&lt;br /&gt;
		[0x11D3A] = &amp;quot;Gonm&amp;quot;,&lt;br /&gt;
		[0x11FB0] = &amp;quot;Lisu&amp;quot;,&lt;br /&gt;
		[0x11FFF] = &amp;quot;Taml&amp;quot;,&lt;br /&gt;
		[0x16FE0] = &amp;quot;Tang&amp;quot;,&lt;br /&gt;
		[0x16FE1] = &amp;quot;Nshu&amp;quot;,&lt;br /&gt;
		[0x16FE4] = &amp;quot;Kits&amp;quot;,&lt;br /&gt;
		[0x1B000] = &amp;quot;Kana&amp;quot;,&lt;br /&gt;
		[0x1B132] = &amp;quot;Hira&amp;quot;,&lt;br /&gt;
		[0x1B155] = &amp;quot;Kana&amp;quot;,&lt;br /&gt;
		[0x1D4A2] = &amp;quot;Zyyy&amp;quot;,&lt;br /&gt;
		[0x1D4BB] = &amp;quot;Zyyy&amp;quot;,&lt;br /&gt;
		[0x1D546] = &amp;quot;Zyyy&amp;quot;,&lt;br /&gt;
		[0x1E08F] = &amp;quot;Cyrl&amp;quot;,&lt;br /&gt;
		[0x1E2FF] = &amp;quot;Wcho&amp;quot;,&lt;br /&gt;
		[0x1EE24] = &amp;quot;Arab&amp;quot;,&lt;br /&gt;
		[0x1EE27] = &amp;quot;Arab&amp;quot;,&lt;br /&gt;
		[0x1EE39] = &amp;quot;Arab&amp;quot;,&lt;br /&gt;
		[0x1EE3B] = &amp;quot;Arab&amp;quot;,&lt;br /&gt;
		[0x1EE42] = &amp;quot;Arab&amp;quot;,&lt;br /&gt;
		[0x1EE47] = &amp;quot;Arab&amp;quot;,&lt;br /&gt;
		[0x1EE49] = &amp;quot;Arab&amp;quot;,&lt;br /&gt;
		[0x1EE4B] = &amp;quot;Arab&amp;quot;,&lt;br /&gt;
		[0x1EE54] = &amp;quot;Arab&amp;quot;,&lt;br /&gt;
		[0x1EE57] = &amp;quot;Arab&amp;quot;,&lt;br /&gt;
		[0x1EE59] = &amp;quot;Arab&amp;quot;,&lt;br /&gt;
		[0x1EE5B] = &amp;quot;Arab&amp;quot;,&lt;br /&gt;
		[0x1EE5D] = &amp;quot;Arab&amp;quot;,&lt;br /&gt;
		[0x1EE5F] = &amp;quot;Arab&amp;quot;,&lt;br /&gt;
		[0x1EE64] = &amp;quot;Arab&amp;quot;,&lt;br /&gt;
		[0x1EE7E] = &amp;quot;Arab&amp;quot;,&lt;br /&gt;
		[0x1F200] = &amp;quot;Hira&amp;quot;,&lt;br /&gt;
		[0x1F7F0] = &amp;quot;Zyyy&amp;quot;,&lt;br /&gt;
		[0xE0001] = &amp;quot;Zyyy&amp;quot;,&lt;br /&gt;
	},&lt;br /&gt;
	&lt;br /&gt;
	ranges = {&lt;br /&gt;
		{ 0x00000, 0x00040, &amp;quot;Zyyy&amp;quot; },&lt;br /&gt;
		{ 0x00041, 0x0005A, &amp;quot;Latn&amp;quot; },&lt;br /&gt;
		{ 0x0005B, 0x00060, &amp;quot;Zyyy&amp;quot; },&lt;br /&gt;
		{ 0x00061, 0x0007A, &amp;quot;Latn&amp;quot; },&lt;br /&gt;
		{ 0x0007B, 0x000A9, &amp;quot;Zyyy&amp;quot; },&lt;br /&gt;
		{ 0x000AB, 0x000B9, &amp;quot;Zyyy&amp;quot; },&lt;br /&gt;
		{ 0x000BB, 0x000BF, &amp;quot;Zyyy&amp;quot; },&lt;br /&gt;
		{ 0x000C0, 0x000D6, &amp;quot;Latn&amp;quot; },&lt;br /&gt;
		{ 0x000D8, 0x000F6, &amp;quot;Latn&amp;quot; },&lt;br /&gt;
		{ 0x000F8, 0x002B8, &amp;quot;Latn&amp;quot; },&lt;br /&gt;
		{ 0x002B9, 0x002DF, &amp;quot;Zyyy&amp;quot; },&lt;br /&gt;
		{ 0x002E0, 0x002E4, &amp;quot;Latn&amp;quot; },&lt;br /&gt;
		{ 0x002E5, 0x002E9, &amp;quot;Zyyy&amp;quot; },&lt;br /&gt;
		{ 0x002EA, 0x002EB, &amp;quot;Bopo&amp;quot; },&lt;br /&gt;
		{ 0x002EC, 0x002FF, &amp;quot;Zyyy&amp;quot; },&lt;br /&gt;
		{ 0x00300, 0x0036F, &amp;quot;Zinh&amp;quot; },&lt;br /&gt;
		{ 0x00370, 0x00373, &amp;quot;Grek&amp;quot; },&lt;br /&gt;
		{ 0x00375, 0x00377, &amp;quot;Grek&amp;quot; },&lt;br /&gt;
		{ 0x0037A, 0x0037D, &amp;quot;Grek&amp;quot; },&lt;br /&gt;
		{ 0x00388, 0x0038A, &amp;quot;Grek&amp;quot; },&lt;br /&gt;
		{ 0x0038E, 0x003A1, &amp;quot;Grek&amp;quot; },&lt;br /&gt;
		{ 0x003A3, 0x003E1, &amp;quot;Grek&amp;quot; },&lt;br /&gt;
		{ 0x003E2, 0x003EF, &amp;quot;Copt&amp;quot; },&lt;br /&gt;
		{ 0x003F0, 0x003FF, &amp;quot;Grek&amp;quot; },&lt;br /&gt;
		{ 0x00400, 0x00484, &amp;quot;Cyrl&amp;quot; },&lt;br /&gt;
		{ 0x00485, 0x00486, &amp;quot;Zinh&amp;quot; },&lt;br /&gt;
		{ 0x00487, 0x0052F, &amp;quot;Cyrl&amp;quot; },&lt;br /&gt;
		{ 0x00531, 0x00556, &amp;quot;Armn&amp;quot; },&lt;br /&gt;
		{ 0x00559, 0x0058A, &amp;quot;Armn&amp;quot; },&lt;br /&gt;
		{ 0x0058D, 0x0058F, &amp;quot;Armn&amp;quot; },&lt;br /&gt;
		{ 0x00591, 0x005C7, &amp;quot;Hebr&amp;quot; },&lt;br /&gt;
		{ 0x005D0, 0x005EA, &amp;quot;Hebr&amp;quot; },&lt;br /&gt;
		{ 0x005EF, 0x005F4, &amp;quot;Hebr&amp;quot; },&lt;br /&gt;
		{ 0x00600, 0x00604, &amp;quot;Arab&amp;quot; },&lt;br /&gt;
		{ 0x00606, 0x0060B, &amp;quot;Arab&amp;quot; },&lt;br /&gt;
		{ 0x0060D, 0x0061A, &amp;quot;Arab&amp;quot; },&lt;br /&gt;
		{ 0x0061C, 0x0061E, &amp;quot;Arab&amp;quot; },&lt;br /&gt;
		{ 0x00620, 0x0063F, &amp;quot;Arab&amp;quot; },&lt;br /&gt;
		{ 0x00641, 0x0064A, &amp;quot;Arab&amp;quot; },&lt;br /&gt;
		{ 0x0064B, 0x00655, &amp;quot;Zinh&amp;quot; },&lt;br /&gt;
		{ 0x00656, 0x0066F, &amp;quot;Arab&amp;quot; },&lt;br /&gt;
		{ 0x00671, 0x006DC, &amp;quot;Arab&amp;quot; },&lt;br /&gt;
		{ 0x006DE, 0x006FF, &amp;quot;Arab&amp;quot; },&lt;br /&gt;
		{ 0x00700, 0x0070D, &amp;quot;Syrc&amp;quot; },&lt;br /&gt;
		{ 0x0070F, 0x0074A, &amp;quot;Syrc&amp;quot; },&lt;br /&gt;
		{ 0x0074D, 0x0074F, &amp;quot;Syrc&amp;quot; },&lt;br /&gt;
		{ 0x00750, 0x0077F, &amp;quot;Arab&amp;quot; },&lt;br /&gt;
		{ 0x00780, 0x007B1, &amp;quot;Thaa&amp;quot; },&lt;br /&gt;
		{ 0x007C0, 0x007FA, &amp;quot;Nkoo&amp;quot; },&lt;br /&gt;
		{ 0x007FD, 0x007FF, &amp;quot;Nkoo&amp;quot; },&lt;br /&gt;
		{ 0x00800, 0x0082D, &amp;quot;Samr&amp;quot; },&lt;br /&gt;
		{ 0x00830, 0x0083E, &amp;quot;Samr&amp;quot; },&lt;br /&gt;
		{ 0x00840, 0x0085B, &amp;quot;Mand&amp;quot; },&lt;br /&gt;
		{ 0x00860, 0x0086A, &amp;quot;Syrc&amp;quot; },&lt;br /&gt;
		{ 0x00870, 0x0088E, &amp;quot;Arab&amp;quot; },&lt;br /&gt;
		{ 0x00890, 0x00891, &amp;quot;Arab&amp;quot; },&lt;br /&gt;
		{ 0x00898, 0x008E1, &amp;quot;Arab&amp;quot; },&lt;br /&gt;
		{ 0x008E3, 0x008FF, &amp;quot;Arab&amp;quot; },&lt;br /&gt;
		{ 0x00900, 0x00950, &amp;quot;Deva&amp;quot; },&lt;br /&gt;
		{ 0x00951, 0x00954, &amp;quot;Zinh&amp;quot; },&lt;br /&gt;
		{ 0x00955, 0x00963, &amp;quot;Deva&amp;quot; },&lt;br /&gt;
		{ 0x00964, 0x00965, &amp;quot;Zyyy&amp;quot; },&lt;br /&gt;
		{ 0x00966, 0x0097F, &amp;quot;Deva&amp;quot; },&lt;br /&gt;
		{ 0x00980, 0x00983, &amp;quot;Beng&amp;quot; },&lt;br /&gt;
		{ 0x00985, 0x0098C, &amp;quot;Beng&amp;quot; },&lt;br /&gt;
		{ 0x0098F, 0x00990, &amp;quot;Beng&amp;quot; },&lt;br /&gt;
		{ 0x00993, 0x009A8, &amp;quot;Beng&amp;quot; },&lt;br /&gt;
		{ 0x009AA, 0x009B0, &amp;quot;Beng&amp;quot; },&lt;br /&gt;
		{ 0x009B6, 0x009B9, &amp;quot;Beng&amp;quot; },&lt;br /&gt;
		{ 0x009BC, 0x009C4, &amp;quot;Beng&amp;quot; },&lt;br /&gt;
		{ 0x009C7, 0x009C8, &amp;quot;Beng&amp;quot; },&lt;br /&gt;
		{ 0x009CB, 0x009CE, &amp;quot;Beng&amp;quot; },&lt;br /&gt;
		{ 0x009DC, 0x009DD, &amp;quot;Beng&amp;quot; },&lt;br /&gt;
		{ 0x009DF, 0x009E3, &amp;quot;Beng&amp;quot; },&lt;br /&gt;
		{ 0x009E6, 0x009FE, &amp;quot;Beng&amp;quot; },&lt;br /&gt;
		{ 0x00A01, 0x00A03, &amp;quot;Guru&amp;quot; },&lt;br /&gt;
		{ 0x00A05, 0x00A0A, &amp;quot;Guru&amp;quot; },&lt;br /&gt;
		{ 0x00A0F, 0x00A10, &amp;quot;Guru&amp;quot; },&lt;br /&gt;
		{ 0x00A13, 0x00A28, &amp;quot;Guru&amp;quot; },&lt;br /&gt;
		{ 0x00A2A, 0x00A30, &amp;quot;Guru&amp;quot; },&lt;br /&gt;
		{ 0x00A32, 0x00A33, &amp;quot;Guru&amp;quot; },&lt;br /&gt;
		{ 0x00A35, 0x00A36, &amp;quot;Guru&amp;quot; },&lt;br /&gt;
		{ 0x00A38, 0x00A39, &amp;quot;Guru&amp;quot; },&lt;br /&gt;
		{ 0x00A3E, 0x00A42, &amp;quot;Guru&amp;quot; },&lt;br /&gt;
		{ 0x00A47, 0x00A48, &amp;quot;Guru&amp;quot; },&lt;br /&gt;
		{ 0x00A4B, 0x00A4D, &amp;quot;Guru&amp;quot; },&lt;br /&gt;
		{ 0x00A59, 0x00A5C, &amp;quot;Guru&amp;quot; },&lt;br /&gt;
		{ 0x00A66, 0x00A76, &amp;quot;Guru&amp;quot; },&lt;br /&gt;
		{ 0x00A81, 0x00A83, &amp;quot;Gujr&amp;quot; },&lt;br /&gt;
		{ 0x00A85, 0x00A8D, &amp;quot;Gujr&amp;quot; },&lt;br /&gt;
		{ 0x00A8F, 0x00A91, &amp;quot;Gujr&amp;quot; },&lt;br /&gt;
		{ 0x00A93, 0x00AA8, &amp;quot;Gujr&amp;quot; },&lt;br /&gt;
		{ 0x00AAA, 0x00AB0, &amp;quot;Gujr&amp;quot; },&lt;br /&gt;
		{ 0x00AB2, 0x00AB3, &amp;quot;Gujr&amp;quot; },&lt;br /&gt;
		{ 0x00AB5, 0x00AB9, &amp;quot;Gujr&amp;quot; },&lt;br /&gt;
		{ 0x00ABC, 0x00AC5, &amp;quot;Gujr&amp;quot; },&lt;br /&gt;
		{ 0x00AC7, 0x00AC9, &amp;quot;Gujr&amp;quot; },&lt;br /&gt;
		{ 0x00ACB, 0x00ACD, &amp;quot;Gujr&amp;quot; },&lt;br /&gt;
		{ 0x00AE0, 0x00AE3, &amp;quot;Gujr&amp;quot; },&lt;br /&gt;
		{ 0x00AE6, 0x00AF1, &amp;quot;Gujr&amp;quot; },&lt;br /&gt;
		{ 0x00AF9, 0x00AFF, &amp;quot;Gujr&amp;quot; },&lt;br /&gt;
		{ 0x00B01, 0x00B03, &amp;quot;Orya&amp;quot; },&lt;br /&gt;
		{ 0x00B05, 0x00B0C, &amp;quot;Orya&amp;quot; },&lt;br /&gt;
		{ 0x00B0F, 0x00B10, &amp;quot;Orya&amp;quot; },&lt;br /&gt;
		{ 0x00B13, 0x00B28, &amp;quot;Orya&amp;quot; },&lt;br /&gt;
		{ 0x00B2A, 0x00B30, &amp;quot;Orya&amp;quot; },&lt;br /&gt;
		{ 0x00B32, 0x00B33, &amp;quot;Orya&amp;quot; },&lt;br /&gt;
		{ 0x00B35, 0x00B39, &amp;quot;Orya&amp;quot; },&lt;br /&gt;
		{ 0x00B3C, 0x00B44, &amp;quot;Orya&amp;quot; },&lt;br /&gt;
		{ 0x00B47, 0x00B48, &amp;quot;Orya&amp;quot; },&lt;br /&gt;
		{ 0x00B4B, 0x00B4D, &amp;quot;Orya&amp;quot; },&lt;br /&gt;
		{ 0x00B55, 0x00B57, &amp;quot;Orya&amp;quot; },&lt;br /&gt;
		{ 0x00B5C, 0x00B5D, &amp;quot;Orya&amp;quot; },&lt;br /&gt;
		{ 0x00B5F, 0x00B63, &amp;quot;Orya&amp;quot; },&lt;br /&gt;
		{ 0x00B66, 0x00B77, &amp;quot;Orya&amp;quot; },&lt;br /&gt;
		{ 0x00B82, 0x00B83, &amp;quot;Taml&amp;quot; },&lt;br /&gt;
		{ 0x00B85, 0x00B8A, &amp;quot;Taml&amp;quot; },&lt;br /&gt;
		{ 0x00B8E, 0x00B90, &amp;quot;Taml&amp;quot; },&lt;br /&gt;
		{ 0x00B92, 0x00B95, &amp;quot;Taml&amp;quot; },&lt;br /&gt;
		{ 0x00B99, 0x00B9A, &amp;quot;Taml&amp;quot; },&lt;br /&gt;
		{ 0x00B9E, 0x00B9F, &amp;quot;Taml&amp;quot; },&lt;br /&gt;
		{ 0x00BA3, 0x00BA4, &amp;quot;Taml&amp;quot; },&lt;br /&gt;
		{ 0x00BA8, 0x00BAA, &amp;quot;Taml&amp;quot; },&lt;br /&gt;
		{ 0x00BAE, 0x00BB9, &amp;quot;Taml&amp;quot; },&lt;br /&gt;
		{ 0x00BBE, 0x00BC2, &amp;quot;Taml&amp;quot; },&lt;br /&gt;
		{ 0x00BC6, 0x00BC8, &amp;quot;Taml&amp;quot; },&lt;br /&gt;
		{ 0x00BCA, 0x00BCD, &amp;quot;Taml&amp;quot; },&lt;br /&gt;
		{ 0x00BE6, 0x00BFA, &amp;quot;Taml&amp;quot; },&lt;br /&gt;
		{ 0x00C00, 0x00C0C, &amp;quot;Telu&amp;quot; },&lt;br /&gt;
		{ 0x00C0E, 0x00C10, &amp;quot;Telu&amp;quot; },&lt;br /&gt;
		{ 0x00C12, 0x00C28, &amp;quot;Telu&amp;quot; },&lt;br /&gt;
		{ 0x00C2A, 0x00C39, &amp;quot;Telu&amp;quot; },&lt;br /&gt;
		{ 0x00C3C, 0x00C44, &amp;quot;Telu&amp;quot; },&lt;br /&gt;
		{ 0x00C46, 0x00C48, &amp;quot;Telu&amp;quot; },&lt;br /&gt;
		{ 0x00C4A, 0x00C4D, &amp;quot;Telu&amp;quot; },&lt;br /&gt;
		{ 0x00C55, 0x00C56, &amp;quot;Telu&amp;quot; },&lt;br /&gt;
		{ 0x00C58, 0x00C5A, &amp;quot;Telu&amp;quot; },&lt;br /&gt;
		{ 0x00C60, 0x00C63, &amp;quot;Telu&amp;quot; },&lt;br /&gt;
		{ 0x00C66, 0x00C6F, &amp;quot;Telu&amp;quot; },&lt;br /&gt;
		{ 0x00C77, 0x00C7F, &amp;quot;Telu&amp;quot; },&lt;br /&gt;
		{ 0x00C80, 0x00C8C, &amp;quot;Knda&amp;quot; },&lt;br /&gt;
		{ 0x00C8E, 0x00C90, &amp;quot;Knda&amp;quot; },&lt;br /&gt;
		{ 0x00C92, 0x00CA8, &amp;quot;Knda&amp;quot; },&lt;br /&gt;
		{ 0x00CAA, 0x00CB3, &amp;quot;Knda&amp;quot; },&lt;br /&gt;
		{ 0x00CB5, 0x00CB9, &amp;quot;Knda&amp;quot; },&lt;br /&gt;
		{ 0x00CBC, 0x00CC4, &amp;quot;Knda&amp;quot; },&lt;br /&gt;
		{ 0x00CC6, 0x00CC8, &amp;quot;Knda&amp;quot; },&lt;br /&gt;
		{ 0x00CCA, 0x00CCD, &amp;quot;Knda&amp;quot; },&lt;br /&gt;
		{ 0x00CD5, 0x00CD6, &amp;quot;Knda&amp;quot; },&lt;br /&gt;
		{ 0x00CDD, 0x00CDE, &amp;quot;Knda&amp;quot; },&lt;br /&gt;
		{ 0x00CE0, 0x00CE3, &amp;quot;Knda&amp;quot; },&lt;br /&gt;
		{ 0x00CE6, 0x00CEF, &amp;quot;Knda&amp;quot; },&lt;br /&gt;
		{ 0x00CF1, 0x00CF3, &amp;quot;Knda&amp;quot; },&lt;br /&gt;
		{ 0x00D00, 0x00D0C, &amp;quot;Mlym&amp;quot; },&lt;br /&gt;
		{ 0x00D0E, 0x00D10, &amp;quot;Mlym&amp;quot; },&lt;br /&gt;
		{ 0x00D12, 0x00D44, &amp;quot;Mlym&amp;quot; },&lt;br /&gt;
		{ 0x00D46, 0x00D48, &amp;quot;Mlym&amp;quot; },&lt;br /&gt;
		{ 0x00D4A, 0x00D4F, &amp;quot;Mlym&amp;quot; },&lt;br /&gt;
		{ 0x00D54, 0x00D63, &amp;quot;Mlym&amp;quot; },&lt;br /&gt;
		{ 0x00D66, 0x00D7F, &amp;quot;Mlym&amp;quot; },&lt;br /&gt;
		{ 0x00D81, 0x00D83, &amp;quot;Sinh&amp;quot; },&lt;br /&gt;
		{ 0x00D85, 0x00D96, &amp;quot;Sinh&amp;quot; },&lt;br /&gt;
		{ 0x00D9A, 0x00DB1, &amp;quot;Sinh&amp;quot; },&lt;br /&gt;
		{ 0x00DB3, 0x00DBB, &amp;quot;Sinh&amp;quot; },&lt;br /&gt;
		{ 0x00DC0, 0x00DC6, &amp;quot;Sinh&amp;quot; },&lt;br /&gt;
		{ 0x00DCF, 0x00DD4, &amp;quot;Sinh&amp;quot; },&lt;br /&gt;
		{ 0x00DD8, 0x00DDF, &amp;quot;Sinh&amp;quot; },&lt;br /&gt;
		{ 0x00DE6, 0x00DEF, &amp;quot;Sinh&amp;quot; },&lt;br /&gt;
		{ 0x00DF2, 0x00DF4, &amp;quot;Sinh&amp;quot; },&lt;br /&gt;
		{ 0x00E01, 0x00E3A, &amp;quot;Thai&amp;quot; },&lt;br /&gt;
		{ 0x00E40, 0x00E5B, &amp;quot;Thai&amp;quot; },&lt;br /&gt;
		{ 0x00E81, 0x00E82, &amp;quot;Laoo&amp;quot; },&lt;br /&gt;
		{ 0x00E86, 0x00E8A, &amp;quot;Laoo&amp;quot; },&lt;br /&gt;
		{ 0x00E8C, 0x00EA3, &amp;quot;Laoo&amp;quot; },&lt;br /&gt;
		{ 0x00EA7, 0x00EBD, &amp;quot;Laoo&amp;quot; },&lt;br /&gt;
		{ 0x00EC0, 0x00EC4, &amp;quot;Laoo&amp;quot; },&lt;br /&gt;
		{ 0x00EC8, 0x00ECE, &amp;quot;Laoo&amp;quot; },&lt;br /&gt;
		{ 0x00ED0, 0x00ED9, &amp;quot;Laoo&amp;quot; },&lt;br /&gt;
		{ 0x00EDC, 0x00EDF, &amp;quot;Laoo&amp;quot; },&lt;br /&gt;
		{ 0x00F00, 0x00F47, &amp;quot;Tibt&amp;quot; },&lt;br /&gt;
		{ 0x00F49, 0x00F6C, &amp;quot;Tibt&amp;quot; },&lt;br /&gt;
		{ 0x00F71, 0x00F97, &amp;quot;Tibt&amp;quot; },&lt;br /&gt;
		{ 0x00F99, 0x00FBC, &amp;quot;Tibt&amp;quot; },&lt;br /&gt;
		{ 0x00FBE, 0x00FCC, &amp;quot;Tibt&amp;quot; },&lt;br /&gt;
		{ 0x00FCE, 0x00FD4, &amp;quot;Tibt&amp;quot; },&lt;br /&gt;
		{ 0x00FD5, 0x00FD8, &amp;quot;Zyyy&amp;quot; },&lt;br /&gt;
		{ 0x00FD9, 0x00FDA, &amp;quot;Tibt&amp;quot; },&lt;br /&gt;
		{ 0x01000, 0x0109F, &amp;quot;Mymr&amp;quot; },&lt;br /&gt;
		{ 0x010A0, 0x010C5, &amp;quot;Geor&amp;quot; },&lt;br /&gt;
		{ 0x010D0, 0x010FA, &amp;quot;Geor&amp;quot; },&lt;br /&gt;
		{ 0x010FC, 0x010FF, &amp;quot;Geor&amp;quot; },&lt;br /&gt;
		{ 0x01100, 0x011FF, &amp;quot;Hang&amp;quot; },&lt;br /&gt;
		{ 0x01200, 0x01248, &amp;quot;Ethi&amp;quot; },&lt;br /&gt;
		{ 0x0124A, 0x0124D, &amp;quot;Ethi&amp;quot; },&lt;br /&gt;
		{ 0x01250, 0x01256, &amp;quot;Ethi&amp;quot; },&lt;br /&gt;
		{ 0x0125A, 0x0125D, &amp;quot;Ethi&amp;quot; },&lt;br /&gt;
		{ 0x01260, 0x01288, &amp;quot;Ethi&amp;quot; },&lt;br /&gt;
		{ 0x0128A, 0x0128D, &amp;quot;Ethi&amp;quot; },&lt;br /&gt;
		{ 0x01290, 0x012B0, &amp;quot;Ethi&amp;quot; },&lt;br /&gt;
		{ 0x012B2, 0x012B5, &amp;quot;Ethi&amp;quot; },&lt;br /&gt;
		{ 0x012B8, 0x012BE, &amp;quot;Ethi&amp;quot; },&lt;br /&gt;
		{ 0x012C2, 0x012C5, &amp;quot;Ethi&amp;quot; },&lt;br /&gt;
		{ 0x012C8, 0x012D6, &amp;quot;Ethi&amp;quot; },&lt;br /&gt;
		{ 0x012D8, 0x01310, &amp;quot;Ethi&amp;quot; },&lt;br /&gt;
		{ 0x01312, 0x01315, &amp;quot;Ethi&amp;quot; },&lt;br /&gt;
		{ 0x01318, 0x0135A, &amp;quot;Ethi&amp;quot; },&lt;br /&gt;
		{ 0x0135D, 0x0137C, &amp;quot;Ethi&amp;quot; },&lt;br /&gt;
		{ 0x01380, 0x01399, &amp;quot;Ethi&amp;quot; },&lt;br /&gt;
		{ 0x013A0, 0x013F5, &amp;quot;Cher&amp;quot; },&lt;br /&gt;
		{ 0x013F8, 0x013FD, &amp;quot;Cher&amp;quot; },&lt;br /&gt;
		{ 0x01400, 0x0167F, &amp;quot;Cans&amp;quot; },&lt;br /&gt;
		{ 0x01680, 0x0169C, &amp;quot;Ogam&amp;quot; },&lt;br /&gt;
		{ 0x016A0, 0x016EA, &amp;quot;Runr&amp;quot; },&lt;br /&gt;
		{ 0x016EB, 0x016ED, &amp;quot;Zyyy&amp;quot; },&lt;br /&gt;
		{ 0x016EE, 0x016F8, &amp;quot;Runr&amp;quot; },&lt;br /&gt;
		{ 0x01700, 0x01715, &amp;quot;Tglg&amp;quot; },&lt;br /&gt;
		{ 0x01720, 0x01734, &amp;quot;Hano&amp;quot; },&lt;br /&gt;
		{ 0x01735, 0x01736, &amp;quot;Zyyy&amp;quot; },&lt;br /&gt;
		{ 0x01740, 0x01753, &amp;quot;Buhd&amp;quot; },&lt;br /&gt;
		{ 0x01760, 0x0176C, &amp;quot;Tagb&amp;quot; },&lt;br /&gt;
		{ 0x0176E, 0x01770, &amp;quot;Tagb&amp;quot; },&lt;br /&gt;
		{ 0x01772, 0x01773, &amp;quot;Tagb&amp;quot; },&lt;br /&gt;
		{ 0x01780, 0x017DD, &amp;quot;Khmr&amp;quot; },&lt;br /&gt;
		{ 0x017E0, 0x017E9, &amp;quot;Khmr&amp;quot; },&lt;br /&gt;
		{ 0x017F0, 0x017F9, &amp;quot;Khmr&amp;quot; },&lt;br /&gt;
		{ 0x01800, 0x01801, &amp;quot;Mong&amp;quot; },&lt;br /&gt;
		{ 0x01802, 0x01803, &amp;quot;Zyyy&amp;quot; },&lt;br /&gt;
		{ 0x01806, 0x01819, &amp;quot;Mong&amp;quot; },&lt;br /&gt;
		{ 0x01820, 0x01878, &amp;quot;Mong&amp;quot; },&lt;br /&gt;
		{ 0x01880, 0x018AA, &amp;quot;Mong&amp;quot; },&lt;br /&gt;
		{ 0x018B0, 0x018F5, &amp;quot;Cans&amp;quot; },&lt;br /&gt;
		{ 0x01900, 0x0191E, &amp;quot;Limb&amp;quot; },&lt;br /&gt;
		{ 0x01920, 0x0192B, &amp;quot;Limb&amp;quot; },&lt;br /&gt;
		{ 0x01930, 0x0193B, &amp;quot;Limb&amp;quot; },&lt;br /&gt;
		{ 0x01944, 0x0194F, &amp;quot;Limb&amp;quot; },&lt;br /&gt;
		{ 0x01950, 0x0196D, &amp;quot;Tale&amp;quot; },&lt;br /&gt;
		{ 0x01970, 0x01974, &amp;quot;Tale&amp;quot; },&lt;br /&gt;
		{ 0x01980, 0x019AB, &amp;quot;Talu&amp;quot; },&lt;br /&gt;
		{ 0x019B0, 0x019C9, &amp;quot;Talu&amp;quot; },&lt;br /&gt;
		{ 0x019D0, 0x019DA, &amp;quot;Talu&amp;quot; },&lt;br /&gt;
		{ 0x019DE, 0x019DF, &amp;quot;Talu&amp;quot; },&lt;br /&gt;
		{ 0x019E0, 0x019FF, &amp;quot;Khmr&amp;quot; },&lt;br /&gt;
		{ 0x01A00, 0x01A1B, &amp;quot;Bugi&amp;quot; },&lt;br /&gt;
		{ 0x01A1E, 0x01A1F, &amp;quot;Bugi&amp;quot; },&lt;br /&gt;
		{ 0x01A20, 0x01A5E, &amp;quot;Lana&amp;quot; },&lt;br /&gt;
		{ 0x01A60, 0x01A7C, &amp;quot;Lana&amp;quot; },&lt;br /&gt;
		{ 0x01A7F, 0x01A89, &amp;quot;Lana&amp;quot; },&lt;br /&gt;
		{ 0x01A90, 0x01A99, &amp;quot;Lana&amp;quot; },&lt;br /&gt;
		{ 0x01AA0, 0x01AAD, &amp;quot;Lana&amp;quot; },&lt;br /&gt;
		{ 0x01AB0, 0x01ACE, &amp;quot;Zinh&amp;quot; },&lt;br /&gt;
		{ 0x01B00, 0x01B4C, &amp;quot;Bali&amp;quot; },&lt;br /&gt;
		{ 0x01B50, 0x01B7E, &amp;quot;Bali&amp;quot; },&lt;br /&gt;
		{ 0x01B80, 0x01BBF, &amp;quot;Sund&amp;quot; },&lt;br /&gt;
		{ 0x01BC0, 0x01BF3, &amp;quot;Batk&amp;quot; },&lt;br /&gt;
		{ 0x01BFC, 0x01BFF, &amp;quot;Batk&amp;quot; },&lt;br /&gt;
		{ 0x01C00, 0x01C37, &amp;quot;Lepc&amp;quot; },&lt;br /&gt;
		{ 0x01C3B, 0x01C49, &amp;quot;Lepc&amp;quot; },&lt;br /&gt;
		{ 0x01C4D, 0x01C4F, &amp;quot;Lepc&amp;quot; },&lt;br /&gt;
		{ 0x01C50, 0x01C7F, &amp;quot;Olck&amp;quot; },&lt;br /&gt;
		{ 0x01C80, 0x01C88, &amp;quot;Cyrl&amp;quot; },&lt;br /&gt;
		{ 0x01C90, 0x01CBA, &amp;quot;Geor&amp;quot; },&lt;br /&gt;
		{ 0x01CBD, 0x01CBF, &amp;quot;Geor&amp;quot; },&lt;br /&gt;
		{ 0x01CC0, 0x01CC7, &amp;quot;Sund&amp;quot; },&lt;br /&gt;
		{ 0x01CD0, 0x01CD2, &amp;quot;Zinh&amp;quot; },&lt;br /&gt;
		{ 0x01CD4, 0x01CE0, &amp;quot;Zinh&amp;quot; },&lt;br /&gt;
		{ 0x01CE2, 0x01CE8, &amp;quot;Zinh&amp;quot; },&lt;br /&gt;
		{ 0x01CE9, 0x01CEC, &amp;quot;Zyyy&amp;quot; },&lt;br /&gt;
		{ 0x01CEE, 0x01CF3, &amp;quot;Zyyy&amp;quot; },&lt;br /&gt;
		{ 0x01CF5, 0x01CF7, &amp;quot;Zyyy&amp;quot; },&lt;br /&gt;
		{ 0x01CF8, 0x01CF9, &amp;quot;Zinh&amp;quot; },&lt;br /&gt;
		{ 0x01D00, 0x01D25, &amp;quot;Latn&amp;quot; },&lt;br /&gt;
		{ 0x01D26, 0x01D2A, &amp;quot;Grek&amp;quot; },&lt;br /&gt;
		{ 0x01D2C, 0x01D5C, &amp;quot;Latn&amp;quot; },&lt;br /&gt;
		{ 0x01D5D, 0x01D61, &amp;quot;Grek&amp;quot; },&lt;br /&gt;
		{ 0x01D62, 0x01D65, &amp;quot;Latn&amp;quot; },&lt;br /&gt;
		{ 0x01D66, 0x01D6A, &amp;quot;Grek&amp;quot; },&lt;br /&gt;
		{ 0x01D6B, 0x01D77, &amp;quot;Latn&amp;quot; },&lt;br /&gt;
		{ 0x01D79, 0x01DBE, &amp;quot;Latn&amp;quot; },&lt;br /&gt;
		{ 0x01DC0, 0x01DFF, &amp;quot;Zinh&amp;quot; },&lt;br /&gt;
		{ 0x01E00, 0x01EFF, &amp;quot;Latn&amp;quot; },&lt;br /&gt;
		{ 0x01F00, 0x01F15, &amp;quot;Grek&amp;quot; },&lt;br /&gt;
		{ 0x01F18, 0x01F1D, &amp;quot;Grek&amp;quot; },&lt;br /&gt;
		{ 0x01F20, 0x01F45, &amp;quot;Grek&amp;quot; },&lt;br /&gt;
		{ 0x01F48, 0x01F4D, &amp;quot;Grek&amp;quot; },&lt;br /&gt;
		{ 0x01F50, 0x01F57, &amp;quot;Grek&amp;quot; },&lt;br /&gt;
		{ 0x01F5F, 0x01F7D, &amp;quot;Grek&amp;quot; },&lt;br /&gt;
		{ 0x01F80, 0x01FB4, &amp;quot;Grek&amp;quot; },&lt;br /&gt;
		{ 0x01FB6, 0x01FC4, &amp;quot;Grek&amp;quot; },&lt;br /&gt;
		{ 0x01FC6, 0x01FD3, &amp;quot;Grek&amp;quot; },&lt;br /&gt;
		{ 0x01FD6, 0x01FDB, &amp;quot;Grek&amp;quot; },&lt;br /&gt;
		{ 0x01FDD, 0x01FEF, &amp;quot;Grek&amp;quot; },&lt;br /&gt;
		{ 0x01FF2, 0x01FF4, &amp;quot;Grek&amp;quot; },&lt;br /&gt;
		{ 0x01FF6, 0x01FFE, &amp;quot;Grek&amp;quot; },&lt;br /&gt;
		{ 0x02000, 0x0200B, &amp;quot;Zyyy&amp;quot; },&lt;br /&gt;
		{ 0x0200C, 0x0200D, &amp;quot;Zinh&amp;quot; },&lt;br /&gt;
		{ 0x0200E, 0x02064, &amp;quot;Zyyy&amp;quot; },&lt;br /&gt;
		{ 0x02066, 0x02070, &amp;quot;Zyyy&amp;quot; },&lt;br /&gt;
		{ 0x02074, 0x0207E, &amp;quot;Zyyy&amp;quot; },&lt;br /&gt;
		{ 0x02080, 0x0208E, &amp;quot;Zyyy&amp;quot; },&lt;br /&gt;
		{ 0x02090, 0x0209C, &amp;quot;Latn&amp;quot; },&lt;br /&gt;
		{ 0x020A0, 0x020C0, &amp;quot;Zyyy&amp;quot; },&lt;br /&gt;
		{ 0x020D0, 0x020F0, &amp;quot;Zinh&amp;quot; },&lt;br /&gt;
		{ 0x02100, 0x02125, &amp;quot;Zyyy&amp;quot; },&lt;br /&gt;
		{ 0x02127, 0x02129, &amp;quot;Zyyy&amp;quot; },&lt;br /&gt;
		{ 0x0212A, 0x0212B, &amp;quot;Latn&amp;quot; },&lt;br /&gt;
		{ 0x0212C, 0x02131, &amp;quot;Zyyy&amp;quot; },&lt;br /&gt;
		{ 0x02133, 0x0214D, &amp;quot;Zyyy&amp;quot; },&lt;br /&gt;
		{ 0x0214F, 0x0215F, &amp;quot;Zyyy&amp;quot; },&lt;br /&gt;
		{ 0x02160, 0x02188, &amp;quot;Latn&amp;quot; },&lt;br /&gt;
		{ 0x02189, 0x0218B, &amp;quot;Zyyy&amp;quot; },&lt;br /&gt;
		{ 0x02190, 0x02426, &amp;quot;Zyyy&amp;quot; },&lt;br /&gt;
		{ 0x02440, 0x0244A, &amp;quot;Zyyy&amp;quot; },&lt;br /&gt;
		{ 0x02460, 0x027FF, &amp;quot;Zyyy&amp;quot; },&lt;br /&gt;
		{ 0x02800, 0x028FF, &amp;quot;Brai&amp;quot; },&lt;br /&gt;
		{ 0x02900, 0x02B73, &amp;quot;Zyyy&amp;quot; },&lt;br /&gt;
		{ 0x02B76, 0x02B95, &amp;quot;Zyyy&amp;quot; },&lt;br /&gt;
		{ 0x02B97, 0x02BFF, &amp;quot;Zyyy&amp;quot; },&lt;br /&gt;
		{ 0x02C00, 0x02C5F, &amp;quot;Glag&amp;quot; },&lt;br /&gt;
		{ 0x02C60, 0x02C7F, &amp;quot;Latn&amp;quot; },&lt;br /&gt;
		{ 0x02C80, 0x02CF3, &amp;quot;Copt&amp;quot; },&lt;br /&gt;
		{ 0x02CF9, 0x02CFF, &amp;quot;Copt&amp;quot; },&lt;br /&gt;
		{ 0x02D00, 0x02D25, &amp;quot;Geor&amp;quot; },&lt;br /&gt;
		{ 0x02D30, 0x02D67, &amp;quot;Tfng&amp;quot; },&lt;br /&gt;
		{ 0x02D6F, 0x02D70, &amp;quot;Tfng&amp;quot; },&lt;br /&gt;
		{ 0x02D80, 0x02D96, &amp;quot;Ethi&amp;quot; },&lt;br /&gt;
		{ 0x02DA0, 0x02DA6, &amp;quot;Ethi&amp;quot; },&lt;br /&gt;
		{ 0x02DA8, 0x02DAE, &amp;quot;Ethi&amp;quot; },&lt;br /&gt;
		{ 0x02DB0, 0x02DB6, &amp;quot;Ethi&amp;quot; },&lt;br /&gt;
		{ 0x02DB8, 0x02DBE, &amp;quot;Ethi&amp;quot; },&lt;br /&gt;
		{ 0x02DC0, 0x02DC6, &amp;quot;Ethi&amp;quot; },&lt;br /&gt;
		{ 0x02DC8, 0x02DCE, &amp;quot;Ethi&amp;quot; },&lt;br /&gt;
		{ 0x02DD0, 0x02DD6, &amp;quot;Ethi&amp;quot; },&lt;br /&gt;
		{ 0x02DD8, 0x02DDE, &amp;quot;Ethi&amp;quot; },&lt;br /&gt;
		{ 0x02DE0, 0x02DFF, &amp;quot;Cyrl&amp;quot; },&lt;br /&gt;
		{ 0x02E00, 0x02E5D, &amp;quot;Zyyy&amp;quot; },&lt;br /&gt;
		{ 0x02E80, 0x02E99, &amp;quot;Hani&amp;quot; },&lt;br /&gt;
		{ 0x02E9B, 0x02EF3, &amp;quot;Hani&amp;quot; },&lt;br /&gt;
		{ 0x02F00, 0x02FD5, &amp;quot;Hani&amp;quot; },&lt;br /&gt;
		{ 0x02FF0, 0x02FFB, &amp;quot;Zyyy&amp;quot; },&lt;br /&gt;
		{ 0x03000, 0x03004, &amp;quot;Zyyy&amp;quot; },&lt;br /&gt;
		{ 0x03008, 0x03020, &amp;quot;Zyyy&amp;quot; },&lt;br /&gt;
		{ 0x03021, 0x03029, &amp;quot;Hani&amp;quot; },&lt;br /&gt;
		{ 0x0302A, 0x0302D, &amp;quot;Zinh&amp;quot; },&lt;br /&gt;
		{ 0x0302E, 0x0302F, &amp;quot;Hang&amp;quot; },&lt;br /&gt;
		{ 0x03030, 0x03037, &amp;quot;Zyyy&amp;quot; },&lt;br /&gt;
		{ 0x03038, 0x0303B, &amp;quot;Hani&amp;quot; },&lt;br /&gt;
		{ 0x0303C, 0x0303F, &amp;quot;Zyyy&amp;quot; },&lt;br /&gt;
		{ 0x03041, 0x03096, &amp;quot;Hira&amp;quot; },&lt;br /&gt;
		{ 0x03099, 0x0309A, &amp;quot;Zinh&amp;quot; },&lt;br /&gt;
		{ 0x0309B, 0x0309C, &amp;quot;Zyyy&amp;quot; },&lt;br /&gt;
		{ 0x0309D, 0x0309F, &amp;quot;Hira&amp;quot; },&lt;br /&gt;
		{ 0x030A1, 0x030FA, &amp;quot;Kana&amp;quot; },&lt;br /&gt;
		{ 0x030FB, 0x030FC, &amp;quot;Zyyy&amp;quot; },&lt;br /&gt;
		{ 0x030FD, 0x030FF, &amp;quot;Kana&amp;quot; },&lt;br /&gt;
		{ 0x03105, 0x0312F, &amp;quot;Bopo&amp;quot; },&lt;br /&gt;
		{ 0x03131, 0x0318E, &amp;quot;Hang&amp;quot; },&lt;br /&gt;
		{ 0x03190, 0x0319F, &amp;quot;Zyyy&amp;quot; },&lt;br /&gt;
		{ 0x031A0, 0x031BF, &amp;quot;Bopo&amp;quot; },&lt;br /&gt;
		{ 0x031C0, 0x031E3, &amp;quot;Zyyy&amp;quot; },&lt;br /&gt;
		{ 0x031F0, 0x031FF, &amp;quot;Kana&amp;quot; },&lt;br /&gt;
		{ 0x03200, 0x0321E, &amp;quot;Hang&amp;quot; },&lt;br /&gt;
		{ 0x03220, 0x0325F, &amp;quot;Zyyy&amp;quot; },&lt;br /&gt;
		{ 0x03260, 0x0327E, &amp;quot;Hang&amp;quot; },&lt;br /&gt;
		{ 0x0327F, 0x032CF, &amp;quot;Zyyy&amp;quot; },&lt;br /&gt;
		{ 0x032D0, 0x032FE, &amp;quot;Kana&amp;quot; },&lt;br /&gt;
		{ 0x03300, 0x03357, &amp;quot;Kana&amp;quot; },&lt;br /&gt;
		{ 0x03358, 0x033FF, &amp;quot;Zyyy&amp;quot; },&lt;br /&gt;
		{ 0x03400, 0x04DBF, &amp;quot;Hani&amp;quot; },&lt;br /&gt;
		{ 0x04DC0, 0x04DFF, &amp;quot;Zyyy&amp;quot; },&lt;br /&gt;
		{ 0x04E00, 0x09FFF, &amp;quot;Hani&amp;quot; },&lt;br /&gt;
		{ 0x0A000, 0x0A48C, &amp;quot;Yiii&amp;quot; },&lt;br /&gt;
		{ 0x0A490, 0x0A4C6, &amp;quot;Yiii&amp;quot; },&lt;br /&gt;
		{ 0x0A4D0, 0x0A4FF, &amp;quot;Lisu&amp;quot; },&lt;br /&gt;
		{ 0x0A500, 0x0A62B, &amp;quot;Vaii&amp;quot; },&lt;br /&gt;
		{ 0x0A640, 0x0A69F, &amp;quot;Cyrl&amp;quot; },&lt;br /&gt;
		{ 0x0A6A0, 0x0A6F7, &amp;quot;Bamu&amp;quot; },&lt;br /&gt;
		{ 0x0A700, 0x0A721, &amp;quot;Zyyy&amp;quot; },&lt;br /&gt;
		{ 0x0A722, 0x0A787, &amp;quot;Latn&amp;quot; },&lt;br /&gt;
		{ 0x0A788, 0x0A78A, &amp;quot;Zyyy&amp;quot; },&lt;br /&gt;
		{ 0x0A78B, 0x0A7CA, &amp;quot;Latn&amp;quot; },&lt;br /&gt;
		{ 0x0A7D0, 0x0A7D1, &amp;quot;Latn&amp;quot; },&lt;br /&gt;
		{ 0x0A7D5, 0x0A7D9, &amp;quot;Latn&amp;quot; },&lt;br /&gt;
		{ 0x0A7F2, 0x0A7FF, &amp;quot;Latn&amp;quot; },&lt;br /&gt;
		{ 0x0A800, 0x0A82C, &amp;quot;Sylo&amp;quot; },&lt;br /&gt;
		{ 0x0A830, 0x0A839, &amp;quot;Zyyy&amp;quot; },&lt;br /&gt;
		{ 0x0A840, 0x0A877, &amp;quot;Phag&amp;quot; },&lt;br /&gt;
		{ 0x0A880, 0x0A8C5, &amp;quot;Saur&amp;quot; },&lt;br /&gt;
		{ 0x0A8CE, 0x0A8D9, &amp;quot;Saur&amp;quot; },&lt;br /&gt;
		{ 0x0A8E0, 0x0A8FF, &amp;quot;Deva&amp;quot; },&lt;br /&gt;
		{ 0x0A900, 0x0A92D, &amp;quot;Kali&amp;quot; },&lt;br /&gt;
		{ 0x0A930, 0x0A953, &amp;quot;Rjng&amp;quot; },&lt;br /&gt;
		{ 0x0A960, 0x0A97C, &amp;quot;Hang&amp;quot; },&lt;br /&gt;
		{ 0x0A980, 0x0A9CD, &amp;quot;Java&amp;quot; },&lt;br /&gt;
		{ 0x0A9D0, 0x0A9D9, &amp;quot;Java&amp;quot; },&lt;br /&gt;
		{ 0x0A9DE, 0x0A9DF, &amp;quot;Java&amp;quot; },&lt;br /&gt;
		{ 0x0A9E0, 0x0A9FE, &amp;quot;Mymr&amp;quot; },&lt;br /&gt;
		{ 0x0AA00, 0x0AA36, &amp;quot;Cham&amp;quot; },&lt;br /&gt;
		{ 0x0AA40, 0x0AA4D, &amp;quot;Cham&amp;quot; },&lt;br /&gt;
		{ 0x0AA50, 0x0AA59, &amp;quot;Cham&amp;quot; },&lt;br /&gt;
		{ 0x0AA5C, 0x0AA5F, &amp;quot;Cham&amp;quot; },&lt;br /&gt;
		{ 0x0AA60, 0x0AA7F, &amp;quot;Mymr&amp;quot; },&lt;br /&gt;
		{ 0x0AA80, 0x0AAC2, &amp;quot;Tavt&amp;quot; },&lt;br /&gt;
		{ 0x0AADB, 0x0AADF, &amp;quot;Tavt&amp;quot; },&lt;br /&gt;
		{ 0x0AAE0, 0x0AAF6, &amp;quot;Mtei&amp;quot; },&lt;br /&gt;
		{ 0x0AB01, 0x0AB06, &amp;quot;Ethi&amp;quot; },&lt;br /&gt;
		{ 0x0AB09, 0x0AB0E, &amp;quot;Ethi&amp;quot; },&lt;br /&gt;
		{ 0x0AB11, 0x0AB16, &amp;quot;Ethi&amp;quot; },&lt;br /&gt;
		{ 0x0AB20, 0x0AB26, &amp;quot;Ethi&amp;quot; },&lt;br /&gt;
		{ 0x0AB28, 0x0AB2E, &amp;quot;Ethi&amp;quot; },&lt;br /&gt;
		{ 0x0AB30, 0x0AB5A, &amp;quot;Latn&amp;quot; },&lt;br /&gt;
		{ 0x0AB5C, 0x0AB64, &amp;quot;Latn&amp;quot; },&lt;br /&gt;
		{ 0x0AB66, 0x0AB69, &amp;quot;Latn&amp;quot; },&lt;br /&gt;
		{ 0x0AB6A, 0x0AB6B, &amp;quot;Zyyy&amp;quot; },&lt;br /&gt;
		{ 0x0AB70, 0x0ABBF, &amp;quot;Cher&amp;quot; },&lt;br /&gt;
		{ 0x0ABC0, 0x0ABED, &amp;quot;Mtei&amp;quot; },&lt;br /&gt;
		{ 0x0ABF0, 0x0ABF9, &amp;quot;Mtei&amp;quot; },&lt;br /&gt;
		{ 0x0AC00, 0x0D7A3, &amp;quot;Hang&amp;quot; },&lt;br /&gt;
		{ 0x0D7B0, 0x0D7C6, &amp;quot;Hang&amp;quot; },&lt;br /&gt;
		{ 0x0D7CB, 0x0D7FB, &amp;quot;Hang&amp;quot; },&lt;br /&gt;
		{ 0x0F900, 0x0FA6D, &amp;quot;Hani&amp;quot; },&lt;br /&gt;
		{ 0x0FA70, 0x0FAD9, &amp;quot;Hani&amp;quot; },&lt;br /&gt;
		{ 0x0FB00, 0x0FB06, &amp;quot;Latn&amp;quot; },&lt;br /&gt;
		{ 0x0FB13, 0x0FB17, &amp;quot;Armn&amp;quot; },&lt;br /&gt;
		{ 0x0FB1D, 0x0FB36, &amp;quot;Hebr&amp;quot; },&lt;br /&gt;
		{ 0x0FB38, 0x0FB3C, &amp;quot;Hebr&amp;quot; },&lt;br /&gt;
		{ 0x0FB40, 0x0FB41, &amp;quot;Hebr&amp;quot; },&lt;br /&gt;
		{ 0x0FB43, 0x0FB44, &amp;quot;Hebr&amp;quot; },&lt;br /&gt;
		{ 0x0FB46, 0x0FB4F, &amp;quot;Hebr&amp;quot; },&lt;br /&gt;
		{ 0x0FB50, 0x0FBC2, &amp;quot;Arab&amp;quot; },&lt;br /&gt;
		{ 0x0FBD3, 0x0FD3D, &amp;quot;Arab&amp;quot; },&lt;br /&gt;
		{ 0x0FD3E, 0x0FD3F, &amp;quot;Zyyy&amp;quot; },&lt;br /&gt;
		{ 0x0FD40, 0x0FD8F, &amp;quot;Arab&amp;quot; },&lt;br /&gt;
		{ 0x0FD92, 0x0FDC7, &amp;quot;Arab&amp;quot; },&lt;br /&gt;
		{ 0x0FDF0, 0x0FDFF, &amp;quot;Arab&amp;quot; },&lt;br /&gt;
		{ 0x0FE00, 0x0FE0F, &amp;quot;Zinh&amp;quot; },&lt;br /&gt;
		{ 0x0FE10, 0x0FE19, &amp;quot;Zyyy&amp;quot; },&lt;br /&gt;
		{ 0x0FE20, 0x0FE2D, &amp;quot;Zinh&amp;quot; },&lt;br /&gt;
		{ 0x0FE2E, 0x0FE2F, &amp;quot;Cyrl&amp;quot; },&lt;br /&gt;
		{ 0x0FE30, 0x0FE52, &amp;quot;Zyyy&amp;quot; },&lt;br /&gt;
		{ 0x0FE54, 0x0FE66, &amp;quot;Zyyy&amp;quot; },&lt;br /&gt;
		{ 0x0FE68, 0x0FE6B, &amp;quot;Zyyy&amp;quot; },&lt;br /&gt;
		{ 0x0FE70, 0x0FE74, &amp;quot;Arab&amp;quot; },&lt;br /&gt;
		{ 0x0FE76, 0x0FEFC, &amp;quot;Arab&amp;quot; },&lt;br /&gt;
		{ 0x0FF01, 0x0FF20, &amp;quot;Zyyy&amp;quot; },&lt;br /&gt;
		{ 0x0FF21, 0x0FF3A, &amp;quot;Latn&amp;quot; },&lt;br /&gt;
		{ 0x0FF3B, 0x0FF40, &amp;quot;Zyyy&amp;quot; },&lt;br /&gt;
		{ 0x0FF41, 0x0FF5A, &amp;quot;Latn&amp;quot; },&lt;br /&gt;
		{ 0x0FF5B, 0x0FF65, &amp;quot;Zyyy&amp;quot; },&lt;br /&gt;
		{ 0x0FF66, 0x0FF6F, &amp;quot;Kana&amp;quot; },&lt;br /&gt;
		{ 0x0FF71, 0x0FF9D, &amp;quot;Kana&amp;quot; },&lt;br /&gt;
		{ 0x0FF9E, 0x0FF9F, &amp;quot;Zyyy&amp;quot; },&lt;br /&gt;
		{ 0x0FFA0, 0x0FFBE, &amp;quot;Hang&amp;quot; },&lt;br /&gt;
		{ 0x0FFC2, 0x0FFC7, &amp;quot;Hang&amp;quot; },&lt;br /&gt;
		{ 0x0FFCA, 0x0FFCF, &amp;quot;Hang&amp;quot; },&lt;br /&gt;
		{ 0x0FFD2, 0x0FFD7, &amp;quot;Hang&amp;quot; },&lt;br /&gt;
		{ 0x0FFDA, 0x0FFDC, &amp;quot;Hang&amp;quot; },&lt;br /&gt;
		{ 0x0FFE0, 0x0FFE6, &amp;quot;Zyyy&amp;quot; },&lt;br /&gt;
		{ 0x0FFE8, 0x0FFEE, &amp;quot;Zyyy&amp;quot; },&lt;br /&gt;
		{ 0x0FFF9, 0x0FFFD, &amp;quot;Zyyy&amp;quot; },&lt;br /&gt;
		{ 0x10000, 0x1000B, &amp;quot;Linb&amp;quot; },&lt;br /&gt;
		{ 0x1000D, 0x10026, &amp;quot;Linb&amp;quot; },&lt;br /&gt;
		{ 0x10028, 0x1003A, &amp;quot;Linb&amp;quot; },&lt;br /&gt;
		{ 0x1003C, 0x1003D, &amp;quot;Linb&amp;quot; },&lt;br /&gt;
		{ 0x1003F, 0x1004D, &amp;quot;Linb&amp;quot; },&lt;br /&gt;
		{ 0x10050, 0x1005D, &amp;quot;Linb&amp;quot; },&lt;br /&gt;
		{ 0x10080, 0x100FA, &amp;quot;Linb&amp;quot; },&lt;br /&gt;
		{ 0x10100, 0x10102, &amp;quot;Zyyy&amp;quot; },&lt;br /&gt;
		{ 0x10107, 0x10133, &amp;quot;Zyyy&amp;quot; },&lt;br /&gt;
		{ 0x10137, 0x1013F, &amp;quot;Zyyy&amp;quot; },&lt;br /&gt;
		{ 0x10140, 0x1018E, &amp;quot;Grek&amp;quot; },&lt;br /&gt;
		{ 0x10190, 0x1019C, &amp;quot;Zyyy&amp;quot; },&lt;br /&gt;
		{ 0x101D0, 0x101FC, &amp;quot;Zyyy&amp;quot; },&lt;br /&gt;
		{ 0x10280, 0x1029C, &amp;quot;Lyci&amp;quot; },&lt;br /&gt;
		{ 0x102A0, 0x102D0, &amp;quot;Cari&amp;quot; },&lt;br /&gt;
		{ 0x102E1, 0x102FB, &amp;quot;Zyyy&amp;quot; },&lt;br /&gt;
		{ 0x10300, 0x10323, &amp;quot;Ital&amp;quot; },&lt;br /&gt;
		{ 0x1032D, 0x1032F, &amp;quot;Ital&amp;quot; },&lt;br /&gt;
		{ 0x10330, 0x1034A, &amp;quot;Goth&amp;quot; },&lt;br /&gt;
		{ 0x10350, 0x1037A, &amp;quot;Perm&amp;quot; },&lt;br /&gt;
		{ 0x10380, 0x1039D, &amp;quot;Ugar&amp;quot; },&lt;br /&gt;
		{ 0x103A0, 0x103C3, &amp;quot;Xpeo&amp;quot; },&lt;br /&gt;
		{ 0x103C8, 0x103D5, &amp;quot;Xpeo&amp;quot; },&lt;br /&gt;
		{ 0x10400, 0x1044F, &amp;quot;Dsrt&amp;quot; },&lt;br /&gt;
		{ 0x10450, 0x1047F, &amp;quot;Shaw&amp;quot; },&lt;br /&gt;
		{ 0x10480, 0x1049D, &amp;quot;Osma&amp;quot; },&lt;br /&gt;
		{ 0x104A0, 0x104A9, &amp;quot;Osma&amp;quot; },&lt;br /&gt;
		{ 0x104B0, 0x104D3, &amp;quot;Osge&amp;quot; },&lt;br /&gt;
		{ 0x104D8, 0x104FB, &amp;quot;Osge&amp;quot; },&lt;br /&gt;
		{ 0x10500, 0x10527, &amp;quot;Elba&amp;quot; },&lt;br /&gt;
		{ 0x10530, 0x10563, &amp;quot;Aghb&amp;quot; },&lt;br /&gt;
		{ 0x10570, 0x1057A, &amp;quot;Vith&amp;quot; },&lt;br /&gt;
		{ 0x1057C, 0x1058A, &amp;quot;Vith&amp;quot; },&lt;br /&gt;
		{ 0x1058C, 0x10592, &amp;quot;Vith&amp;quot; },&lt;br /&gt;
		{ 0x10594, 0x10595, &amp;quot;Vith&amp;quot; },&lt;br /&gt;
		{ 0x10597, 0x105A1, &amp;quot;Vith&amp;quot; },&lt;br /&gt;
		{ 0x105A3, 0x105B1, &amp;quot;Vith&amp;quot; },&lt;br /&gt;
		{ 0x105B3, 0x105B9, &amp;quot;Vith&amp;quot; },&lt;br /&gt;
		{ 0x105BB, 0x105BC, &amp;quot;Vith&amp;quot; },&lt;br /&gt;
		{ 0x10600, 0x10736, &amp;quot;Lina&amp;quot; },&lt;br /&gt;
		{ 0x10740, 0x10755, &amp;quot;Lina&amp;quot; },&lt;br /&gt;
		{ 0x10760, 0x10767, &amp;quot;Lina&amp;quot; },&lt;br /&gt;
		{ 0x10780, 0x10785, &amp;quot;Latn&amp;quot; },&lt;br /&gt;
		{ 0x10787, 0x107B0, &amp;quot;Latn&amp;quot; },&lt;br /&gt;
		{ 0x107B2, 0x107BA, &amp;quot;Latn&amp;quot; },&lt;br /&gt;
		{ 0x10800, 0x10805, &amp;quot;Cprt&amp;quot; },&lt;br /&gt;
		{ 0x1080A, 0x10835, &amp;quot;Cprt&amp;quot; },&lt;br /&gt;
		{ 0x10837, 0x10838, &amp;quot;Cprt&amp;quot; },&lt;br /&gt;
		{ 0x10840, 0x10855, &amp;quot;Armi&amp;quot; },&lt;br /&gt;
		{ 0x10857, 0x1085F, &amp;quot;Armi&amp;quot; },&lt;br /&gt;
		{ 0x10860, 0x1087F, &amp;quot;Palm&amp;quot; },&lt;br /&gt;
		{ 0x10880, 0x1089E, &amp;quot;Nbat&amp;quot; },&lt;br /&gt;
		{ 0x108A7, 0x108AF, &amp;quot;Nbat&amp;quot; },&lt;br /&gt;
		{ 0x108E0, 0x108F2, &amp;quot;Hatr&amp;quot; },&lt;br /&gt;
		{ 0x108F4, 0x108F5, &amp;quot;Hatr&amp;quot; },&lt;br /&gt;
		{ 0x108FB, 0x108FF, &amp;quot;Hatr&amp;quot; },&lt;br /&gt;
		{ 0x10900, 0x1091B, &amp;quot;Phnx&amp;quot; },&lt;br /&gt;
		{ 0x10920, 0x10939, &amp;quot;Lydi&amp;quot; },&lt;br /&gt;
		{ 0x10980, 0x1099F, &amp;quot;Mero&amp;quot; },&lt;br /&gt;
		{ 0x109A0, 0x109B7, &amp;quot;Merc&amp;quot; },&lt;br /&gt;
		{ 0x109BC, 0x109CF, &amp;quot;Merc&amp;quot; },&lt;br /&gt;
		{ 0x109D2, 0x109FF, &amp;quot;Merc&amp;quot; },&lt;br /&gt;
		{ 0x10A00, 0x10A03, &amp;quot;Khar&amp;quot; },&lt;br /&gt;
		{ 0x10A05, 0x10A06, &amp;quot;Khar&amp;quot; },&lt;br /&gt;
		{ 0x10A0C, 0x10A13, &amp;quot;Khar&amp;quot; },&lt;br /&gt;
		{ 0x10A15, 0x10A17, &amp;quot;Khar&amp;quot; },&lt;br /&gt;
		{ 0x10A19, 0x10A35, &amp;quot;Khar&amp;quot; },&lt;br /&gt;
		{ 0x10A38, 0x10A3A, &amp;quot;Khar&amp;quot; },&lt;br /&gt;
		{ 0x10A3F, 0x10A48, &amp;quot;Khar&amp;quot; },&lt;br /&gt;
		{ 0x10A50, 0x10A58, &amp;quot;Khar&amp;quot; },&lt;br /&gt;
		{ 0x10A60, 0x10A7F, &amp;quot;Sarb&amp;quot; },&lt;br /&gt;
		{ 0x10A80, 0x10A9F, &amp;quot;Narb&amp;quot; },&lt;br /&gt;
		{ 0x10AC0, 0x10AE6, &amp;quot;Mani&amp;quot; },&lt;br /&gt;
		{ 0x10AEB, 0x10AF6, &amp;quot;Mani&amp;quot; },&lt;br /&gt;
		{ 0x10B00, 0x10B35, &amp;quot;Avst&amp;quot; },&lt;br /&gt;
		{ 0x10B39, 0x10B3F, &amp;quot;Avst&amp;quot; },&lt;br /&gt;
		{ 0x10B40, 0x10B55, &amp;quot;Prti&amp;quot; },&lt;br /&gt;
		{ 0x10B58, 0x10B5F, &amp;quot;Prti&amp;quot; },&lt;br /&gt;
		{ 0x10B60, 0x10B72, &amp;quot;Phli&amp;quot; },&lt;br /&gt;
		{ 0x10B78, 0x10B7F, &amp;quot;Phli&amp;quot; },&lt;br /&gt;
		{ 0x10B80, 0x10B91, &amp;quot;Phlp&amp;quot; },&lt;br /&gt;
		{ 0x10B99, 0x10B9C, &amp;quot;Phlp&amp;quot; },&lt;br /&gt;
		{ 0x10BA9, 0x10BAF, &amp;quot;Phlp&amp;quot; },&lt;br /&gt;
		{ 0x10C00, 0x10C48, &amp;quot;Orkh&amp;quot; },&lt;br /&gt;
		{ 0x10C80, 0x10CB2, &amp;quot;Hung&amp;quot; },&lt;br /&gt;
		{ 0x10CC0, 0x10CF2, &amp;quot;Hung&amp;quot; },&lt;br /&gt;
		{ 0x10CFA, 0x10CFF, &amp;quot;Hung&amp;quot; },&lt;br /&gt;
		{ 0x10D00, 0x10D27, &amp;quot;Rohg&amp;quot; },&lt;br /&gt;
		{ 0x10D30, 0x10D39, &amp;quot;Rohg&amp;quot; },&lt;br /&gt;
		{ 0x10E60, 0x10E7E, &amp;quot;Arab&amp;quot; },&lt;br /&gt;
		{ 0x10E80, 0x10EA9, &amp;quot;Yezi&amp;quot; },&lt;br /&gt;
		{ 0x10EAB, 0x10EAD, &amp;quot;Yezi&amp;quot; },&lt;br /&gt;
		{ 0x10EB0, 0x10EB1, &amp;quot;Yezi&amp;quot; },&lt;br /&gt;
		{ 0x10EFD, 0x10EFF, &amp;quot;Arab&amp;quot; },&lt;br /&gt;
		{ 0x10F00, 0x10F27, &amp;quot;Sogo&amp;quot; },&lt;br /&gt;
		{ 0x10F30, 0x10F59, &amp;quot;Sogd&amp;quot; },&lt;br /&gt;
		{ 0x10F70, 0x10F89, &amp;quot;Ougr&amp;quot; },&lt;br /&gt;
		{ 0x10FB0, 0x10FCB, &amp;quot;Chrs&amp;quot; },&lt;br /&gt;
		{ 0x10FE0, 0x10FF6, &amp;quot;Elym&amp;quot; },&lt;br /&gt;
		{ 0x11000, 0x1104D, &amp;quot;Brah&amp;quot; },&lt;br /&gt;
		{ 0x11052, 0x11075, &amp;quot;Brah&amp;quot; },&lt;br /&gt;
		{ 0x11080, 0x110C2, &amp;quot;Kthi&amp;quot; },&lt;br /&gt;
		{ 0x110D0, 0x110E8, &amp;quot;Sora&amp;quot; },&lt;br /&gt;
		{ 0x110F0, 0x110F9, &amp;quot;Sora&amp;quot; },&lt;br /&gt;
		{ 0x11100, 0x11134, &amp;quot;Cakm&amp;quot; },&lt;br /&gt;
		{ 0x11136, 0x11147, &amp;quot;Cakm&amp;quot; },&lt;br /&gt;
		{ 0x11150, 0x11176, &amp;quot;Mahj&amp;quot; },&lt;br /&gt;
		{ 0x11180, 0x111DF, &amp;quot;Shrd&amp;quot; },&lt;br /&gt;
		{ 0x111E1, 0x111F4, &amp;quot;Sinh&amp;quot; },&lt;br /&gt;
		{ 0x11200, 0x11211, &amp;quot;Khoj&amp;quot; },&lt;br /&gt;
		{ 0x11213, 0x11241, &amp;quot;Khoj&amp;quot; },&lt;br /&gt;
		{ 0x11280, 0x11286, &amp;quot;Mult&amp;quot; },&lt;br /&gt;
		{ 0x1128A, 0x1128D, &amp;quot;Mult&amp;quot; },&lt;br /&gt;
		{ 0x1128F, 0x1129D, &amp;quot;Mult&amp;quot; },&lt;br /&gt;
		{ 0x1129F, 0x112A9, &amp;quot;Mult&amp;quot; },&lt;br /&gt;
		{ 0x112B0, 0x112EA, &amp;quot;Sind&amp;quot; },&lt;br /&gt;
		{ 0x112F0, 0x112F9, &amp;quot;Sind&amp;quot; },&lt;br /&gt;
		{ 0x11300, 0x11303, &amp;quot;Gran&amp;quot; },&lt;br /&gt;
		{ 0x11305, 0x1130C, &amp;quot;Gran&amp;quot; },&lt;br /&gt;
		{ 0x1130F, 0x11310, &amp;quot;Gran&amp;quot; },&lt;br /&gt;
		{ 0x11313, 0x11328, &amp;quot;Gran&amp;quot; },&lt;br /&gt;
		{ 0x1132A, 0x11330, &amp;quot;Gran&amp;quot; },&lt;br /&gt;
		{ 0x11332, 0x11333, &amp;quot;Gran&amp;quot; },&lt;br /&gt;
		{ 0x11335, 0x11339, &amp;quot;Gran&amp;quot; },&lt;br /&gt;
		{ 0x1133C, 0x11344, &amp;quot;Gran&amp;quot; },&lt;br /&gt;
		{ 0x11347, 0x11348, &amp;quot;Gran&amp;quot; },&lt;br /&gt;
		{ 0x1134B, 0x1134D, &amp;quot;Gran&amp;quot; },&lt;br /&gt;
		{ 0x1135D, 0x11363, &amp;quot;Gran&amp;quot; },&lt;br /&gt;
		{ 0x11366, 0x1136C, &amp;quot;Gran&amp;quot; },&lt;br /&gt;
		{ 0x11370, 0x11374, &amp;quot;Gran&amp;quot; },&lt;br /&gt;
		{ 0x11400, 0x1145B, &amp;quot;Newa&amp;quot; },&lt;br /&gt;
		{ 0x1145D, 0x11461, &amp;quot;Newa&amp;quot; },&lt;br /&gt;
		{ 0x11480, 0x114C7, &amp;quot;Tirh&amp;quot; },&lt;br /&gt;
		{ 0x114D0, 0x114D9, &amp;quot;Tirh&amp;quot; },&lt;br /&gt;
		{ 0x11580, 0x115B5, &amp;quot;Sidd&amp;quot; },&lt;br /&gt;
		{ 0x115B8, 0x115DD, &amp;quot;Sidd&amp;quot; },&lt;br /&gt;
		{ 0x11600, 0x11644, &amp;quot;Modi&amp;quot; },&lt;br /&gt;
		{ 0x11650, 0x11659, &amp;quot;Modi&amp;quot; },&lt;br /&gt;
		{ 0x11660, 0x1166C, &amp;quot;Mong&amp;quot; },&lt;br /&gt;
		{ 0x11680, 0x116B9, &amp;quot;Takr&amp;quot; },&lt;br /&gt;
		{ 0x116C0, 0x116C9, &amp;quot;Takr&amp;quot; },&lt;br /&gt;
		{ 0x11700, 0x1171A, &amp;quot;Ahom&amp;quot; },&lt;br /&gt;
		{ 0x1171D, 0x1172B, &amp;quot;Ahom&amp;quot; },&lt;br /&gt;
		{ 0x11730, 0x11746, &amp;quot;Ahom&amp;quot; },&lt;br /&gt;
		{ 0x11800, 0x1183B, &amp;quot;Dogr&amp;quot; },&lt;br /&gt;
		{ 0x118A0, 0x118F2, &amp;quot;Wara&amp;quot; },&lt;br /&gt;
		{ 0x11900, 0x11906, &amp;quot;Diak&amp;quot; },&lt;br /&gt;
		{ 0x1190C, 0x11913, &amp;quot;Diak&amp;quot; },&lt;br /&gt;
		{ 0x11915, 0x11916, &amp;quot;Diak&amp;quot; },&lt;br /&gt;
		{ 0x11918, 0x11935, &amp;quot;Diak&amp;quot; },&lt;br /&gt;
		{ 0x11937, 0x11938, &amp;quot;Diak&amp;quot; },&lt;br /&gt;
		{ 0x1193B, 0x11946, &amp;quot;Diak&amp;quot; },&lt;br /&gt;
		{ 0x11950, 0x11959, &amp;quot;Diak&amp;quot; },&lt;br /&gt;
		{ 0x119A0, 0x119A7, &amp;quot;Nand&amp;quot; },&lt;br /&gt;
		{ 0x119AA, 0x119D7, &amp;quot;Nand&amp;quot; },&lt;br /&gt;
		{ 0x119DA, 0x119E4, &amp;quot;Nand&amp;quot; },&lt;br /&gt;
		{ 0x11A00, 0x11A47, &amp;quot;Zanb&amp;quot; },&lt;br /&gt;
		{ 0x11A50, 0x11AA2, &amp;quot;Soyo&amp;quot; },&lt;br /&gt;
		{ 0x11AB0, 0x11ABF, &amp;quot;Cans&amp;quot; },&lt;br /&gt;
		{ 0x11AC0, 0x11AF8, &amp;quot;Pauc&amp;quot; },&lt;br /&gt;
		{ 0x11B00, 0x11B09, &amp;quot;Deva&amp;quot; },&lt;br /&gt;
		{ 0x11C00, 0x11C08, &amp;quot;Bhks&amp;quot; },&lt;br /&gt;
		{ 0x11C0A, 0x11C36, &amp;quot;Bhks&amp;quot; },&lt;br /&gt;
		{ 0x11C38, 0x11C45, &amp;quot;Bhks&amp;quot; },&lt;br /&gt;
		{ 0x11C50, 0x11C6C, &amp;quot;Bhks&amp;quot; },&lt;br /&gt;
		{ 0x11C70, 0x11C8F, &amp;quot;Marc&amp;quot; },&lt;br /&gt;
		{ 0x11C92, 0x11CA7, &amp;quot;Marc&amp;quot; },&lt;br /&gt;
		{ 0x11CA9, 0x11CB6, &amp;quot;Marc&amp;quot; },&lt;br /&gt;
		{ 0x11D00, 0x11D06, &amp;quot;Gonm&amp;quot; },&lt;br /&gt;
		{ 0x11D08, 0x11D09, &amp;quot;Gonm&amp;quot; },&lt;br /&gt;
		{ 0x11D0B, 0x11D36, &amp;quot;Gonm&amp;quot; },&lt;br /&gt;
		{ 0x11D3C, 0x11D3D, &amp;quot;Gonm&amp;quot; },&lt;br /&gt;
		{ 0x11D3F, 0x11D47, &amp;quot;Gonm&amp;quot; },&lt;br /&gt;
		{ 0x11D50, 0x11D59, &amp;quot;Gonm&amp;quot; },&lt;br /&gt;
		{ 0x11D60, 0x11D65, &amp;quot;Gong&amp;quot; },&lt;br /&gt;
		{ 0x11D67, 0x11D68, &amp;quot;Gong&amp;quot; },&lt;br /&gt;
		{ 0x11D6A, 0x11D8E, &amp;quot;Gong&amp;quot; },&lt;br /&gt;
		{ 0x11D90, 0x11D91, &amp;quot;Gong&amp;quot; },&lt;br /&gt;
		{ 0x11D93, 0x11D98, &amp;quot;Gong&amp;quot; },&lt;br /&gt;
		{ 0x11DA0, 0x11DA9, &amp;quot;Gong&amp;quot; },&lt;br /&gt;
		{ 0x11EE0, 0x11EF8, &amp;quot;Maka&amp;quot; },&lt;br /&gt;
		{ 0x11F00, 0x11F10, &amp;quot;Kawi&amp;quot; },&lt;br /&gt;
		{ 0x11F12, 0x11F3A, &amp;quot;Kawi&amp;quot; },&lt;br /&gt;
		{ 0x11F3E, 0x11F59, &amp;quot;Kawi&amp;quot; },&lt;br /&gt;
		{ 0x11FC0, 0x11FF1, &amp;quot;Taml&amp;quot; },&lt;br /&gt;
		{ 0x12000, 0x12399, &amp;quot;Xsux&amp;quot; },&lt;br /&gt;
		{ 0x12400, 0x1246E, &amp;quot;Xsux&amp;quot; },&lt;br /&gt;
		{ 0x12470, 0x12474, &amp;quot;Xsux&amp;quot; },&lt;br /&gt;
		{ 0x12480, 0x12543, &amp;quot;Xsux&amp;quot; },&lt;br /&gt;
		{ 0x12F90, 0x12FF2, &amp;quot;Cpmn&amp;quot; },&lt;br /&gt;
		{ 0x13000, 0x13455, &amp;quot;Egyp&amp;quot; },&lt;br /&gt;
		{ 0x14400, 0x14646, &amp;quot;Hluw&amp;quot; },&lt;br /&gt;
		{ 0x16800, 0x16A38, &amp;quot;Bamu&amp;quot; },&lt;br /&gt;
		{ 0x16A40, 0x16A5E, &amp;quot;Mroo&amp;quot; },&lt;br /&gt;
		{ 0x16A60, 0x16A69, &amp;quot;Mroo&amp;quot; },&lt;br /&gt;
		{ 0x16A6E, 0x16A6F, &amp;quot;Mroo&amp;quot; },&lt;br /&gt;
		{ 0x16A70, 0x16ABE, &amp;quot;Tnsa&amp;quot; },&lt;br /&gt;
		{ 0x16AC0, 0x16AC9, &amp;quot;Tnsa&amp;quot; },&lt;br /&gt;
		{ 0x16AD0, 0x16AED, &amp;quot;Bass&amp;quot; },&lt;br /&gt;
		{ 0x16AF0, 0x16AF5, &amp;quot;Bass&amp;quot; },&lt;br /&gt;
		{ 0x16B00, 0x16B45, &amp;quot;Hmng&amp;quot; },&lt;br /&gt;
		{ 0x16B50, 0x16B59, &amp;quot;Hmng&amp;quot; },&lt;br /&gt;
		{ 0x16B5B, 0x16B61, &amp;quot;Hmng&amp;quot; },&lt;br /&gt;
		{ 0x16B63, 0x16B77, &amp;quot;Hmng&amp;quot; },&lt;br /&gt;
		{ 0x16B7D, 0x16B8F, &amp;quot;Hmng&amp;quot; },&lt;br /&gt;
		{ 0x16E40, 0x16E9A, &amp;quot;Medf&amp;quot; },&lt;br /&gt;
		{ 0x16F00, 0x16F4A, &amp;quot;Plrd&amp;quot; },&lt;br /&gt;
		{ 0x16F4F, 0x16F87, &amp;quot;Plrd&amp;quot; },&lt;br /&gt;
		{ 0x16F8F, 0x16F9F, &amp;quot;Plrd&amp;quot; },&lt;br /&gt;
		{ 0x16FE2, 0x16FE3, &amp;quot;Hani&amp;quot; },&lt;br /&gt;
		{ 0x16FF0, 0x16FF1, &amp;quot;Hani&amp;quot; },&lt;br /&gt;
		{ 0x17000, 0x187F7, &amp;quot;Tang&amp;quot; },&lt;br /&gt;
		{ 0x18800, 0x18AFF, &amp;quot;Tang&amp;quot; },&lt;br /&gt;
		{ 0x18B00, 0x18CD5, &amp;quot;Kits&amp;quot; },&lt;br /&gt;
		{ 0x18D00, 0x18D08, &amp;quot;Tang&amp;quot; },&lt;br /&gt;
		{ 0x1AFF0, 0x1AFF3, &amp;quot;Kana&amp;quot; },&lt;br /&gt;
		{ 0x1AFF5, 0x1AFFB, &amp;quot;Kana&amp;quot; },&lt;br /&gt;
		{ 0x1AFFD, 0x1AFFE, &amp;quot;Kana&amp;quot; },&lt;br /&gt;
		{ 0x1B001, 0x1B11F, &amp;quot;Hira&amp;quot; },&lt;br /&gt;
		{ 0x1B120, 0x1B122, &amp;quot;Kana&amp;quot; },&lt;br /&gt;
		{ 0x1B150, 0x1B152, &amp;quot;Hira&amp;quot; },&lt;br /&gt;
		{ 0x1B164, 0x1B167, &amp;quot;Kana&amp;quot; },&lt;br /&gt;
		{ 0x1B170, 0x1B2FB, &amp;quot;Nshu&amp;quot; },&lt;br /&gt;
		{ 0x1BC00, 0x1BC6A, &amp;quot;Dupl&amp;quot; },&lt;br /&gt;
		{ 0x1BC70, 0x1BC7C, &amp;quot;Dupl&amp;quot; },&lt;br /&gt;
		{ 0x1BC80, 0x1BC88, &amp;quot;Dupl&amp;quot; },&lt;br /&gt;
		{ 0x1BC90, 0x1BC99, &amp;quot;Dupl&amp;quot; },&lt;br /&gt;
		{ 0x1BC9C, 0x1BC9F, &amp;quot;Dupl&amp;quot; },&lt;br /&gt;
		{ 0x1BCA0, 0x1BCA3, &amp;quot;Zyyy&amp;quot; },&lt;br /&gt;
		{ 0x1CF00, 0x1CF2D, &amp;quot;Zinh&amp;quot; },&lt;br /&gt;
		{ 0x1CF30, 0x1CF46, &amp;quot;Zinh&amp;quot; },&lt;br /&gt;
		{ 0x1CF50, 0x1CFC3, &amp;quot;Zyyy&amp;quot; },&lt;br /&gt;
		{ 0x1D000, 0x1D0F5, &amp;quot;Zyyy&amp;quot; },&lt;br /&gt;
		{ 0x1D100, 0x1D126, &amp;quot;Zyyy&amp;quot; },&lt;br /&gt;
		{ 0x1D129, 0x1D166, &amp;quot;Zyyy&amp;quot; },&lt;br /&gt;
		{ 0x1D167, 0x1D169, &amp;quot;Zinh&amp;quot; },&lt;br /&gt;
		{ 0x1D16A, 0x1D17A, &amp;quot;Zyyy&amp;quot; },&lt;br /&gt;
		{ 0x1D17B, 0x1D182, &amp;quot;Zinh&amp;quot; },&lt;br /&gt;
		{ 0x1D183, 0x1D184, &amp;quot;Zyyy&amp;quot; },&lt;br /&gt;
		{ 0x1D185, 0x1D18B, &amp;quot;Zinh&amp;quot; },&lt;br /&gt;
		{ 0x1D18C, 0x1D1A9, &amp;quot;Zyyy&amp;quot; },&lt;br /&gt;
		{ 0x1D1AA, 0x1D1AD, &amp;quot;Zinh&amp;quot; },&lt;br /&gt;
		{ 0x1D1AE, 0x1D1EA, &amp;quot;Zyyy&amp;quot; },&lt;br /&gt;
		{ 0x1D200, 0x1D245, &amp;quot;Grek&amp;quot; },&lt;br /&gt;
		{ 0x1D2C0, 0x1D2D3, &amp;quot;Zyyy&amp;quot; },&lt;br /&gt;
		{ 0x1D2E0, 0x1D2F3, &amp;quot;Zyyy&amp;quot; },&lt;br /&gt;
		{ 0x1D300, 0x1D356, &amp;quot;Zyyy&amp;quot; },&lt;br /&gt;
		{ 0x1D360, 0x1D378, &amp;quot;Zyyy&amp;quot; },&lt;br /&gt;
		{ 0x1D400, 0x1D454, &amp;quot;Zyyy&amp;quot; },&lt;br /&gt;
		{ 0x1D456, 0x1D49C, &amp;quot;Zyyy&amp;quot; },&lt;br /&gt;
		{ 0x1D49E, 0x1D49F, &amp;quot;Zyyy&amp;quot; },&lt;br /&gt;
		{ 0x1D4A5, 0x1D4A6, &amp;quot;Zyyy&amp;quot; },&lt;br /&gt;
		{ 0x1D4A9, 0x1D4AC, &amp;quot;Zyyy&amp;quot; },&lt;br /&gt;
		{ 0x1D4AE, 0x1D4B9, &amp;quot;Zyyy&amp;quot; },&lt;br /&gt;
		{ 0x1D4BD, 0x1D4C3, &amp;quot;Zyyy&amp;quot; },&lt;br /&gt;
		{ 0x1D4C5, 0x1D505, &amp;quot;Zyyy&amp;quot; },&lt;br /&gt;
		{ 0x1D507, 0x1D50A, &amp;quot;Zyyy&amp;quot; },&lt;br /&gt;
		{ 0x1D50D, 0x1D514, &amp;quot;Zyyy&amp;quot; },&lt;br /&gt;
		{ 0x1D516, 0x1D51C, &amp;quot;Zyyy&amp;quot; },&lt;br /&gt;
		{ 0x1D51E, 0x1D539, &amp;quot;Zyyy&amp;quot; },&lt;br /&gt;
		{ 0x1D53B, 0x1D53E, &amp;quot;Zyyy&amp;quot; },&lt;br /&gt;
		{ 0x1D540, 0x1D544, &amp;quot;Zyyy&amp;quot; },&lt;br /&gt;
		{ 0x1D54A, 0x1D550, &amp;quot;Zyyy&amp;quot; },&lt;br /&gt;
		{ 0x1D552, 0x1D6A5, &amp;quot;Zyyy&amp;quot; },&lt;br /&gt;
		{ 0x1D6A8, 0x1D7CB, &amp;quot;Zyyy&amp;quot; },&lt;br /&gt;
		{ 0x1D7CE, 0x1D7FF, &amp;quot;Zyyy&amp;quot; },&lt;br /&gt;
		{ 0x1D800, 0x1DA8B, &amp;quot;Sgnw&amp;quot; },&lt;br /&gt;
		{ 0x1DA9B, 0x1DA9F, &amp;quot;Sgnw&amp;quot; },&lt;br /&gt;
		{ 0x1DAA1, 0x1DAAF, &amp;quot;Sgnw&amp;quot; },&lt;br /&gt;
		{ 0x1DF00, 0x1DF1E, &amp;quot;Latn&amp;quot; },&lt;br /&gt;
		{ 0x1DF25, 0x1DF2A, &amp;quot;Latn&amp;quot; },&lt;br /&gt;
		{ 0x1E000, 0x1E006, &amp;quot;Glag&amp;quot; },&lt;br /&gt;
		{ 0x1E008, 0x1E018, &amp;quot;Glag&amp;quot; },&lt;br /&gt;
		{ 0x1E01B, 0x1E021, &amp;quot;Glag&amp;quot; },&lt;br /&gt;
		{ 0x1E023, 0x1E024, &amp;quot;Glag&amp;quot; },&lt;br /&gt;
		{ 0x1E026, 0x1E02A, &amp;quot;Glag&amp;quot; },&lt;br /&gt;
		{ 0x1E030, 0x1E06D, &amp;quot;Cyrl&amp;quot; },&lt;br /&gt;
		{ 0x1E100, 0x1E12C, &amp;quot;Hmnp&amp;quot; },&lt;br /&gt;
		{ 0x1E130, 0x1E13D, &amp;quot;Hmnp&amp;quot; },&lt;br /&gt;
		{ 0x1E140, 0x1E149, &amp;quot;Hmnp&amp;quot; },&lt;br /&gt;
		{ 0x1E14E, 0x1E14F, &amp;quot;Hmnp&amp;quot; },&lt;br /&gt;
		{ 0x1E290, 0x1E2AE, &amp;quot;Toto&amp;quot; },&lt;br /&gt;
		{ 0x1E2C0, 0x1E2F9, &amp;quot;Wcho&amp;quot; },&lt;br /&gt;
		{ 0x1E4D0, 0x1E4F9, &amp;quot;Nagm&amp;quot; },&lt;br /&gt;
		{ 0x1E7E0, 0x1E7E6, &amp;quot;Ethi&amp;quot; },&lt;br /&gt;
		{ 0x1E7E8, 0x1E7EB, &amp;quot;Ethi&amp;quot; },&lt;br /&gt;
		{ 0x1E7ED, 0x1E7EE, &amp;quot;Ethi&amp;quot; },&lt;br /&gt;
		{ 0x1E7F0, 0x1E7FE, &amp;quot;Ethi&amp;quot; },&lt;br /&gt;
		{ 0x1E800, 0x1E8C4, &amp;quot;Mend&amp;quot; },&lt;br /&gt;
		{ 0x1E8C7, 0x1E8D6, &amp;quot;Mend&amp;quot; },&lt;br /&gt;
		{ 0x1E900, 0x1E94B, &amp;quot;Adlm&amp;quot; },&lt;br /&gt;
		{ 0x1E950, 0x1E959, &amp;quot;Adlm&amp;quot; },&lt;br /&gt;
		{ 0x1E95E, 0x1E95F, &amp;quot;Adlm&amp;quot; },&lt;br /&gt;
		{ 0x1EC71, 0x1ECB4, &amp;quot;Zyyy&amp;quot; },&lt;br /&gt;
		{ 0x1ED01, 0x1ED3D, &amp;quot;Zyyy&amp;quot; },&lt;br /&gt;
		{ 0x1EE00, 0x1EE03, &amp;quot;Arab&amp;quot; },&lt;br /&gt;
		{ 0x1EE05, 0x1EE1F, &amp;quot;Arab&amp;quot; },&lt;br /&gt;
		{ 0x1EE21, 0x1EE22, &amp;quot;Arab&amp;quot; },&lt;br /&gt;
		{ 0x1EE29, 0x1EE32, &amp;quot;Arab&amp;quot; },&lt;br /&gt;
		{ 0x1EE34, 0x1EE37, &amp;quot;Arab&amp;quot; },&lt;br /&gt;
		{ 0x1EE4D, 0x1EE4F, &amp;quot;Arab&amp;quot; },&lt;br /&gt;
		{ 0x1EE51, 0x1EE52, &amp;quot;Arab&amp;quot; },&lt;br /&gt;
		{ 0x1EE61, 0x1EE62, &amp;quot;Arab&amp;quot; },&lt;br /&gt;
		{ 0x1EE67, 0x1EE6A, &amp;quot;Arab&amp;quot; },&lt;br /&gt;
		{ 0x1EE6C, 0x1EE72, &amp;quot;Arab&amp;quot; },&lt;br /&gt;
		{ 0x1EE74, 0x1EE77, &amp;quot;Arab&amp;quot; },&lt;br /&gt;
		{ 0x1EE79, 0x1EE7C, &amp;quot;Arab&amp;quot; },&lt;br /&gt;
		{ 0x1EE80, 0x1EE89, &amp;quot;Arab&amp;quot; },&lt;br /&gt;
		{ 0x1EE8B, 0x1EE9B, &amp;quot;Arab&amp;quot; },&lt;br /&gt;
		{ 0x1EEA1, 0x1EEA3, &amp;quot;Arab&amp;quot; },&lt;br /&gt;
		{ 0x1EEA5, 0x1EEA9, &amp;quot;Arab&amp;quot; },&lt;br /&gt;
		{ 0x1EEAB, 0x1EEBB, &amp;quot;Arab&amp;quot; },&lt;br /&gt;
		{ 0x1EEF0, 0x1EEF1, &amp;quot;Arab&amp;quot; },&lt;br /&gt;
		{ 0x1F000, 0x1F02B, &amp;quot;Zyyy&amp;quot; },&lt;br /&gt;
		{ 0x1F030, 0x1F093, &amp;quot;Zyyy&amp;quot; },&lt;br /&gt;
		{ 0x1F0A0, 0x1F0AE, &amp;quot;Zyyy&amp;quot; },&lt;br /&gt;
		{ 0x1F0B1, 0x1F0BF, &amp;quot;Zyyy&amp;quot; },&lt;br /&gt;
		{ 0x1F0C1, 0x1F0CF, &amp;quot;Zyyy&amp;quot; },&lt;br /&gt;
		{ 0x1F0D1, 0x1F0F5, &amp;quot;Zyyy&amp;quot; },&lt;br /&gt;
		{ 0x1F100, 0x1F1AD, &amp;quot;Zyyy&amp;quot; },&lt;br /&gt;
		{ 0x1F1E6, 0x1F1FF, &amp;quot;Zyyy&amp;quot; },&lt;br /&gt;
		{ 0x1F201, 0x1F202, &amp;quot;Zyyy&amp;quot; },&lt;br /&gt;
		{ 0x1F210, 0x1F23B, &amp;quot;Zyyy&amp;quot; },&lt;br /&gt;
		{ 0x1F240, 0x1F248, &amp;quot;Zyyy&amp;quot; },&lt;br /&gt;
		{ 0x1F250, 0x1F251, &amp;quot;Zyyy&amp;quot; },&lt;br /&gt;
		{ 0x1F260, 0x1F265, &amp;quot;Zyyy&amp;quot; },&lt;br /&gt;
		{ 0x1F300, 0x1F6D7, &amp;quot;Zyyy&amp;quot; },&lt;br /&gt;
		{ 0x1F6DC, 0x1F6EC, &amp;quot;Zyyy&amp;quot; },&lt;br /&gt;
		{ 0x1F6F0, 0x1F6FC, &amp;quot;Zyyy&amp;quot; },&lt;br /&gt;
		{ 0x1F700, 0x1F776, &amp;quot;Zyyy&amp;quot; },&lt;br /&gt;
		{ 0x1F77B, 0x1F7D9, &amp;quot;Zyyy&amp;quot; },&lt;br /&gt;
		{ 0x1F7E0, 0x1F7EB, &amp;quot;Zyyy&amp;quot; },&lt;br /&gt;
		{ 0x1F800, 0x1F80B, &amp;quot;Zyyy&amp;quot; },&lt;br /&gt;
		{ 0x1F810, 0x1F847, &amp;quot;Zyyy&amp;quot; },&lt;br /&gt;
		{ 0x1F850, 0x1F859, &amp;quot;Zyyy&amp;quot; },&lt;br /&gt;
		{ 0x1F860, 0x1F887, &amp;quot;Zyyy&amp;quot; },&lt;br /&gt;
		{ 0x1F890, 0x1F8AD, &amp;quot;Zyyy&amp;quot; },&lt;br /&gt;
		{ 0x1F8B0, 0x1F8B1, &amp;quot;Zyyy&amp;quot; },&lt;br /&gt;
		{ 0x1F900, 0x1FA53, &amp;quot;Zyyy&amp;quot; },&lt;br /&gt;
		{ 0x1FA60, 0x1FA6D, &amp;quot;Zyyy&amp;quot; },&lt;br /&gt;
		{ 0x1FA70, 0x1FA7C, &amp;quot;Zyyy&amp;quot; },&lt;br /&gt;
		{ 0x1FA80, 0x1FA88, &amp;quot;Zyyy&amp;quot; },&lt;br /&gt;
		{ 0x1FA90, 0x1FABD, &amp;quot;Zyyy&amp;quot; },&lt;br /&gt;
		{ 0x1FABF, 0x1FAC5, &amp;quot;Zyyy&amp;quot; },&lt;br /&gt;
		{ 0x1FACE, 0x1FADB, &amp;quot;Zyyy&amp;quot; },&lt;br /&gt;
		{ 0x1FAE0, 0x1FAE8, &amp;quot;Zyyy&amp;quot; },&lt;br /&gt;
		{ 0x1FAF0, 0x1FAF8, &amp;quot;Zyyy&amp;quot; },&lt;br /&gt;
		{ 0x1FB00, 0x1FB92, &amp;quot;Zyyy&amp;quot; },&lt;br /&gt;
		{ 0x1FB94, 0x1FBCA, &amp;quot;Zyyy&amp;quot; },&lt;br /&gt;
		{ 0x1FBF0, 0x1FBF9, &amp;quot;Zyyy&amp;quot; },&lt;br /&gt;
		{ 0x20000, 0x2A6DF, &amp;quot;Hani&amp;quot; },&lt;br /&gt;
		{ 0x2A700, 0x2B739, &amp;quot;Hani&amp;quot; },&lt;br /&gt;
		{ 0x2B740, 0x2B81D, &amp;quot;Hani&amp;quot; },&lt;br /&gt;
		{ 0x2B820, 0x2CEA1, &amp;quot;Hani&amp;quot; },&lt;br /&gt;
		{ 0x2CEB0, 0x2EBE0, &amp;quot;Hani&amp;quot; },&lt;br /&gt;
		{ 0x2F800, 0x2FA1D, &amp;quot;Hani&amp;quot; },&lt;br /&gt;
		{ 0x30000, 0x3134A, &amp;quot;Hani&amp;quot; },&lt;br /&gt;
		{ 0x31350, 0x323AF, &amp;quot;Hani&amp;quot; },&lt;br /&gt;
		{ 0xE0020, 0xE007F, &amp;quot;Zyyy&amp;quot; },&lt;br /&gt;
		{ 0xE0100, 0xE01EF, &amp;quot;Zinh&amp;quot; },&lt;br /&gt;
	},&lt;br /&gt;
	-- Scripts.txt gives full names; here we consider them aliases to save space.&lt;br /&gt;
	aliases = {&lt;br /&gt;
		Adlm = &amp;quot;Adlam&amp;quot;,&lt;br /&gt;
		Aghb = &amp;quot;Caucasian Albanian&amp;quot;,&lt;br /&gt;
		Ahom = &amp;quot;Ahom&amp;quot;,&lt;br /&gt;
		Arab = &amp;quot;Arabic&amp;quot;,&lt;br /&gt;
		Armi = &amp;quot;Imperial Aramaic&amp;quot;,&lt;br /&gt;
		Armn = &amp;quot;Armenian&amp;quot;,&lt;br /&gt;
		Avst = &amp;quot;Avestan&amp;quot;,&lt;br /&gt;
		Bali = &amp;quot;Balinese&amp;quot;,&lt;br /&gt;
		Bamu = &amp;quot;Bamum&amp;quot;,&lt;br /&gt;
		Bass = &amp;quot;Bassa Vah&amp;quot;,&lt;br /&gt;
		Batk = &amp;quot;Batak&amp;quot;,&lt;br /&gt;
		Beng = &amp;quot;Bengali&amp;quot;,&lt;br /&gt;
		Bhks = &amp;quot;Bhaiksuki&amp;quot;,&lt;br /&gt;
		Bopo = &amp;quot;Bopomofo&amp;quot;,&lt;br /&gt;
		Brah = &amp;quot;Brahmi&amp;quot;,&lt;br /&gt;
		Brai = &amp;quot;Braille&amp;quot;,&lt;br /&gt;
		Bugi = &amp;quot;Buginese&amp;quot;,&lt;br /&gt;
		Buhd = &amp;quot;Buhid&amp;quot;,&lt;br /&gt;
		Cakm = &amp;quot;Chakma&amp;quot;,&lt;br /&gt;
		Cans = &amp;quot;Canadian Aboriginal&amp;quot;,&lt;br /&gt;
		Cari = &amp;quot;Carian&amp;quot;,&lt;br /&gt;
		Cham = &amp;quot;Cham&amp;quot;,&lt;br /&gt;
		Cher = &amp;quot;Cherokee&amp;quot;,&lt;br /&gt;
		Chrs = &amp;quot;Chorasmian&amp;quot;,&lt;br /&gt;
		Copt = &amp;quot;Coptic&amp;quot;,&lt;br /&gt;
		Cpmn = &amp;quot;Cypro Minoan&amp;quot;,&lt;br /&gt;
		Cprt = &amp;quot;Cypriot&amp;quot;,&lt;br /&gt;
		Cyrl = &amp;quot;Cyrillic&amp;quot;,&lt;br /&gt;
		Deva = &amp;quot;Devanagari&amp;quot;,&lt;br /&gt;
		Diak = &amp;quot;Dives Akuru&amp;quot;,&lt;br /&gt;
		Dogr = &amp;quot;Dogra&amp;quot;,&lt;br /&gt;
		Dsrt = &amp;quot;Deseret&amp;quot;,&lt;br /&gt;
		Dupl = &amp;quot;Duployan&amp;quot;,&lt;br /&gt;
		Egyp = &amp;quot;Egyptian Hieroglyphs&amp;quot;,&lt;br /&gt;
		Elba = &amp;quot;Elbasan&amp;quot;,&lt;br /&gt;
		Elym = &amp;quot;Elymaic&amp;quot;,&lt;br /&gt;
		Ethi = &amp;quot;Ethiopic&amp;quot;,&lt;br /&gt;
		Geor = &amp;quot;Georgian&amp;quot;,&lt;br /&gt;
		Glag = &amp;quot;Glagolitic&amp;quot;,&lt;br /&gt;
		Gong = &amp;quot;Gunjala Gondi&amp;quot;,&lt;br /&gt;
		Gonm = &amp;quot;Masaram Gondi&amp;quot;,&lt;br /&gt;
		Goth = &amp;quot;Gothic&amp;quot;,&lt;br /&gt;
		Gran = &amp;quot;Grantha&amp;quot;,&lt;br /&gt;
		Grek = &amp;quot;Greek&amp;quot;,&lt;br /&gt;
		Gujr = &amp;quot;Gujarati&amp;quot;,&lt;br /&gt;
		Guru = &amp;quot;Gurmukhi&amp;quot;,&lt;br /&gt;
		Hang = &amp;quot;Hangul&amp;quot;,&lt;br /&gt;
		Hani = &amp;quot;Han&amp;quot;,&lt;br /&gt;
		Hano = &amp;quot;Hanunoo&amp;quot;,&lt;br /&gt;
		Hatr = &amp;quot;Hatran&amp;quot;,&lt;br /&gt;
		Hebr = &amp;quot;Hebrew&amp;quot;,&lt;br /&gt;
		Hira = &amp;quot;Hiragana&amp;quot;,&lt;br /&gt;
		Hluw = &amp;quot;Anatolian Hieroglyphs&amp;quot;,&lt;br /&gt;
		Hmng = &amp;quot;Pahawh Hmong&amp;quot;,&lt;br /&gt;
		Hmnp = &amp;quot;Nyiakeng Puachue Hmong&amp;quot;,&lt;br /&gt;
		Hrkt = &amp;quot;Katakana Or Hiragana&amp;quot;,&lt;br /&gt;
		Hung = &amp;quot;Old Hungarian&amp;quot;,&lt;br /&gt;
		Ital = &amp;quot;Old Italic&amp;quot;,&lt;br /&gt;
		Java = &amp;quot;Javanese&amp;quot;,&lt;br /&gt;
		Kali = &amp;quot;Kayah Li&amp;quot;,&lt;br /&gt;
		Kana = &amp;quot;Katakana&amp;quot;,&lt;br /&gt;
		Kawi = &amp;quot;Kawi&amp;quot;,&lt;br /&gt;
		Khar = &amp;quot;Kharoshthi&amp;quot;,&lt;br /&gt;
		Khmr = &amp;quot;Khmer&amp;quot;,&lt;br /&gt;
		Khoj = &amp;quot;Khojki&amp;quot;,&lt;br /&gt;
		Kits = &amp;quot;Khitan Small Script&amp;quot;,&lt;br /&gt;
		Knda = &amp;quot;Kannada&amp;quot;,&lt;br /&gt;
		Kthi = &amp;quot;Kaithi&amp;quot;,&lt;br /&gt;
		Lana = &amp;quot;Tai Tham&amp;quot;,&lt;br /&gt;
		Laoo = &amp;quot;Lao&amp;quot;,&lt;br /&gt;
		Latn = &amp;quot;Latin&amp;quot;,&lt;br /&gt;
		Lepc = &amp;quot;Lepcha&amp;quot;,&lt;br /&gt;
		Limb = &amp;quot;Limbu&amp;quot;,&lt;br /&gt;
		Lina = &amp;quot;Linear A&amp;quot;,&lt;br /&gt;
		Linb = &amp;quot;Linear B&amp;quot;,&lt;br /&gt;
		Lisu = &amp;quot;Lisu&amp;quot;,&lt;br /&gt;
		Lyci = &amp;quot;Lycian&amp;quot;,&lt;br /&gt;
		Lydi = &amp;quot;Lydian&amp;quot;,&lt;br /&gt;
		Mahj = &amp;quot;Mahajani&amp;quot;,&lt;br /&gt;
		Maka = &amp;quot;Makasar&amp;quot;,&lt;br /&gt;
		Mand = &amp;quot;Mandaic&amp;quot;,&lt;br /&gt;
		Mani = &amp;quot;Manichaean&amp;quot;,&lt;br /&gt;
		Marc = &amp;quot;Marchen&amp;quot;,&lt;br /&gt;
		Medf = &amp;quot;Medefaidrin&amp;quot;,&lt;br /&gt;
		Mend = &amp;quot;Mende Kikakui&amp;quot;,&lt;br /&gt;
		Merc = &amp;quot;Meroitic Cursive&amp;quot;,&lt;br /&gt;
		Mero = &amp;quot;Meroitic Hieroglyphs&amp;quot;,&lt;br /&gt;
		Mlym = &amp;quot;Malayalam&amp;quot;,&lt;br /&gt;
		Modi = &amp;quot;Modi&amp;quot;,&lt;br /&gt;
		Mong = &amp;quot;Mongolian&amp;quot;,&lt;br /&gt;
		Mroo = &amp;quot;Mro&amp;quot;,&lt;br /&gt;
		Mtei = &amp;quot;Meetei Mayek&amp;quot;,&lt;br /&gt;
		Mult = &amp;quot;Multani&amp;quot;,&lt;br /&gt;
		Mymr = &amp;quot;Myanmar&amp;quot;,&lt;br /&gt;
		Nagm = &amp;quot;Nag Mundari&amp;quot;,&lt;br /&gt;
		Nand = &amp;quot;Nandinagari&amp;quot;,&lt;br /&gt;
		Narb = &amp;quot;Old North Arabian&amp;quot;,&lt;br /&gt;
		Nbat = &amp;quot;Nabataean&amp;quot;,&lt;br /&gt;
		Newa = &amp;quot;Newa&amp;quot;,&lt;br /&gt;
		Nkoo = &amp;quot;NKo&amp;quot;,&lt;br /&gt;
		Nshu = &amp;quot;Nushu&amp;quot;,&lt;br /&gt;
		Ogam = &amp;quot;Ogham&amp;quot;,&lt;br /&gt;
		Olck = &amp;quot;Ol Chiki&amp;quot;,&lt;br /&gt;
		Orkh = &amp;quot;Old Turkic&amp;quot;,&lt;br /&gt;
		Orya = &amp;quot;Oriya&amp;quot;,&lt;br /&gt;
		Osge = &amp;quot;Osage&amp;quot;,&lt;br /&gt;
		Osma = &amp;quot;Osmanya&amp;quot;,&lt;br /&gt;
		Ougr = &amp;quot;Old Uyghur&amp;quot;,&lt;br /&gt;
		Palm = &amp;quot;Palmyrene&amp;quot;,&lt;br /&gt;
		Pauc = &amp;quot;Pau Cin Hau&amp;quot;,&lt;br /&gt;
		Perm = &amp;quot;Old Permic&amp;quot;,&lt;br /&gt;
		Phag = &amp;quot;Phags Pa&amp;quot;,&lt;br /&gt;
		Phli = &amp;quot;Inscriptional Pahlavi&amp;quot;,&lt;br /&gt;
		Phlp = &amp;quot;Psalter Pahlavi&amp;quot;,&lt;br /&gt;
		Phnx = &amp;quot;Phoenician&amp;quot;,&lt;br /&gt;
		Plrd = &amp;quot;Miao&amp;quot;,&lt;br /&gt;
		Prti = &amp;quot;Inscriptional Parthian&amp;quot;,&lt;br /&gt;
		Rjng = &amp;quot;Rejang&amp;quot;,&lt;br /&gt;
		Rohg = &amp;quot;Hanifi Rohingya&amp;quot;,&lt;br /&gt;
		Runr = &amp;quot;Runic&amp;quot;,&lt;br /&gt;
		Samr = &amp;quot;Samaritan&amp;quot;,&lt;br /&gt;
		Sarb = &amp;quot;Old South Arabian&amp;quot;,&lt;br /&gt;
		Saur = &amp;quot;Saurashtra&amp;quot;,&lt;br /&gt;
		Sgnw = &amp;quot;SignWriting&amp;quot;,&lt;br /&gt;
		Shaw = &amp;quot;Shavian&amp;quot;,&lt;br /&gt;
		Shrd = &amp;quot;Sharada&amp;quot;,&lt;br /&gt;
		Sidd = &amp;quot;Siddham&amp;quot;,&lt;br /&gt;
		Sind = &amp;quot;Khudawadi&amp;quot;,&lt;br /&gt;
		Sinh = &amp;quot;Sinhala&amp;quot;,&lt;br /&gt;
		Sogd = &amp;quot;Sogdian&amp;quot;,&lt;br /&gt;
		Sogo = &amp;quot;Old Sogdian&amp;quot;,&lt;br /&gt;
		Sora = &amp;quot;Sora Sompeng&amp;quot;,&lt;br /&gt;
		Soyo = &amp;quot;Soyombo&amp;quot;,&lt;br /&gt;
		Sund = &amp;quot;Sundanese&amp;quot;,&lt;br /&gt;
		Sylo = &amp;quot;Syloti Nagri&amp;quot;,&lt;br /&gt;
		Syrc = &amp;quot;Syriac&amp;quot;,&lt;br /&gt;
		Tagb = &amp;quot;Tagbanwa&amp;quot;,&lt;br /&gt;
		Takr = &amp;quot;Takri&amp;quot;,&lt;br /&gt;
		Tale = &amp;quot;Tai Le&amp;quot;,&lt;br /&gt;
		Talu = &amp;quot;New Tai Lue&amp;quot;,&lt;br /&gt;
		Taml = &amp;quot;Tamil&amp;quot;,&lt;br /&gt;
		Tang = &amp;quot;Tangut&amp;quot;,&lt;br /&gt;
		Tavt = &amp;quot;Tai Viet&amp;quot;,&lt;br /&gt;
		Telu = &amp;quot;Telugu&amp;quot;,&lt;br /&gt;
		Tfng = &amp;quot;Tifinagh&amp;quot;,&lt;br /&gt;
		Tglg = &amp;quot;Tagalog&amp;quot;,&lt;br /&gt;
		Thaa = &amp;quot;Thaana&amp;quot;,&lt;br /&gt;
		Thai = &amp;quot;Thai&amp;quot;,&lt;br /&gt;
		Tibt = &amp;quot;Tibetan&amp;quot;,&lt;br /&gt;
		Tirh = &amp;quot;Tirhuta&amp;quot;,&lt;br /&gt;
		Tnsa = &amp;quot;Tangsa&amp;quot;,&lt;br /&gt;
		Toto = &amp;quot;Toto&amp;quot;,&lt;br /&gt;
		Ugar = &amp;quot;Ugaritic&amp;quot;,&lt;br /&gt;
		Vaii = &amp;quot;Vai&amp;quot;,&lt;br /&gt;
		Vith = &amp;quot;Vithkuqi&amp;quot;,&lt;br /&gt;
		Wara = &amp;quot;Warang Citi&amp;quot;,&lt;br /&gt;
		Wcho = &amp;quot;Wancho&amp;quot;,&lt;br /&gt;
		Xpeo = &amp;quot;Old Persian&amp;quot;,&lt;br /&gt;
		Xsux = &amp;quot;Cuneiform&amp;quot;,&lt;br /&gt;
		Yezi = &amp;quot;Yezidi&amp;quot;,&lt;br /&gt;
		Yiii = &amp;quot;Yi&amp;quot;,&lt;br /&gt;
		Zanb = &amp;quot;Zanabazar Square&amp;quot;,&lt;br /&gt;
		Zinh = &amp;quot;Inherited&amp;quot;,&lt;br /&gt;
		Zyyy = &amp;quot;Common&amp;quot;,&lt;br /&gt;
		Zzzz = &amp;quot;Unknown&amp;quot;,&lt;br /&gt;
	},&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
-- Required for binary search function in [[Module:Language/scripts]].&lt;br /&gt;
-- Cannot get length of module loaded with mw.loadData.&lt;br /&gt;
data.ranges.length = #data.ranges&lt;br /&gt;
&lt;br /&gt;
data.rtl = {}&lt;br /&gt;
&lt;br /&gt;
for _, script in ipairs(mw.loadData &amp;quot;Module:Lang/data&amp;quot;.rtl_scripts) do&lt;br /&gt;
	-- [[Module:Lang/data]] has script codes in lowercase;&lt;br /&gt;
	-- this module has script codes with the first letter capitalized.&lt;br /&gt;
	data.rtl[script:gsub(&amp;quot;^%a&amp;quot;, string.upper)] = true&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
return data&lt;/div&gt;</summary>
		<author><name>DoubleCircle</name></author>
	</entry>
	<entry>
		<id>https://9on0wiki.gunmu.dns.navy/index.php?title=Module:Lang/ISO_639_synonyms&amp;diff=716</id>
		<title>Module:Lang/ISO 639 synonyms</title>
		<link rel="alternate" type="text/html" href="https://9on0wiki.gunmu.dns.navy/index.php?title=Module:Lang/ISO_639_synonyms&amp;diff=716"/>
		<updated>2026-08-26T10:58:54Z</updated>

		<summary type="html">&lt;p&gt;DoubleCircle：​导入1个版本&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;-- File-Date: 2013-01-11&lt;br /&gt;
return {&lt;br /&gt;
	[&amp;quot;aar&amp;quot;] = &amp;quot;aa&amp;quot;,&lt;br /&gt;
	[&amp;quot;abk&amp;quot;] = &amp;quot;ab&amp;quot;,&lt;br /&gt;
	[&amp;quot;afr&amp;quot;] = &amp;quot;af&amp;quot;,&lt;br /&gt;
	[&amp;quot;aka&amp;quot;] = &amp;quot;ak&amp;quot;,&lt;br /&gt;
	[&amp;quot;amh&amp;quot;] = &amp;quot;am&amp;quot;,&lt;br /&gt;
	[&amp;quot;ara&amp;quot;] = &amp;quot;ar&amp;quot;,&lt;br /&gt;
	[&amp;quot;arg&amp;quot;] = &amp;quot;an&amp;quot;,&lt;br /&gt;
	[&amp;quot;asm&amp;quot;] = &amp;quot;as&amp;quot;,&lt;br /&gt;
	[&amp;quot;ava&amp;quot;] = &amp;quot;av&amp;quot;,&lt;br /&gt;
	[&amp;quot;ave&amp;quot;] = &amp;quot;ae&amp;quot;,&lt;br /&gt;
	[&amp;quot;aym&amp;quot;] = &amp;quot;ay&amp;quot;,&lt;br /&gt;
	[&amp;quot;aze&amp;quot;] = &amp;quot;az&amp;quot;,&lt;br /&gt;
	[&amp;quot;bak&amp;quot;] = &amp;quot;ba&amp;quot;,&lt;br /&gt;
	[&amp;quot;bam&amp;quot;] = &amp;quot;bm&amp;quot;,&lt;br /&gt;
	[&amp;quot;bel&amp;quot;] = &amp;quot;be&amp;quot;,&lt;br /&gt;
	[&amp;quot;ben&amp;quot;] = &amp;quot;bn&amp;quot;,&lt;br /&gt;
	[&amp;quot;bih&amp;quot;] = &amp;quot;bh&amp;quot;,&lt;br /&gt;
	[&amp;quot;bis&amp;quot;] = &amp;quot;bi&amp;quot;,&lt;br /&gt;
	[&amp;quot;bod&amp;quot;] = &amp;quot;bo&amp;quot;,&lt;br /&gt;
	[&amp;quot;bos&amp;quot;] = &amp;quot;bs&amp;quot;,&lt;br /&gt;
	[&amp;quot;bre&amp;quot;] = &amp;quot;br&amp;quot;,&lt;br /&gt;
	[&amp;quot;bul&amp;quot;] = &amp;quot;bg&amp;quot;,&lt;br /&gt;
	[&amp;quot;cat&amp;quot;] = &amp;quot;ca&amp;quot;,&lt;br /&gt;
	[&amp;quot;ces&amp;quot;] = &amp;quot;cs&amp;quot;,&lt;br /&gt;
	[&amp;quot;cha&amp;quot;] = &amp;quot;ch&amp;quot;,&lt;br /&gt;
	[&amp;quot;che&amp;quot;] = &amp;quot;ce&amp;quot;,&lt;br /&gt;
	[&amp;quot;chu&amp;quot;] = &amp;quot;cu&amp;quot;,&lt;br /&gt;
	[&amp;quot;chv&amp;quot;] = &amp;quot;cv&amp;quot;,&lt;br /&gt;
	[&amp;quot;cor&amp;quot;] = &amp;quot;kw&amp;quot;,&lt;br /&gt;
	[&amp;quot;cos&amp;quot;] = &amp;quot;co&amp;quot;,&lt;br /&gt;
	[&amp;quot;cre&amp;quot;] = &amp;quot;cr&amp;quot;,&lt;br /&gt;
	[&amp;quot;cym&amp;quot;] = &amp;quot;cy&amp;quot;,&lt;br /&gt;
	[&amp;quot;dan&amp;quot;] = &amp;quot;da&amp;quot;,&lt;br /&gt;
	[&amp;quot;deu&amp;quot;] = &amp;quot;de&amp;quot;,&lt;br /&gt;
	[&amp;quot;div&amp;quot;] = &amp;quot;dv&amp;quot;,&lt;br /&gt;
	[&amp;quot;dzo&amp;quot;] = &amp;quot;dz&amp;quot;,&lt;br /&gt;
	[&amp;quot;ell&amp;quot;] = &amp;quot;el&amp;quot;,&lt;br /&gt;
	[&amp;quot;eng&amp;quot;] = &amp;quot;en&amp;quot;,&lt;br /&gt;
	[&amp;quot;epo&amp;quot;] = &amp;quot;eo&amp;quot;,&lt;br /&gt;
	[&amp;quot;est&amp;quot;] = &amp;quot;et&amp;quot;,&lt;br /&gt;
	[&amp;quot;eus&amp;quot;] = &amp;quot;eu&amp;quot;,&lt;br /&gt;
	[&amp;quot;ewe&amp;quot;] = &amp;quot;ee&amp;quot;,&lt;br /&gt;
	[&amp;quot;fao&amp;quot;] = &amp;quot;fo&amp;quot;,&lt;br /&gt;
	[&amp;quot;fas&amp;quot;] = &amp;quot;fa&amp;quot;,&lt;br /&gt;
	[&amp;quot;fij&amp;quot;] = &amp;quot;fj&amp;quot;,&lt;br /&gt;
	[&amp;quot;fin&amp;quot;] = &amp;quot;fi&amp;quot;,&lt;br /&gt;
	[&amp;quot;fra&amp;quot;] = &amp;quot;fr&amp;quot;,&lt;br /&gt;
	[&amp;quot;fry&amp;quot;] = &amp;quot;fy&amp;quot;,&lt;br /&gt;
	[&amp;quot;ful&amp;quot;] = &amp;quot;ff&amp;quot;,&lt;br /&gt;
	[&amp;quot;gla&amp;quot;] = &amp;quot;gd&amp;quot;,&lt;br /&gt;
	[&amp;quot;gle&amp;quot;] = &amp;quot;ga&amp;quot;,&lt;br /&gt;
	[&amp;quot;glg&amp;quot;] = &amp;quot;gl&amp;quot;,&lt;br /&gt;
	[&amp;quot;glv&amp;quot;] = &amp;quot;gv&amp;quot;,&lt;br /&gt;
	[&amp;quot;grn&amp;quot;] = &amp;quot;gn&amp;quot;,&lt;br /&gt;
	[&amp;quot;guj&amp;quot;] = &amp;quot;gu&amp;quot;,&lt;br /&gt;
	[&amp;quot;hat&amp;quot;] = &amp;quot;ht&amp;quot;,&lt;br /&gt;
	[&amp;quot;hau&amp;quot;] = &amp;quot;ha&amp;quot;,&lt;br /&gt;
	[&amp;quot;heb&amp;quot;] = &amp;quot;he&amp;quot;,&lt;br /&gt;
	[&amp;quot;her&amp;quot;] = &amp;quot;hz&amp;quot;,&lt;br /&gt;
	[&amp;quot;hin&amp;quot;] = &amp;quot;hi&amp;quot;,&lt;br /&gt;
	[&amp;quot;hmo&amp;quot;] = &amp;quot;ho&amp;quot;,&lt;br /&gt;
	[&amp;quot;hrv&amp;quot;] = &amp;quot;hr&amp;quot;,&lt;br /&gt;
	[&amp;quot;hun&amp;quot;] = &amp;quot;hu&amp;quot;,&lt;br /&gt;
	[&amp;quot;hye&amp;quot;] = &amp;quot;hy&amp;quot;,&lt;br /&gt;
	[&amp;quot;ibo&amp;quot;] = &amp;quot;ig&amp;quot;,&lt;br /&gt;
	[&amp;quot;ido&amp;quot;] = &amp;quot;io&amp;quot;,&lt;br /&gt;
	[&amp;quot;iii&amp;quot;] = &amp;quot;ii&amp;quot;,&lt;br /&gt;
	[&amp;quot;iku&amp;quot;] = &amp;quot;iu&amp;quot;,&lt;br /&gt;
	[&amp;quot;ile&amp;quot;] = &amp;quot;ie&amp;quot;,&lt;br /&gt;
	[&amp;quot;ina&amp;quot;] = &amp;quot;ia&amp;quot;,&lt;br /&gt;
	[&amp;quot;ind&amp;quot;] = &amp;quot;id&amp;quot;,&lt;br /&gt;
	[&amp;quot;ipk&amp;quot;] = &amp;quot;ik&amp;quot;,&lt;br /&gt;
	[&amp;quot;isl&amp;quot;] = &amp;quot;is&amp;quot;,&lt;br /&gt;
	[&amp;quot;ita&amp;quot;] = &amp;quot;it&amp;quot;,&lt;br /&gt;
	[&amp;quot;jav&amp;quot;] = &amp;quot;jv&amp;quot;,&lt;br /&gt;
	[&amp;quot;jpn&amp;quot;] = &amp;quot;ja&amp;quot;,&lt;br /&gt;
	[&amp;quot;kal&amp;quot;] = &amp;quot;kl&amp;quot;,&lt;br /&gt;
	[&amp;quot;kan&amp;quot;] = &amp;quot;kn&amp;quot;,&lt;br /&gt;
	[&amp;quot;kas&amp;quot;] = &amp;quot;ks&amp;quot;,&lt;br /&gt;
	[&amp;quot;kat&amp;quot;] = &amp;quot;ka&amp;quot;,&lt;br /&gt;
	[&amp;quot;kau&amp;quot;] = &amp;quot;kr&amp;quot;,&lt;br /&gt;
	[&amp;quot;kaz&amp;quot;] = &amp;quot;kk&amp;quot;,&lt;br /&gt;
	[&amp;quot;khm&amp;quot;] = &amp;quot;km&amp;quot;,&lt;br /&gt;
	[&amp;quot;kik&amp;quot;] = &amp;quot;ki&amp;quot;,&lt;br /&gt;
	[&amp;quot;kin&amp;quot;] = &amp;quot;rw&amp;quot;,&lt;br /&gt;
	[&amp;quot;kir&amp;quot;] = &amp;quot;ky&amp;quot;,&lt;br /&gt;
	[&amp;quot;kom&amp;quot;] = &amp;quot;kv&amp;quot;,&lt;br /&gt;
	[&amp;quot;kon&amp;quot;] = &amp;quot;kg&amp;quot;,&lt;br /&gt;
	[&amp;quot;kor&amp;quot;] = &amp;quot;ko&amp;quot;,&lt;br /&gt;
	[&amp;quot;kua&amp;quot;] = &amp;quot;kj&amp;quot;,&lt;br /&gt;
	[&amp;quot;kur&amp;quot;] = &amp;quot;ku&amp;quot;,&lt;br /&gt;
	[&amp;quot;lao&amp;quot;] = &amp;quot;lo&amp;quot;,&lt;br /&gt;
	[&amp;quot;lat&amp;quot;] = &amp;quot;la&amp;quot;,&lt;br /&gt;
	[&amp;quot;lav&amp;quot;] = &amp;quot;lv&amp;quot;,&lt;br /&gt;
	[&amp;quot;lim&amp;quot;] = &amp;quot;li&amp;quot;,&lt;br /&gt;
	[&amp;quot;lin&amp;quot;] = &amp;quot;ln&amp;quot;,&lt;br /&gt;
	[&amp;quot;lit&amp;quot;] = &amp;quot;lt&amp;quot;,&lt;br /&gt;
	[&amp;quot;ltz&amp;quot;] = &amp;quot;lb&amp;quot;,&lt;br /&gt;
	[&amp;quot;lub&amp;quot;] = &amp;quot;lu&amp;quot;,&lt;br /&gt;
	[&amp;quot;lug&amp;quot;] = &amp;quot;lg&amp;quot;,&lt;br /&gt;
	[&amp;quot;mah&amp;quot;] = &amp;quot;mh&amp;quot;,&lt;br /&gt;
	[&amp;quot;mal&amp;quot;] = &amp;quot;ml&amp;quot;,&lt;br /&gt;
	[&amp;quot;mar&amp;quot;] = &amp;quot;mr&amp;quot;,&lt;br /&gt;
	[&amp;quot;mkd&amp;quot;] = &amp;quot;mk&amp;quot;,&lt;br /&gt;
	[&amp;quot;mlg&amp;quot;] = &amp;quot;mg&amp;quot;,&lt;br /&gt;
	[&amp;quot;mlt&amp;quot;] = &amp;quot;mt&amp;quot;,&lt;br /&gt;
	[&amp;quot;mon&amp;quot;] = &amp;quot;mn&amp;quot;,&lt;br /&gt;
	[&amp;quot;mri&amp;quot;] = &amp;quot;mi&amp;quot;,&lt;br /&gt;
	[&amp;quot;msa&amp;quot;] = &amp;quot;ms&amp;quot;,&lt;br /&gt;
	[&amp;quot;mya&amp;quot;] = &amp;quot;my&amp;quot;,&lt;br /&gt;
	[&amp;quot;nau&amp;quot;] = &amp;quot;na&amp;quot;,&lt;br /&gt;
	[&amp;quot;nav&amp;quot;] = &amp;quot;nv&amp;quot;,&lt;br /&gt;
	[&amp;quot;nbl&amp;quot;] = &amp;quot;nr&amp;quot;,&lt;br /&gt;
	[&amp;quot;nde&amp;quot;] = &amp;quot;nd&amp;quot;,&lt;br /&gt;
	[&amp;quot;ndo&amp;quot;] = &amp;quot;ng&amp;quot;,&lt;br /&gt;
	[&amp;quot;nep&amp;quot;] = &amp;quot;ne&amp;quot;,&lt;br /&gt;
	[&amp;quot;nld&amp;quot;] = &amp;quot;nl&amp;quot;,&lt;br /&gt;
	[&amp;quot;nno&amp;quot;] = &amp;quot;nn&amp;quot;,&lt;br /&gt;
	[&amp;quot;nob&amp;quot;] = &amp;quot;nb&amp;quot;,&lt;br /&gt;
	[&amp;quot;nor&amp;quot;] = &amp;quot;no&amp;quot;,&lt;br /&gt;
	[&amp;quot;nya&amp;quot;] = &amp;quot;ny&amp;quot;,&lt;br /&gt;
	[&amp;quot;oci&amp;quot;] = &amp;quot;oc&amp;quot;,&lt;br /&gt;
	[&amp;quot;oji&amp;quot;] = &amp;quot;oj&amp;quot;,&lt;br /&gt;
	[&amp;quot;ori&amp;quot;] = &amp;quot;or&amp;quot;,&lt;br /&gt;
	[&amp;quot;orm&amp;quot;] = &amp;quot;om&amp;quot;,&lt;br /&gt;
	[&amp;quot;oss&amp;quot;] = &amp;quot;os&amp;quot;,&lt;br /&gt;
	[&amp;quot;pan&amp;quot;] = &amp;quot;pa&amp;quot;,&lt;br /&gt;
	[&amp;quot;pli&amp;quot;] = &amp;quot;pi&amp;quot;,&lt;br /&gt;
	[&amp;quot;pol&amp;quot;] = &amp;quot;pl&amp;quot;,&lt;br /&gt;
	[&amp;quot;por&amp;quot;] = &amp;quot;pt&amp;quot;,&lt;br /&gt;
	[&amp;quot;pus&amp;quot;] = &amp;quot;ps&amp;quot;,&lt;br /&gt;
	[&amp;quot;que&amp;quot;] = &amp;quot;qu&amp;quot;,&lt;br /&gt;
	[&amp;quot;roh&amp;quot;] = &amp;quot;rm&amp;quot;,&lt;br /&gt;
	[&amp;quot;ron&amp;quot;] = &amp;quot;ro&amp;quot;,&lt;br /&gt;
	[&amp;quot;run&amp;quot;] = &amp;quot;rn&amp;quot;,&lt;br /&gt;
	[&amp;quot;rus&amp;quot;] = &amp;quot;ru&amp;quot;,&lt;br /&gt;
	[&amp;quot;sag&amp;quot;] = &amp;quot;sg&amp;quot;,&lt;br /&gt;
	[&amp;quot;san&amp;quot;] = &amp;quot;sa&amp;quot;,&lt;br /&gt;
	[&amp;quot;sin&amp;quot;] = &amp;quot;si&amp;quot;,&lt;br /&gt;
	[&amp;quot;slk&amp;quot;] = &amp;quot;sk&amp;quot;,&lt;br /&gt;
	[&amp;quot;slv&amp;quot;] = &amp;quot;sl&amp;quot;,&lt;br /&gt;
	[&amp;quot;sme&amp;quot;] = &amp;quot;se&amp;quot;,&lt;br /&gt;
	[&amp;quot;smo&amp;quot;] = &amp;quot;sm&amp;quot;,&lt;br /&gt;
	[&amp;quot;sna&amp;quot;] = &amp;quot;sn&amp;quot;,&lt;br /&gt;
	[&amp;quot;snd&amp;quot;] = &amp;quot;sd&amp;quot;,&lt;br /&gt;
	[&amp;quot;som&amp;quot;] = &amp;quot;so&amp;quot;,&lt;br /&gt;
	[&amp;quot;sot&amp;quot;] = &amp;quot;st&amp;quot;,&lt;br /&gt;
	[&amp;quot;spa&amp;quot;] = &amp;quot;es&amp;quot;,&lt;br /&gt;
	[&amp;quot;sqi&amp;quot;] = &amp;quot;sq&amp;quot;,&lt;br /&gt;
	[&amp;quot;srd&amp;quot;] = &amp;quot;sc&amp;quot;,&lt;br /&gt;
	[&amp;quot;srp&amp;quot;] = &amp;quot;sr&amp;quot;,&lt;br /&gt;
	[&amp;quot;ssw&amp;quot;] = &amp;quot;ss&amp;quot;,&lt;br /&gt;
	[&amp;quot;sun&amp;quot;] = &amp;quot;su&amp;quot;,&lt;br /&gt;
	[&amp;quot;swa&amp;quot;] = &amp;quot;sw&amp;quot;,&lt;br /&gt;
	[&amp;quot;swe&amp;quot;] = &amp;quot;sv&amp;quot;,&lt;br /&gt;
	[&amp;quot;tah&amp;quot;] = &amp;quot;ty&amp;quot;,&lt;br /&gt;
	[&amp;quot;tam&amp;quot;] = &amp;quot;ta&amp;quot;,&lt;br /&gt;
	[&amp;quot;tat&amp;quot;] = &amp;quot;tt&amp;quot;,&lt;br /&gt;
	[&amp;quot;tel&amp;quot;] = &amp;quot;te&amp;quot;,&lt;br /&gt;
	[&amp;quot;tgk&amp;quot;] = &amp;quot;tg&amp;quot;,&lt;br /&gt;
	[&amp;quot;tgl&amp;quot;] = &amp;quot;tl&amp;quot;,&lt;br /&gt;
	[&amp;quot;tha&amp;quot;] = &amp;quot;th&amp;quot;,&lt;br /&gt;
	[&amp;quot;tir&amp;quot;] = &amp;quot;ti&amp;quot;,&lt;br /&gt;
	[&amp;quot;ton&amp;quot;] = &amp;quot;to&amp;quot;,&lt;br /&gt;
	[&amp;quot;tsn&amp;quot;] = &amp;quot;tn&amp;quot;,&lt;br /&gt;
	[&amp;quot;tso&amp;quot;] = &amp;quot;ts&amp;quot;,&lt;br /&gt;
	[&amp;quot;tuk&amp;quot;] = &amp;quot;tk&amp;quot;,&lt;br /&gt;
	[&amp;quot;tur&amp;quot;] = &amp;quot;tr&amp;quot;,&lt;br /&gt;
	[&amp;quot;twi&amp;quot;] = &amp;quot;tw&amp;quot;,&lt;br /&gt;
	[&amp;quot;uig&amp;quot;] = &amp;quot;ug&amp;quot;,&lt;br /&gt;
	[&amp;quot;ukr&amp;quot;] = &amp;quot;uk&amp;quot;,&lt;br /&gt;
	[&amp;quot;urd&amp;quot;] = &amp;quot;ur&amp;quot;,&lt;br /&gt;
	[&amp;quot;uzb&amp;quot;] = &amp;quot;uz&amp;quot;,&lt;br /&gt;
	[&amp;quot;ven&amp;quot;] = &amp;quot;ve&amp;quot;,&lt;br /&gt;
	[&amp;quot;vie&amp;quot;] = &amp;quot;vi&amp;quot;,&lt;br /&gt;
	[&amp;quot;vol&amp;quot;] = &amp;quot;vo&amp;quot;,&lt;br /&gt;
	[&amp;quot;wln&amp;quot;] = &amp;quot;wa&amp;quot;,&lt;br /&gt;
	[&amp;quot;wol&amp;quot;] = &amp;quot;wo&amp;quot;,&lt;br /&gt;
	[&amp;quot;xho&amp;quot;] = &amp;quot;xh&amp;quot;,&lt;br /&gt;
	[&amp;quot;yid&amp;quot;] = &amp;quot;yi&amp;quot;,&lt;br /&gt;
	[&amp;quot;yor&amp;quot;] = &amp;quot;yo&amp;quot;,&lt;br /&gt;
	[&amp;quot;zha&amp;quot;] = &amp;quot;za&amp;quot;,&lt;br /&gt;
	[&amp;quot;zho&amp;quot;] = &amp;quot;zh&amp;quot;,&lt;br /&gt;
	[&amp;quot;zul&amp;quot;] = &amp;quot;zu&amp;quot;&lt;br /&gt;
	}&lt;/div&gt;</summary>
		<author><name>DoubleCircle</name></author>
	</entry>
	<entry>
		<id>https://9on0wiki.gunmu.dns.navy/index.php?title=Module:Lang/data&amp;diff=714</id>
		<title>Module:Lang/data</title>
		<link rel="alternate" type="text/html" href="https://9on0wiki.gunmu.dns.navy/index.php?title=Module:Lang/data&amp;diff=714"/>
		<updated>2026-08-26T10:58:54Z</updated>

		<summary type="html">&lt;p&gt;DoubleCircle：​导入1个版本&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;local lang_obj = mw.language.getContentLanguage();&lt;br /&gt;
local this_wiki_lang_tag = lang_obj.code;										-- get this wiki&#039;s language tag&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
--[[--------------------------&amp;lt; L A N G _ N A M E _ T A B L E &amp;gt;------------------------------------------------&lt;br /&gt;
&lt;br /&gt;
primary table of tables that decode:&lt;br /&gt;
	lang -&amp;gt; language tags and names&lt;br /&gt;
	script -&amp;gt; ISO 15924 script tags&lt;br /&gt;
	region -&amp;gt; ISO 3166 region tags&lt;br /&gt;
	variant -&amp;gt; iana registered variant tags&lt;br /&gt;
	suppressed -&amp;gt; map of scripts tags and their associated language tags&lt;br /&gt;
	&lt;br /&gt;
all of these data come from separate modules that are derived from the IANA language-subtag-registry file&lt;br /&gt;
&lt;br /&gt;
key_to_lower() avoids the metatable trap and sets all keys in the subtables to lowercase. Many language codes&lt;br /&gt;
have multiple associated names; Module:lang is only concerned with the first name so key_to_lower() only fetches&lt;br /&gt;
the first name.&lt;br /&gt;
&lt;br /&gt;
]]&lt;br /&gt;
&lt;br /&gt;
local function key_to_lower (module, src_type)&lt;br /&gt;
	local out = {};&lt;br /&gt;
	local source_t = ((&#039;var_sup&#039; == src_type) and require (module)) or mw.loadData (module);		-- fetch data from this module; require() avoids metatable trap for variant data&lt;br /&gt;
&lt;br /&gt;
	if &#039;var_sup&#039; == src_type then&lt;br /&gt;
		for k, v in pairs (source_t) do&lt;br /&gt;
			out[k:lower()] = v;													-- for variant and suppressed everything is needed&lt;br /&gt;
		end&lt;br /&gt;
&lt;br /&gt;
	elseif &#039;lang&#039; == src_type and source_t.active then							-- for ~/iana_languages (active)&lt;br /&gt;
		for k, v in pairs (source_t.active) do&lt;br /&gt;
			out[k:lower()] = v[1];												-- ignore multiple names; take first name only&lt;br /&gt;
		end&lt;br /&gt;
&lt;br /&gt;
	elseif &#039;lang_dep&#039; == src_type and source_t.deprecated then					-- for ~/iana_languages (deprecated)&lt;br /&gt;
		for k, v in pairs (source_t.deprecated) do&lt;br /&gt;
			out[k:lower()] = v[1];												-- ignore multiple names; take first name only&lt;br /&gt;
		end&lt;br /&gt;
&lt;br /&gt;
	else																		-- here for all other sources&lt;br /&gt;
		for k, v in pairs (source_t) do&lt;br /&gt;
			out[k:lower()] = v[1];												-- ignore multiple names; take first name only&lt;br /&gt;
		end&lt;br /&gt;
	end&lt;br /&gt;
	return out;&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
local lang_name_table_t = {&lt;br /&gt;
	lang = key_to_lower (&#039;Module:Lang/data/iana languages&#039;, &#039;lang&#039;),&lt;br /&gt;
	lang_dep = key_to_lower (&#039;Module:Lang/data/iana languages&#039;, &#039;lang_dep&#039;),&lt;br /&gt;
	script = key_to_lower (&#039;Module:Lang/data/iana scripts&#039;),					-- script keys are capitalized; set to lower&lt;br /&gt;
	region = key_to_lower (&#039;Module:Lang/data/iana regions&#039;),					-- region keys are uppercase; set to lower&lt;br /&gt;
	variant = key_to_lower (&#039;Module:Lang/data/iana variants&#039;, &#039;var_sup&#039;),&lt;br /&gt;
	suppressed = key_to_lower (&#039;Module:Lang/data/iana suppressed scripts&#039;, &#039;var_sup&#039;),	-- script keys are capitalized; set to lower&lt;br /&gt;
	}&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
--[[--------------------------&amp;lt; I 1 8 N   M E D I A W I K I   O V E R R I D E &amp;gt;--------------------------------&lt;br /&gt;
&lt;br /&gt;
For internationalization; not used at en.wiki&lt;br /&gt;
&lt;br /&gt;
The language names taken from the IANA language-subtag-registry file are given in English. That may not be ideal.&lt;br /&gt;
Translating ~8,000 language names is also not ideal.  MediaWiki maintains (much) shorter lists of language names&lt;br /&gt;
in most languages for which there is a Wikipedia edition.  When desired, Module:Lang can use the MediaWiki &lt;br /&gt;
language list for the local language.&lt;br /&gt;
&lt;br /&gt;
Caveat lector: the list of MediaWiki language names for your language may not be complete or may not exist at all.&lt;br /&gt;
When incomplete, MediaWiki&#039;s list will &#039;fall back&#039; to another language (typically English).  When that happens&lt;br /&gt;
add an appropriate entry to the override table below.&lt;br /&gt;
&lt;br /&gt;
Caveat lector: the list of MediaWiki language names for your language may not be correct.  At en.wiki, the&lt;br /&gt;
MediaWiki language names do not agree with the IANA language names for these ISO 639-1 tags.  Often it is simply&lt;br /&gt;
spelling differences:&lt;br /&gt;
	bh: IANA: Bihari languages MW: Bhojpuri – the ISO 639-3 tag for Bhojpuri is bho&lt;br /&gt;
	bn: IANA: Bengali MW: Bangla – Bengali is the exonym, Bangla is the endonym&lt;br /&gt;
	dv: IANA: Dhivehi MW: Divehi&lt;br /&gt;
	el: IANA: Modern Greek MW: Greek&lt;br /&gt;
	ht: IANA: Haitian MW: Haitian Creole&lt;br /&gt;
	ky: IANA: Kirghiz MW: Kyrgyz&lt;br /&gt;
	li: IANA: Limburgan MW: Limburgish&lt;br /&gt;
	or: IANA: Oriya MW: Odia&lt;br /&gt;
	os: IANA: Ossetian MW: Ossetic&lt;br /&gt;
	&amp;quot;pa: IANA: Panjabi MW: Punjabi&lt;br /&gt;
	&amp;quot;ps: IANA: Pushto MW: Pashto&lt;br /&gt;
	&amp;quot;to: IANA: Tonga MW: Tongan&lt;br /&gt;
	&amp;quot;ug: IANA: Uighur MW: Uyghur&lt;br /&gt;
use the override table to override language names that are incorrect for your project&lt;br /&gt;
&lt;br /&gt;
To see the list of names that MediaWiki has for your language, enter this in the Debug colsole:&lt;br /&gt;
	=mw.dumpObject (mw.language.fetchLanguageNames (&#039;&amp;lt;tag&amp;gt;&#039;, &#039;all&#039;))&lt;br /&gt;
(replacing &amp;lt;tag&amp;gt; with the language tag for your language)&lt;br /&gt;
&lt;br /&gt;
Use of the MediaWiki language names lists is enabled when media_wiki_override_enable is set to boolean true.&lt;br /&gt;
	&lt;br /&gt;
]]&lt;br /&gt;
&lt;br /&gt;
local media_wiki_override_enable = false;										-- set to true to override IANA names with MediaWiki names; always false at en.wiki&lt;br /&gt;
																				-- caveat lector: the list of MediaWiki language names for your language may not be complete or may not exist at all&lt;br /&gt;
	if true == media_wiki_override_enable then&lt;br /&gt;
		local mw_languages_by_tag_t = mw.language.fetchLanguageNames (this_wiki_lang_tag, &#039;all&#039;);	-- get a table of language tag/name pairs known to MediaWiki&lt;br /&gt;
		for tag, name in pairs (mw_languages_by_tag_t) do						-- loop through each tag/name pair in the MediaWiki list&lt;br /&gt;
			if lang_name_table_t.lang[tag] then									-- if the tag is in the main list&lt;br /&gt;
				lang_name_table_t.lang[tag] = name;								-- overwrite exisiting name with the name from MediaWiki&lt;br /&gt;
			end&lt;br /&gt;
		end&lt;br /&gt;
	end&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
--[[--------------------------&amp;lt; O V E R R I D E &amp;gt;--------------------------------------------------------------&lt;br /&gt;
&lt;br /&gt;
Language codes and names in this table override the BCP47 names in lang_name_table.&lt;br /&gt;
&lt;br /&gt;
indexes in this table shall always be lower case&lt;br /&gt;
&lt;br /&gt;
]]&lt;br /&gt;
&lt;br /&gt;
local override = {&lt;br /&gt;
------------------------------&amp;lt; I S O _ 6 3 9 - 1 &amp;gt;------------------------------------------------------------&lt;br /&gt;
	--显示中文及查找目录所用，必须使用繁体中文，代码必须使用小写&lt;br /&gt;
	[&amp;quot;aa&amp;quot;] = &amp;quot;阿法爾語&amp;quot;,															-- Afar&lt;br /&gt;
	[&amp;quot;ab&amp;quot;] = &amp;quot;阿布哈茲語&amp;quot;,														-- Abkhazian&lt;br /&gt;
	[&amp;quot;ae&amp;quot;] = &amp;quot;阿維斯陀語&amp;quot;,														-- Avestan&lt;br /&gt;
	[&amp;quot;af&amp;quot;] = &amp;quot;阿非利卡語&amp;quot;,														-- Afrikaans&lt;br /&gt;
	[&amp;quot;ak&amp;quot;] = &amp;quot;阿坎語&amp;quot;,															-- Akan&lt;br /&gt;
	[&amp;quot;am&amp;quot;] = &amp;quot;阿姆哈拉語&amp;quot;,														-- Amharic&lt;br /&gt;
	[&amp;quot;an&amp;quot;] = &amp;quot;亞拉岡語&amp;quot;,															-- Aragonese&lt;br /&gt;
	[&amp;quot;ar&amp;quot;] = &amp;quot;阿拉伯語&amp;quot;,&lt;br /&gt;
	[&amp;quot;as&amp;quot;] = &amp;quot;阿薩姆語&amp;quot;,&lt;br /&gt;
	[&amp;quot;av&amp;quot;] = &amp;quot;阿瓦爾語&amp;quot;,															-- Avaric&lt;br /&gt;
	[&amp;quot;ay&amp;quot;] = &amp;quot;艾馬拉語&amp;quot;,															-- Aymara&lt;br /&gt;
	[&amp;quot;az&amp;quot;] = &amp;quot;阿塞拜疆語&amp;quot;,														-- Azerbaijani&lt;br /&gt;
	[&amp;quot;ba&amp;quot;] = &amp;quot;巴什基爾語&amp;quot;,														-- Bashkir&lt;br /&gt;
	[&amp;quot;be&amp;quot;] = &amp;quot;白俄羅斯語&amp;quot;,													&lt;br /&gt;
	[&amp;quot;bg&amp;quot;] = &amp;quot;保加利亞語&amp;quot;,													&lt;br /&gt;
	[&amp;quot;bh&amp;quot;] = &amp;quot;比哈爾語&amp;quot;,															-- Bihari languages; collective&lt;br /&gt;
	[&amp;quot;bi&amp;quot;] = &amp;quot;比斯拉馬語&amp;quot;,&lt;br /&gt;
	[&amp;quot;bm&amp;quot;] = &amp;quot;班巴拉語&amp;quot;,															-- Bambara, Bamanankan&lt;br /&gt;
	[&amp;quot;bn&amp;quot;] = &amp;quot;孟加拉語&amp;quot;,&lt;br /&gt;
	[&amp;quot;bo&amp;quot;] = &amp;quot;標準藏語&amp;quot;,															-- Tibetan&lt;br /&gt;
	[&amp;quot;br&amp;quot;] = &amp;quot;布列塔尼語&amp;quot;,														-- Brezhoneg&lt;br /&gt;
	[&amp;quot;bs&amp;quot;] = &amp;quot;波斯尼亞語&amp;quot;,&lt;br /&gt;
	[&amp;quot;bua&amp;quot;] = &amp;quot;布里亞特語&amp;quot;,														-- Syriac&lt;br /&gt;
	[&amp;quot;ca&amp;quot;] = &amp;quot;加泰隆尼亞語&amp;quot;,&lt;br /&gt;
	[&amp;quot;ce&amp;quot;] = &amp;quot;車臣語&amp;quot;,&lt;br /&gt;
	[&amp;quot;ceb&amp;quot;] = &amp;quot;宿霧語&amp;quot;,&lt;br /&gt;
	[&amp;quot;ch&amp;quot;] = &amp;quot;查莫羅語&amp;quot;,&lt;br /&gt;
	[&amp;quot;cim&amp;quot;] = &amp;quot;辛布里語&amp;quot;,														-- Cimbrian&lt;br /&gt;
	[&amp;quot;co&amp;quot;] = &amp;quot;科西嘉語&amp;quot;,&lt;br /&gt;
	[&amp;quot;cr&amp;quot;] = &amp;quot;克里語&amp;quot;,&lt;br /&gt;
	[&amp;quot;cs&amp;quot;] = &amp;quot;捷克語&amp;quot;,&lt;br /&gt;
	[&amp;quot;cu&amp;quot;] = &amp;quot;教會斯拉夫語&amp;quot;,														-- Church Slavic, Church Slavonic, Old Bulgarian, Old Church Slavonic, Old Slavonic&#039;&lt;br /&gt;
	[&amp;quot;cv&amp;quot;] = &amp;quot;楚瓦什語&amp;quot;,&lt;br /&gt;
	[&amp;quot;cy&amp;quot;] = &amp;quot;威爾斯語&amp;quot;,&lt;br /&gt;
	[&amp;quot;da&amp;quot;] = &amp;quot;丹麥語&amp;quot;,&lt;br /&gt;
	[&amp;quot;de&amp;quot;] = &amp;quot;德語&amp;quot;,&lt;br /&gt;
	[&amp;quot;dv&amp;quot;] = &amp;quot;迪維希語&amp;quot;,&lt;br /&gt;
	[&amp;quot;dz&amp;quot;] = &amp;quot;不丹語&amp;quot;,&lt;br /&gt;
	[&amp;quot;ee&amp;quot;] = &amp;quot;埃維語&amp;quot;,&lt;br /&gt;
	[&amp;quot;el&amp;quot;] = &amp;quot;希臘語&amp;quot;,															-- Modern Greek (1453-)&lt;br /&gt;
	[&amp;quot;elx&amp;quot;] = &amp;quot;埃蘭語&amp;quot;,															-- Elamite&lt;br /&gt;
	[&amp;quot;en&amp;quot;] = &amp;quot;英語&amp;quot;,&lt;br /&gt;
	[&amp;quot;en-au&amp;quot;] = &amp;quot;澳洲英語&amp;quot;,&lt;br /&gt;
	[&amp;quot;en-ca&amp;quot;] = &amp;quot;加拿大英語&amp;quot;,&lt;br /&gt;
	[&amp;quot;en-gb&amp;quot;] = &amp;quot;英國英語&amp;quot;,&lt;br /&gt;
	[&amp;quot;en-ie&amp;quot;] = &amp;quot;愛爾蘭英語&amp;quot;,&lt;br /&gt;
	[&amp;quot;en-nz&amp;quot;] = &amp;quot;紐西蘭英語&amp;quot;,&lt;br /&gt;
	[&amp;quot;en-sa&amp;quot;] = &amp;quot;南非英語&amp;quot;,&lt;br /&gt;
	[&amp;quot;en-us&amp;quot;] = &amp;quot;美國英語&amp;quot;,&lt;br /&gt;
	[&amp;quot;eo&amp;quot;] = &amp;quot;世界語&amp;quot;,&lt;br /&gt;
	[&amp;quot;es&amp;quot;] = &amp;quot;西班牙語&amp;quot;,&lt;br /&gt;
	[&amp;quot;et&amp;quot;] = &amp;quot;愛沙尼亞語&amp;quot;,&lt;br /&gt;
	[&amp;quot;eu&amp;quot;] = &amp;quot;巴斯克語&amp;quot;,&lt;br /&gt;
	[&amp;quot;fa&amp;quot;] = &amp;quot;波斯語&amp;quot;,&lt;br /&gt;
	[&amp;quot;ff&amp;quot;] = &amp;quot;富拉語&amp;quot;,															-- Fulah&lt;br /&gt;
	[&amp;quot;fi&amp;quot;] = &amp;quot;芬蘭語&amp;quot;,&lt;br /&gt;
	[&amp;quot;fj&amp;quot;] = &amp;quot;斐濟語&amp;quot;,&lt;br /&gt;
	[&amp;quot;fo&amp;quot;] = &amp;quot;法羅語&amp;quot;,&lt;br /&gt;
	[&amp;quot;fr&amp;quot;] = &amp;quot;法語&amp;quot;,&lt;br /&gt;
	[&amp;quot;fy&amp;quot;] = &amp;quot;菲士蘭語&amp;quot;,															-- Western Frisian&lt;br /&gt;
	[&amp;quot;ga&amp;quot;] = &amp;quot;愛爾蘭語&amp;quot;,&lt;br /&gt;
	[&amp;quot;gd&amp;quot;] = &amp;quot;蘇格蘭蓋爾語&amp;quot;,&lt;br /&gt;
	[&amp;quot;gl&amp;quot;] = &amp;quot;加利西亞語&amp;quot;,&lt;br /&gt;
	[&amp;quot;gn&amp;quot;] = &amp;quot;瓜拉尼語&amp;quot;,&lt;br /&gt;
	[&amp;quot;gu&amp;quot;] = &amp;quot;古吉拉特語&amp;quot;,&lt;br /&gt;
	[&amp;quot;gv&amp;quot;] = &amp;quot;曼島語&amp;quot;,&lt;br /&gt;
	[&amp;quot;ha&amp;quot;] = &amp;quot;豪薩語&amp;quot;,&lt;br /&gt;
	[&amp;quot;he&amp;quot;] = &amp;quot;希伯來語&amp;quot;,&lt;br /&gt;
	[&amp;quot;hi&amp;quot;] = &amp;quot;印地語&amp;quot;,	&lt;br /&gt;
	[&amp;quot;ho&amp;quot;] = &amp;quot;希里木托語&amp;quot;,&lt;br /&gt;
	[&amp;quot;hr&amp;quot;] = &amp;quot;克羅埃西亞語&amp;quot;,&lt;br /&gt;
	[&amp;quot;ht&amp;quot;] = &amp;quot;海地克里奧爾語&amp;quot;,													-- Haitian, Haitian Creole&lt;br /&gt;
	[&amp;quot;hu&amp;quot;] = &amp;quot;匈牙利語&amp;quot;,	&lt;br /&gt;
	[&amp;quot;hy&amp;quot;] = &amp;quot;亞美尼亞語&amp;quot;,	&lt;br /&gt;
	[&amp;quot;hz&amp;quot;] = &amp;quot;赫雷羅語&amp;quot;,															-- Herero&lt;br /&gt;
	[&amp;quot;ia&amp;quot;] = &amp;quot;因特語&amp;quot;,												    		-- Interlingua (International Auxiliary Language Association)&lt;br /&gt;
	[&amp;quot;id&amp;quot;] = &amp;quot;印尼語&amp;quot;,&lt;br /&gt;
	[&amp;quot;ie&amp;quot;] = &amp;quot;西方國際語&amp;quot;,&lt;br /&gt;
	[&amp;quot;ig&amp;quot;] = &amp;quot;伊博語&amp;quot;,															-- Igbo&lt;br /&gt;
	[&amp;quot;ii&amp;quot;] = &amp;quot;彝語北部方言&amp;quot;,														-- Sichuan Yi, Nuosu&lt;br /&gt;
	[&amp;quot;ik&amp;quot;] = &amp;quot;依努庇亞克語&amp;quot;,	&lt;br /&gt;
	[&amp;quot;io&amp;quot;] = &amp;quot;伊多語&amp;quot;,	&lt;br /&gt;
	[&amp;quot;is&amp;quot;] = &amp;quot;冰島語&amp;quot;,	&lt;br /&gt;
	[&amp;quot;it&amp;quot;] = &amp;quot;義大利語&amp;quot;,	&lt;br /&gt;
	[&amp;quot;iu&amp;quot;] = &amp;quot;伊努克提圖特語&amp;quot;,&lt;br /&gt;
	[&amp;quot;ja&amp;quot;] = &amp;quot;日語&amp;quot;,&lt;br /&gt;
	[&amp;quot;jv&amp;quot;] = &amp;quot;爪哇語&amp;quot;,&lt;br /&gt;
	[&amp;quot;ka&amp;quot;] = &amp;quot;喬治亞語&amp;quot;,&lt;br /&gt;
	[&amp;quot;kg&amp;quot;] = &amp;quot;剛果語&amp;quot;,&lt;br /&gt;
	[&amp;quot;ki&amp;quot;] = &amp;quot;基庫尤語&amp;quot;,															-- Kikuyu, Gikuyu&lt;br /&gt;
	[&amp;quot;kj&amp;quot;] = &amp;quot;寬亞瑪語&amp;quot;,															-- Kwanyama, Oshikwanyama&lt;br /&gt;
	[&amp;quot;kk&amp;quot;] = &amp;quot;哈薩克語&amp;quot;,															-- Kazakh; same, delete?&lt;br /&gt;
	[&amp;quot;kl&amp;quot;] = &amp;quot;格陵蘭語&amp;quot;,															-- Kalaallisut, Greenlandic&lt;br /&gt;
	[&amp;quot;km&amp;quot;] = &amp;quot;高棉語&amp;quot;,															-- Central Khmer&lt;br /&gt;
	[&amp;quot;kn&amp;quot;] = &amp;quot;卡納達語&amp;quot;,															-- Kannaḍa&lt;br /&gt;
	[&amp;quot;ko&amp;quot;] = &amp;quot;韓語&amp;quot;,																-- Korean&lt;br /&gt;
	[&amp;quot;ks&amp;quot;] = &amp;quot;喀什米爾語&amp;quot;,														-- Kashmiri&lt;br /&gt;
	[&amp;quot;ku&amp;quot;] = &amp;quot;庫德語&amp;quot;,															-- Kurdish&lt;br /&gt;
	[&amp;quot;kv&amp;quot;] = &amp;quot;科米語&amp;quot;,															-- Komi&lt;br /&gt;
	[&amp;quot;kw&amp;quot;] = &amp;quot;康瓦爾語&amp;quot;,															-- Cornish, Kernowek&lt;br /&gt;
	[&amp;quot;ky&amp;quot;] = &amp;quot;吉爾吉斯語&amp;quot;,														-- Kirghiz, Kyrgyz&lt;br /&gt;
	[&amp;quot;la&amp;quot;] = &amp;quot;拉丁語&amp;quot;,&lt;br /&gt;
	[&amp;quot;lb&amp;quot;] = &amp;quot;盧森堡語&amp;quot;,&lt;br /&gt;
	[&amp;quot;lg&amp;quot;] = &amp;quot;盧干達語&amp;quot;,															-- Ganda&lt;br /&gt;
	[&amp;quot;li&amp;quot;] = &amp;quot;林堡語&amp;quot;,															-- Limburgan, Limburger, Limburgish&lt;br /&gt;
	[&amp;quot;lmo&amp;quot;] = &amp;quot;倫巴第語&amp;quot;,														-- Lombard&lt;br /&gt;
	[&amp;quot;ln&amp;quot;] = &amp;quot;林格拉語&amp;quot;,		&lt;br /&gt;
	[&amp;quot;lo&amp;quot;] = &amp;quot;寮語&amp;quot;,&lt;br /&gt;
	[&amp;quot;lt&amp;quot;] = &amp;quot;立陶宛語&amp;quot;,&lt;br /&gt;
	[&amp;quot;lu&amp;quot;] = &amp;quot;盧巴-加丹加語&amp;quot;,&lt;br /&gt;
	[&amp;quot;lv&amp;quot;] = &amp;quot;拉脫維亞語&amp;quot;,&lt;br /&gt;
	[&amp;quot;mg&amp;quot;] = &amp;quot;馬達加斯加語&amp;quot;,&lt;br /&gt;
	[&amp;quot;mh&amp;quot;] = &amp;quot;馬紹爾語&amp;quot;,&lt;br /&gt;
	[&amp;quot;mi&amp;quot;] = &amp;quot;毛利語&amp;quot;,															-- Maori&lt;br /&gt;
	[&amp;quot;mk&amp;quot;] = &amp;quot;馬其頓語&amp;quot;,&lt;br /&gt;
	[&amp;quot;ml&amp;quot;] = &amp;quot;馬拉雅拉姆語&amp;quot;,&lt;br /&gt;
	[&amp;quot;mn&amp;quot;] = &amp;quot;蒙古語&amp;quot;,&lt;br /&gt;
	[&amp;quot;mo&amp;quot;] = &amp;quot;摩爾多瓦語&amp;quot;,&lt;br /&gt;
	[&amp;quot;mr&amp;quot;] = &amp;quot;馬拉提語&amp;quot;,															-- Marathi&lt;br /&gt;
	[&amp;quot;ms&amp;quot;] = &amp;quot;馬來語&amp;quot;,															-- Malay (macrolanguage)&lt;br /&gt;
	[&amp;quot;mt&amp;quot;] = &amp;quot;馬爾他語&amp;quot;,&lt;br /&gt;
	[&amp;quot;my&amp;quot;] = &amp;quot;緬甸語&amp;quot;,&lt;br /&gt;
	[&amp;quot;na&amp;quot;] = &amp;quot;諾魯語&amp;quot;,															-- Nauru&lt;br /&gt;
	[&amp;quot;nap&amp;quot;] = &amp;quot;那不勒斯語&amp;quot;,														-- Neapolitan&lt;br /&gt;
	[&amp;quot;nb&amp;quot;] = &amp;quot;書面挪威語&amp;quot;,														-- Norwegian Bokmål&lt;br /&gt;
	[&amp;quot;nd&amp;quot;] = &amp;quot;北恩德貝萊語&amp;quot;,														-- North Ndebele&lt;br /&gt;
	[&amp;quot;ne&amp;quot;] = &amp;quot;尼泊爾語&amp;quot;,															-- Nepali (macrolanguage)&lt;br /&gt;
	[&amp;quot;ng&amp;quot;] = &amp;quot;恩敦加語&amp;quot;,&lt;br /&gt;
	[&amp;quot;nl&amp;quot;] = &amp;quot;荷蘭語&amp;quot;,&lt;br /&gt;
	[&amp;quot;nn&amp;quot;] = &amp;quot;新挪威語&amp;quot;,															-- Norwegian Nynorsk&lt;br /&gt;
	[&amp;quot;no&amp;quot;] = &amp;quot;挪威語&amp;quot;,	&lt;br /&gt;
	[&amp;quot;nr&amp;quot;] = &amp;quot;南恩德貝萊語&amp;quot;,														-- South Ndebele &amp;lt;not found in Chinese Wikipedia&amp;gt;&lt;br /&gt;
	[&amp;quot;nv&amp;quot;] = &amp;quot;納瓦荷語&amp;quot;,	&lt;br /&gt;
	[&amp;quot;ny&amp;quot;] = &amp;quot;齊切瓦語&amp;quot;,															-- Nyanja, Chewa, Chichewa&lt;br /&gt;
	[&amp;quot;oc&amp;quot;] = &amp;quot;奧克語&amp;quot;,															-- Occitan (post 1500)&lt;br /&gt;
	[&amp;quot;oj&amp;quot;] = &amp;quot;奧吉布瓦語&amp;quot;,														-- Ojibwa&lt;br /&gt;
	[&amp;quot;om&amp;quot;] = &amp;quot;奧羅莫語&amp;quot;,&lt;br /&gt;
	[&amp;quot;or&amp;quot;] = &amp;quot;奧里亞語&amp;quot;,															-- Oriya (macrolanguage), Odia (macrolanguage)&lt;br /&gt;
	[&amp;quot;os&amp;quot;] = &amp;quot;奧塞梯語&amp;quot;,&lt;br /&gt;
	[&amp;quot;pa&amp;quot;] = &amp;quot;旁遮普語&amp;quot;,															-- Panjabi, Punjabi&lt;br /&gt;
	[&amp;quot;pag&amp;quot;] = &amp;quot;邦阿西楠語&amp;quot;,														-- Pangasinan&lt;br /&gt;
	[&amp;quot;pi&amp;quot;] = &amp;quot;巴利語&amp;quot;,															-- Pali; same, delete?&lt;br /&gt;
	[&amp;quot;pl&amp;quot;] = &amp;quot;波蘭語&amp;quot;,&lt;br /&gt;
	[&amp;quot;ps&amp;quot;] = &amp;quot;普什圖語&amp;quot;,&lt;br /&gt;
	[&amp;quot;pt&amp;quot;] = &amp;quot;葡萄牙語&amp;quot;,&lt;br /&gt;
	[&amp;quot;pt-br&amp;quot;] = &amp;quot;巴西葡萄牙語&amp;quot;,&lt;br /&gt;
	[&amp;quot;qu&amp;quot;] = &amp;quot;奇楚瓦語&amp;quot;,&lt;br /&gt;
	[&amp;quot;rm&amp;quot;] = &amp;quot;羅曼什語&amp;quot;,															-- Romansh&lt;br /&gt;
	[&amp;quot;rn&amp;quot;] = &amp;quot;基隆迪語&amp;quot;,															-- Rundi&lt;br /&gt;
	[&amp;quot;ro&amp;quot;] = &amp;quot;羅馬尼亞語&amp;quot;,														-- Romanian, Moldavian, Moldovan; same as first in IANA list, delete?&lt;br /&gt;
	[&amp;quot;ru&amp;quot;] = &amp;quot;俄語&amp;quot;,		&lt;br /&gt;
	[&amp;quot;rw&amp;quot;] = &amp;quot;盧安達語&amp;quot;,															-- Kinyarwanda; same, delete?&lt;br /&gt;
	[&amp;quot;sa&amp;quot;] = &amp;quot;梵語&amp;quot;,&lt;br /&gt;
	[&amp;quot;sc&amp;quot;] = &amp;quot;薩丁尼亞語&amp;quot;,&lt;br /&gt;
	[&amp;quot;sd&amp;quot;] = &amp;quot;信德語&amp;quot;,&lt;br /&gt;
	[&amp;quot;se&amp;quot;] = &amp;quot;北薩米語&amp;quot;,&lt;br /&gt;
	[&amp;quot;sg&amp;quot;] = &amp;quot;桑戈語&amp;quot;,&lt;br /&gt;
	[&amp;quot;sh&amp;quot;] = &amp;quot;塞爾維亞-克羅埃西亞語&amp;quot;,&lt;br /&gt;
	[&amp;quot;si&amp;quot;] = &amp;quot;僧伽羅語&amp;quot;,															-- Sinhala, Sinhalese&lt;br /&gt;
	[&amp;quot;sk&amp;quot;] = &amp;quot;斯洛伐克語&amp;quot;,&lt;br /&gt;
	[&amp;quot;sl&amp;quot;] = &amp;quot;斯洛維尼亞語&amp;quot;,														-- Slovenian&lt;br /&gt;
	[&amp;quot;sm&amp;quot;] = &amp;quot;薩摩亞語&amp;quot;,&lt;br /&gt;
	[&amp;quot;sn&amp;quot;] = &amp;quot;紹納語&amp;quot;,&lt;br /&gt;
	[&amp;quot;so&amp;quot;] = &amp;quot;索馬里語&amp;quot;,&lt;br /&gt;
	[&amp;quot;sq&amp;quot;] = &amp;quot;阿爾巴尼亞語&amp;quot;,&lt;br /&gt;
	[&amp;quot;sr&amp;quot;] = &amp;quot;塞爾維亞語&amp;quot;,&lt;br /&gt;
	[&amp;quot;ss&amp;quot;] = &amp;quot;史瓦帝語&amp;quot;,															-- Swati&lt;br /&gt;
	[&amp;quot;st&amp;quot;] = &amp;quot;索托語&amp;quot;,															-- Southern Sotho&lt;br /&gt;
	[&amp;quot;su&amp;quot;] = &amp;quot;巽他語&amp;quot;,&lt;br /&gt;
	[&amp;quot;sv&amp;quot;] = &amp;quot;瑞典語&amp;quot;,	&lt;br /&gt;
	[&amp;quot;sw&amp;quot;] = &amp;quot;斯瓦希里語&amp;quot;,														-- Swahili (macrolanguage)&lt;br /&gt;
	[&amp;quot;ta&amp;quot;] = &amp;quot;坦米爾語&amp;quot;,&lt;br /&gt;
	[&amp;quot;te&amp;quot;] = &amp;quot;泰盧固語&amp;quot;,&lt;br /&gt;
	[&amp;quot;tg&amp;quot;] = &amp;quot;塔吉克語&amp;quot;,&lt;br /&gt;
	[&amp;quot;th&amp;quot;] = &amp;quot;泰語&amp;quot;,&lt;br /&gt;
	[&amp;quot;ti&amp;quot;] = &amp;quot;提格雷尼亞語&amp;quot;,&lt;br /&gt;
	[&amp;quot;tk&amp;quot;] = &amp;quot;土庫曼語&amp;quot;,&lt;br /&gt;
	[&amp;quot;tl&amp;quot;] = &amp;quot;他加祿語&amp;quot;,&lt;br /&gt;
	[&amp;quot;tn&amp;quot;] = &amp;quot;茨瓦納語&amp;quot;,&lt;br /&gt;
	[&amp;quot;tr&amp;quot;] = &amp;quot;土耳其語&amp;quot;,&lt;br /&gt;
	[&amp;quot;to&amp;quot;] = &amp;quot;東加語&amp;quot;,															-- Tonga (Tonga Islands)&lt;br /&gt;
	[&amp;quot;ts&amp;quot;] = &amp;quot;聰加語&amp;quot;,															-- Tsonga, Xitsonga&lt;br /&gt;
	[&amp;quot;tt&amp;quot;] = &amp;quot;韃靼語&amp;quot;,															-- Tatar	&lt;br /&gt;
	[&amp;quot;tw&amp;quot;] = &amp;quot;契維語&amp;quot;,	&lt;br /&gt;
	[&amp;quot;ty&amp;quot;] = &amp;quot;大溪地語&amp;quot;,&lt;br /&gt;
	[&amp;quot;ug&amp;quot;] = &amp;quot;維吾爾語&amp;quot;,&lt;br /&gt;
	[&amp;quot;uk&amp;quot;] = &amp;quot;烏克蘭語&amp;quot;,&lt;br /&gt;
	[&amp;quot;ur&amp;quot;] = &amp;quot;烏爾都語&amp;quot;,&lt;br /&gt;
	[&amp;quot;uz&amp;quot;] = &amp;quot;烏茲別克語&amp;quot;,&lt;br /&gt;
	[&amp;quot;ve&amp;quot;] = &amp;quot;文達語&amp;quot;,&lt;br /&gt;
	[&amp;quot;vi&amp;quot;] = &amp;quot;越南語&amp;quot;,&lt;br /&gt;
	[&amp;quot;vo&amp;quot;] = &amp;quot;沃拉普克語&amp;quot;,&lt;br /&gt;
	[&amp;quot;wa&amp;quot;] = &amp;quot;瓦隆語&amp;quot;,	&lt;br /&gt;
	[&amp;quot;wo&amp;quot;] = &amp;quot;沃洛夫語&amp;quot;,                                                	   		-- Wolof&lt;br /&gt;
	[&amp;quot;xh&amp;quot;] = &amp;quot;科薩語&amp;quot;,	&lt;br /&gt;
	[&amp;quot;yi&amp;quot;] = &amp;quot;意第緒語&amp;quot;,	&lt;br /&gt;
	[&amp;quot;yo&amp;quot;] = &amp;quot;約魯巴語&amp;quot;,	&lt;br /&gt;
	[&amp;quot;za&amp;quot;] = &amp;quot;壯語&amp;quot;,																-- Zhuang, Chuang; ; same as first in IANA list, delete?&lt;br /&gt;
	[&amp;quot;zh&amp;quot;] = &amp;quot;中文&amp;quot;,	&lt;br /&gt;
	[&amp;quot;zh-bopo&amp;quot;] = &amp;quot;注音符號&amp;quot;,													-- 注音符號&lt;br /&gt;
	[&amp;quot;zh-latn-pinyin&amp;quot;] = &amp;quot;漢語拼音&amp;quot;,												-- 漢語拼音&lt;br /&gt;
	[&amp;quot;zu&amp;quot;] = &amp;quot;祖魯語&amp;quot;,	&lt;br /&gt;
	&lt;br /&gt;
-- ISO 639-2 codes&lt;br /&gt;
  	[&amp;quot;ale&amp;quot;] = &amp;quot;阿留申語&amp;quot;,&lt;br /&gt;
  	[&amp;quot;ang&amp;quot;] = &amp;quot;古英語&amp;quot;,															-- Old English (ca. 450-1100)&lt;br /&gt;
	[&amp;quot;ban&amp;quot;] = &amp;quot;峇里語&amp;quot;,															-- Balinese language&lt;br /&gt;
	[&amp;quot;ber&amp;quot;] = &amp;quot;柏柏爾語&amp;quot;,														-- Berber languages&lt;br /&gt;
	[&amp;quot;bug&amp;quot;] = &amp;quot;布吉語&amp;quot;,															-- Buginese language&lt;br /&gt;
	[&amp;quot;cel&amp;quot;] = &amp;quot;原始凱爾特語&amp;quot;,														-- Celtic languages&lt;br /&gt;
	[&amp;quot;chr&amp;quot;] = &amp;quot;切羅基語&amp;quot;,&lt;br /&gt;
	[&amp;quot;cop&amp;quot;] = &amp;quot;科普特語&amp;quot;,														-- Coptic languages&lt;br /&gt;
	[&amp;quot;den&amp;quot;] = &amp;quot;史拉維語&amp;quot;,&lt;br /&gt;
	[&amp;quot;fil&amp;quot;] = &amp;quot;菲律賓語&amp;quot;,&lt;br /&gt;
	[&amp;quot;frs&amp;quot;] = &amp;quot;東菲士蘭下薩克森語&amp;quot;,												-- East Frisian Low Saxon&lt;br /&gt;
	[&amp;quot;fur&amp;quot;] = &amp;quot;弗留利語&amp;quot;,&lt;br /&gt;
	[&amp;quot;gem&amp;quot;] = &amp;quot;原始日耳曼語&amp;quot;,														-- Germanic languages&lt;br /&gt;
	[&amp;quot;gil&amp;quot;] = &amp;quot;吉里巴斯語&amp;quot;,														-- Gilbertesehif&lt;br /&gt;
	[&amp;quot;haw&amp;quot;] = &amp;quot;夏威夷語&amp;quot;,&lt;br /&gt;
	[&amp;quot;hil&amp;quot;] = &amp;quot;希利蓋農語&amp;quot;,&lt;br /&gt;
	[&amp;quot;hit&amp;quot;] = &amp;quot;西臺語&amp;quot;,&lt;br /&gt;
	[&amp;quot;iba&amp;quot;] = &amp;quot;伊班語&amp;quot;,&lt;br /&gt;
	[&amp;quot;jbo&amp;quot;] = &amp;quot;邏輯語&amp;quot;,															-- Lojban&lt;br /&gt;
	[&amp;quot;kab&amp;quot;] = &amp;quot;卡拜爾語&amp;quot;,&lt;br /&gt;
	[&amp;quot;kac&amp;quot;] = &amp;quot;景頗語&amp;quot;,&lt;br /&gt;
	[&amp;quot;kbd&amp;quot;] = &amp;quot;卡巴爾達語&amp;quot;,&lt;br /&gt;
	[&amp;quot;kca&amp;quot;] = &amp;quot;漢特語&amp;quot;,															-- Khanty&lt;br /&gt;
	[&amp;quot;kha&amp;quot;] = &amp;quot;卡西語&amp;quot;,&lt;br /&gt;
	[&amp;quot;kmb&amp;quot;] = &amp;quot;姆本杜語&amp;quot;,&lt;br /&gt;
	[&amp;quot;krl&amp;quot;] = &amp;quot;卡累利阿語&amp;quot;,&lt;br /&gt;
	[&amp;quot;kum&amp;quot;] = &amp;quot;庫梅克語&amp;quot;,&lt;br /&gt;
	[&amp;quot;mai&amp;quot;] = &amp;quot;邁蒂利語&amp;quot;,&lt;br /&gt;
	[&amp;quot;map&amp;quot;] = &amp;quot;南島語系&amp;quot;,&lt;br /&gt;
	[&amp;quot;mnc&amp;quot;] = &amp;quot;滿語&amp;quot;, 															-- Manchu language&lt;br /&gt;
	[&amp;quot;mns&amp;quot;] = &amp;quot;曼西語&amp;quot;,															-- Mansi&lt;br /&gt;
	[&amp;quot;mwl&amp;quot;] = &amp;quot;米蘭達語&amp;quot;,&lt;br /&gt;
	[&amp;quot;myv&amp;quot;] = &amp;quot;埃爾齊亞語&amp;quot;,														-- Erzya&lt;br /&gt;
	[&amp;quot;myn&amp;quot;] = &amp;quot;瑪雅語系&amp;quot;,														-- Mayan languages&lt;br /&gt;
	[&amp;quot;nah&amp;quot;] = &amp;quot;納瓦特爾語&amp;quot;,														-- Nahuatl languages&lt;br /&gt;
	[&amp;quot;nqo&amp;quot;] = &amp;quot;康柏語&amp;quot;,															-- N&#039;Ko language	&lt;br /&gt;
	[&amp;quot;pap&amp;quot;] = &amp;quot;帕皮阿門托語&amp;quot;,&lt;br /&gt;
	[&amp;quot;pau&amp;quot;] = &amp;quot;帕勞語&amp;quot;,                                                     		-- Palau, Palauan&lt;br /&gt;
	[&amp;quot;pfl&amp;quot;] = &amp;quot;普法爾茨方言&amp;quot;,                                   					-- Palatine German language&lt;br /&gt;
	[&amp;quot;pra&amp;quot;] = &amp;quot;普拉克里特諸語言&amp;quot;,													-- Prakrit languages&lt;br /&gt;
	[&amp;quot;roa&amp;quot;] = &amp;quot;羅曼語族&amp;quot;,														-- Romance languages&lt;br /&gt;
	[&amp;quot;sal&amp;quot;] = &amp;quot;薩利什語系&amp;quot;,														-- Salishan languages&lt;br /&gt;
	[&amp;quot;sat&amp;quot;] = &amp;quot;桑塔利語&amp;quot;,&lt;br /&gt;
	[&amp;quot;sla&amp;quot;] = &amp;quot;斯拉夫語族&amp;quot;,														-- Slavic languages&lt;br /&gt;
	[&amp;quot;sma&amp;quot;] = &amp;quot;南薩米語&amp;quot;,&lt;br /&gt;
	[&amp;quot;son&amp;quot;] = &amp;quot;桑海語族&amp;quot;,														-- Songhai languages&lt;br /&gt;
	[&amp;quot;sty&amp;quot;] = &amp;quot;西伯利亞韃靼語&amp;quot;,													-- Siberian Tatar&lt;br /&gt;
	[&amp;quot;sux&amp;quot;] = &amp;quot;蘇美語&amp;quot;,&lt;br /&gt;
	[&amp;quot;tig&amp;quot;] = &amp;quot;提格雷語&amp;quot;,&lt;br /&gt;
	[&amp;quot;tli&amp;quot;] = &amp;quot;特林吉特語&amp;quot;,&lt;br /&gt;
	[&amp;quot;tum&amp;quot;] = &amp;quot;通布卡語&amp;quot;,&lt;br /&gt;
	[&amp;quot;tut&amp;quot;] = &amp;quot;阿爾泰語系&amp;quot;,&lt;br /&gt;
	[&amp;quot;udm&amp;quot;] = &amp;quot;烏德穆爾特語&amp;quot;,&lt;br /&gt;
	[&amp;quot;ukr&amp;quot;] = &amp;quot;烏克蘭語&amp;quot;,&lt;br /&gt;
	[&amp;quot;wen&amp;quot;] = &amp;quot;索布語&amp;quot;,															-- Sorbian languages&lt;br /&gt;
	[&amp;quot;zza&amp;quot;] = &amp;quot;扎扎其語&amp;quot;,														-- Zaza&lt;br /&gt;
&lt;br /&gt;
-- ISO 639-3 codes&lt;br /&gt;
	[&amp;quot;abk&amp;quot;] = &amp;quot;阿布哈茲語&amp;quot;,														-- not in IANA; see code ab&lt;br /&gt;
	[&amp;quot;ace&amp;quot;] = &amp;quot;亞齊語&amp;quot;,															-- Achinese&lt;br /&gt;
	[&amp;quot;ady&amp;quot;] = &amp;quot;阿迪格語&amp;quot;,														-- Adyghe language&lt;br /&gt;
	[&amp;quot;aeb&amp;quot;] = &amp;quot;突尼斯阿拉伯語&amp;quot;,&lt;br /&gt;
	[&amp;quot;aec&amp;quot;] = &amp;quot;薩伊迪阿拉伯語&amp;quot;,													-- Saidi Arabic&lt;br /&gt;
	[&amp;quot;ahk&amp;quot;] = &amp;quot;阿卡語&amp;quot;,&lt;br /&gt;
	[&amp;quot;ain&amp;quot;] = &amp;quot;阿伊努語&amp;quot;,														-- Ainu (Japan)&lt;br /&gt;
	[&amp;quot;akk&amp;quot;] = &amp;quot;阿卡德語&amp;quot;,	&lt;br /&gt;
	[&amp;quot;akl&amp;quot;] = &amp;quot;阿克蘭語&amp;quot;,														-- Aklanon&lt;br /&gt;
	[&amp;quot;aln&amp;quot;] = &amp;quot;阿爾巴尼亞語蓋格方言&amp;quot;,&lt;br /&gt;
	[&amp;quot;alr&amp;quot;] = &amp;quot;阿留特語&amp;quot;,&lt;br /&gt;
	[&amp;quot;alt&amp;quot;] = &amp;quot;阿爾泰語&amp;quot;,														-- Southern Altai&lt;br /&gt;
	[&amp;quot;ami&amp;quot;] = &amp;quot;阿美語&amp;quot;,															-- Amis, Pangcah&lt;br /&gt;
	[&amp;quot;ams&amp;quot;] = &amp;quot;南奄美大島語&amp;quot;,&lt;br /&gt;
	[&amp;quot;anq&amp;quot;] = &amp;quot;加洛瓦語&amp;quot;,&lt;br /&gt;
	[&amp;quot;apc&amp;quot;] = &amp;quot;黎凡特阿拉伯語&amp;quot;,													-- Levantine Arabic&lt;br /&gt;
	[&amp;quot;apd&amp;quot;] = &amp;quot;蘇丹阿拉伯語&amp;quot;,														-- Sudanese Arabic&lt;br /&gt;
	[&amp;quot;apm&amp;quot;] = &amp;quot;梅斯卡萊羅-契利卡瓦語&amp;quot;,												-- Mescalero-Chiricahua Apache&lt;br /&gt;
	[&amp;quot;aqc&amp;quot;] = &amp;quot;阿爾奇語&amp;quot;,&lt;br /&gt;
	[&amp;quot;arc&amp;quot;] = &amp;quot;亞拉姆語&amp;quot;,&lt;br /&gt;
	[&amp;quot;arq&amp;quot;] = &amp;quot;阿爾及利亞阿拉伯語&amp;quot;,&lt;br /&gt;
	[&amp;quot;aru&amp;quot;] = &amp;quot;阿拉瓦語&amp;quot;,&lt;br /&gt;
	[&amp;quot;ary&amp;quot;] = &amp;quot;摩洛哥阿拉伯語&amp;quot;,&lt;br /&gt;
	[&amp;quot;arz&amp;quot;] = &amp;quot;埃及阿拉伯語&amp;quot;,														-- Egyptian Arabic&lt;br /&gt;
	[&amp;quot;ast&amp;quot;] = &amp;quot;阿斯圖里亞斯語&amp;quot;,													-- Asturian&lt;br /&gt;
	[&amp;quot;atb&amp;quot;] = &amp;quot;載瓦語&amp;quot;,&lt;br /&gt;
	[&amp;quot;azb&amp;quot;] = &amp;quot;南阿塞拜疆語&amp;quot;,&lt;br /&gt;
	[&amp;quot;aze&amp;quot;] = &amp;quot;阿塞拜疆語&amp;quot;,&lt;br /&gt;
	[&amp;quot;azj&amp;quot;] = &amp;quot;北阿塞拜疆語&amp;quot;,&lt;br /&gt;
	[&amp;quot;bal&amp;quot;] = &amp;quot;俾路支語&amp;quot;,														-- Baluchi&lt;br /&gt;
	[&amp;quot;bar&amp;quot;] = &amp;quot;巴伐利亞語&amp;quot;,														-- Bavarian&lt;br /&gt;
	[&amp;quot;bcl&amp;quot;] = &amp;quot;中比科爾語&amp;quot;,														-- Central Bikol&lt;br /&gt;
	[&amp;quot;bft&amp;quot;] = &amp;quot;巴爾蒂語&amp;quot;,														-- Balti&lt;br /&gt;
	[&amp;quot;bho&amp;quot;] = &amp;quot;博杰普爾語&amp;quot;,														-- Bhojpuri&lt;br /&gt;
	[&amp;quot;bin&amp;quot;] = &amp;quot;埃多語&amp;quot;,															-- Bini, Edo&lt;br /&gt;
	[&amp;quot;bnn&amp;quot;] = &amp;quot;布農語&amp;quot;,															-- Bunun&lt;br /&gt;
	[&amp;quot;bpy&amp;quot;] = &amp;quot;比什努普里亞-曼尼普爾語&amp;quot;,											-- Bishnupriya, Bishnupriya Manipuri&lt;br /&gt;
	[&amp;quot;brh&amp;quot;] = &amp;quot;布拉灰語&amp;quot;,&lt;br /&gt;
	[&amp;quot;brx&amp;quot;] = &amp;quot;博多語&amp;quot;,															-- Bodo (India)&lt;br /&gt;
	[&amp;quot;byq&amp;quot;] = &amp;quot;巴賽語&amp;quot;,															-- Basay&lt;br /&gt;
	[&amp;quot;bzg&amp;quot;] = &amp;quot;巴布薩語&amp;quot;,&lt;br /&gt;
	[&amp;quot;cal&amp;quot;] = &amp;quot;加羅林語&amp;quot;,&lt;br /&gt;
	[&amp;quot;cbk&amp;quot;] = &amp;quot;查瓦卡諾語&amp;quot;,														-- Chavacano&lt;br /&gt;
	[&amp;quot;cdo&amp;quot;] = &amp;quot;閩東語&amp;quot;,															-- Eastern Min&lt;br /&gt;
	[&amp;quot;chg&amp;quot;] = &amp;quot;察合台語&amp;quot;,														-- Chagatai&lt;br /&gt;
	[&amp;quot;chm&amp;quot;] = &amp;quot;馬里語&amp;quot;,															-- Mari (Russia)&lt;br /&gt;
	[&amp;quot;cjs&amp;quot;] = &amp;quot;邵爾語&amp;quot;,&lt;br /&gt;
	[&amp;quot;ckb&amp;quot;] = &amp;quot;中庫爾德語&amp;quot;,														-- Sorani Kurdish, Central Kurdish&lt;br /&gt;
	[&amp;quot;ckm&amp;quot;] = &amp;quot;查方言&amp;quot;,&lt;br /&gt;
	[&amp;quot;ckt&amp;quot;] = &amp;quot;楚科奇語&amp;quot;,&lt;br /&gt;
	[&amp;quot;ckv&amp;quot;] = &amp;quot;噶瑪蘭語&amp;quot;,														-- Kbalan, Kavalan&lt;br /&gt;
	[&amp;quot;clw&amp;quot;] = &amp;quot;楚利姆語&amp;quot;,&lt;br /&gt;
	[&amp;quot;cnr&amp;quot;] = &amp;quot;蒙特內哥羅語&amp;quot;,														-- Montenegrin&lt;br /&gt;
	[&amp;quot;cnu&amp;quot;] = &amp;quot;舍努瓦語&amp;quot;,														-- Chenoua&lt;br /&gt;
	[&amp;quot;coc&amp;quot;] = &amp;quot;科科帕語&amp;quot;,														-- Cocopa&lt;br /&gt;
	[&amp;quot;cpx&amp;quot;] = &amp;quot;莆仙語&amp;quot;,&lt;br /&gt;
	[&amp;quot;crh&amp;quot;] = &amp;quot;克里米亞韃靼語&amp;quot;,													-- Crimean Tatar, Qırımtatar&lt;br /&gt;
	[&amp;quot;crs&amp;quot;] = &amp;quot;塞舌爾克里奧爾語&amp;quot;,													-- Kreol Seselwa&lt;br /&gt;
	[&amp;quot;csb&amp;quot;] = &amp;quot;卡舒比語&amp;quot;,&lt;br /&gt;
	[&amp;quot;dag&amp;quot;] = &amp;quot;達巴尼語&amp;quot;,														-- Dagbani&lt;br /&gt;
	[&amp;quot;der&amp;quot;] = &amp;quot;德奧里語&amp;quot;,&lt;br /&gt;
	[&amp;quot;deu&amp;quot;] = &amp;quot;標準德語&amp;quot;,&lt;br /&gt;
	[&amp;quot;din&amp;quot;] = &amp;quot;丁卡語&amp;quot;,&lt;br /&gt;
	[&amp;quot;diq&amp;quot;] = &amp;quot;南扎扎其語&amp;quot;,														-- Dimli (individual language)&lt;br /&gt;
	[&amp;quot;dlg&amp;quot;] = &amp;quot;多爾干語&amp;quot;,&lt;br /&gt;
	[&amp;quot;dlm&amp;quot;] = &amp;quot;達爾馬提亞語&amp;quot;,&lt;br /&gt;
	[&amp;quot;dng&amp;quot;] = &amp;quot;東干語&amp;quot;,															-- Dungan&lt;br /&gt;
	[&amp;quot;dru&amp;quot;] = &amp;quot;魯凱語&amp;quot;,															-- Drekay, Rukai&lt;br /&gt;
	[&amp;quot;dsb&amp;quot;] = &amp;quot;下索布語&amp;quot;,														-- Lower Sorbian, dolnoserbšćina&lt;br /&gt;
	[&amp;quot;dta&amp;quot;] = &amp;quot;達斡爾語&amp;quot;,&lt;br /&gt;
	[&amp;quot;duu&amp;quot;] = &amp;quot;獨龍語&amp;quot;,															-- Derung language	&lt;br /&gt;
	[&amp;quot;eee&amp;quot;] = &amp;quot;誒話&amp;quot;,&lt;br /&gt;
	[&amp;quot;egl&amp;quot;] = &amp;quot;艾米利亞語&amp;quot;,&lt;br /&gt;
	[&amp;quot;egy&amp;quot;] = &amp;quot;埃及語&amp;quot;,															-- Egyptian (Ancient)&lt;br /&gt;
	[&amp;quot;ell&amp;quot;] = &amp;quot;現代希臘語&amp;quot;,														-- not in IANA; see code el&lt;br /&gt;
	[&amp;quot;enm&amp;quot;] = &amp;quot;中古英語&amp;quot;,														-- Middle English (1100-1500)&lt;br /&gt;
	[&amp;quot;esu&amp;quot;] = &amp;quot;中阿拉斯加尤皮克語&amp;quot;,&lt;br /&gt;
	[&amp;quot;ett&amp;quot;] = &amp;quot;伊特拉斯坎語&amp;quot;,&lt;br /&gt;
	[&amp;quot;eve&amp;quot;] = &amp;quot;鄂溫語&amp;quot;,&lt;br /&gt;
	[&amp;quot;evn&amp;quot;] = &amp;quot;鄂溫克語&amp;quot;,&lt;br /&gt;
	[&amp;quot;fit&amp;quot;] = &amp;quot;梅安語&amp;quot;,															-- Tornedalen Finnish&lt;br /&gt;
	[&amp;quot;fkv&amp;quot;] = &amp;quot;克文語&amp;quot;,															-- Kven Finnish&lt;br /&gt;
	[&amp;quot;fos&amp;quot;] = &amp;quot;西拉雅語&amp;quot;,														-- Siraya&lt;br /&gt;
	[&amp;quot;frk&amp;quot;] = &amp;quot;古法蘭克語&amp;quot;,														-- Frankish&lt;br /&gt;
	[&amp;quot;frm&amp;quot;] = &amp;quot;中古法語&amp;quot;,														-- Middle French (ca. 1400-1600)&lt;br /&gt;
	[&amp;quot;fro&amp;quot;] = &amp;quot;古法語&amp;quot;,															-- Old French (842-ca. 1400)&lt;br /&gt;
	[&amp;quot;frp&amp;quot;] = &amp;quot;法蘭克-普羅旺斯語&amp;quot;,&lt;br /&gt;
	[&amp;quot;frr&amp;quot;] = &amp;quot;北弗里斯蘭語&amp;quot;,														-- North Frisian, Frasch, Fresk, Freesk, Friisk&lt;br /&gt;
	[&amp;quot;fry&amp;quot;] = &amp;quot;西菲士蘭語&amp;quot;,														-- not in IANA; see code fy&lt;br /&gt;
	[&amp;quot;gag&amp;quot;] = &amp;quot;加告茲語&amp;quot;,														-- Gagauz&lt;br /&gt;
	[&amp;quot;gcf&amp;quot;] = &amp;quot;瓜德羅普克里奧爾語&amp;quot;,                                 		    	-- Guadeloupean Creole&lt;br /&gt;
	[&amp;quot;gcr&amp;quot;] = &amp;quot;法屬圭亞那克里奧爾語&amp;quot;,&lt;br /&gt;
	[&amp;quot;gez&amp;quot;] = &amp;quot;吉茲語&amp;quot;,															-- Geez&lt;br /&gt;
	[&amp;quot;gju&amp;quot;] = &amp;quot;古吉爾語 &amp;quot;,														-- Gujari&lt;br /&gt;
	[&amp;quot;gmh&amp;quot;] = &amp;quot;中古高地德語&amp;quot;,														-- Middle High German (ca. 1050-1500)&lt;br /&gt;
	[&amp;quot;goh&amp;quot;] = &amp;quot;古高地德語&amp;quot;,														-- Old High German (ca. 750-1050)&lt;br /&gt;
	[&amp;quot;gos&amp;quot;] = &amp;quot;格羅寧根方言&amp;quot;,														-- Gronings&lt;br /&gt;
	[&amp;quot;got&amp;quot;] = &amp;quot;哥德語&amp;quot;,															-- Gothic, Gutisk&lt;br /&gt;
	[&amp;quot;grc&amp;quot;] = &amp;quot;古希臘語&amp;quot;,														-- Ancient Greek (to 1453)&lt;br /&gt;
	[&amp;quot;gsw&amp;quot;] = &amp;quot;阿勒曼尼語&amp;quot;,														-- Swiss German, Alemannic, Alsatian&lt;br /&gt;
	[&amp;quot;gul&amp;quot;] = &amp;quot;古拉語&amp;quot;,															-- Sea Island Creole English&lt;br /&gt;
	[&amp;quot;haa&amp;quot;] = &amp;quot;汗語&amp;quot;,&lt;br /&gt;
	[&amp;quot;hak&amp;quot;] = &amp;quot;客家話&amp;quot;,															-- Hakka Chinese&lt;br /&gt;
	[&amp;quot;har&amp;quot;] = &amp;quot;哈勒爾語&amp;quot;,														-- Harari language&lt;br /&gt;
	[&amp;quot;hbo&amp;quot;] = &amp;quot;聖經希伯來語&amp;quot;,														-- Ancient Hebrew&lt;br /&gt;
	[&amp;quot;hbs&amp;quot;] = &amp;quot;塞爾維亞-克羅埃西亞語&amp;quot;,												-- Serbo-Croatian&lt;br /&gt;
	[&amp;quot;hif&amp;quot;] = &amp;quot;斐濟印地語&amp;quot;,														-- Fiji Hindi&lt;br /&gt;
	[&amp;quot;hmn&amp;quot;] = &amp;quot;苗族蒙語&amp;quot;,														-- Hmong language&lt;br /&gt;
	[&amp;quot;hnd&amp;quot;] = &amp;quot;欣德科語&amp;quot;,														-- Southern Hindko&lt;br /&gt;
	[&amp;quot;hni&amp;quot;] = &amp;quot;哈尼語&amp;quot;,															-- Haqniqdoq&lt;br /&gt;
	[&amp;quot;hoc&amp;quot;] = &amp;quot;霍語&amp;quot;,&lt;br /&gt;
	[&amp;quot;hop&amp;quot;] = &amp;quot;霍皮語&amp;quot;,															-- Ho, Bihar Ho, Lanka Kol&lt;br /&gt;
	[&amp;quot;hsb&amp;quot;] = &amp;quot;上索布語&amp;quot;,&lt;br /&gt;
	[&amp;quot;ikt&amp;quot;] = &amp;quot;伊努維亞盧特語&amp;quot;,													-- Inuinnaqtun, Western Canadian Inuktitut&lt;br /&gt;
	[&amp;quot;ilo&amp;quot;] = &amp;quot;伊洛卡諾語&amp;quot;,														-- Iloko&lt;br /&gt;
	[&amp;quot;inh&amp;quot;] = &amp;quot;印古什語&amp;quot;,														-- Ingush&lt;br /&gt;
	[&amp;quot;jio&amp;quot;] = &amp;quot;加茂語&amp;quot;,&lt;br /&gt;
	[&amp;quot;juc&amp;quot;] = &amp;quot;女真語&amp;quot;,															-- Jurchen language&lt;br /&gt;
	[&amp;quot;kaa&amp;quot;] = &amp;quot;卡拉卡爾帕克語&amp;quot;,													-- Kara-Kalpak&lt;br /&gt;
	[&amp;quot;kae&amp;quot;] = &amp;quot;凱達格蘭語&amp;quot;,													&lt;br /&gt;
	[&amp;quot;kan&amp;quot;] = &amp;quot;康納達語&amp;quot;,														-- Kannada&lt;br /&gt;
	[&amp;quot;kea&amp;quot;] = &amp;quot;維德角克里奧爾語&amp;quot;,&lt;br /&gt;
	[&amp;quot;khb&amp;quot;] = &amp;quot;傣仂語&amp;quot;,															-- Tai Lue, Tai Lɯ, Tai Lü, Thai Lue, Tai Le&lt;br /&gt;
	[&amp;quot;kho&amp;quot;] = &amp;quot;于闐語&amp;quot;,&lt;br /&gt;
	[&amp;quot;kiu&amp;quot;] = &amp;quot;北扎扎其語&amp;quot;,														-- Kirmanjki (individual language)&lt;br /&gt;
	[&amp;quot;kjh&amp;quot;] = &amp;quot;哈卡斯語&amp;quot;,														-- Khakas, Fuyu Kyrgyz language (富裕柯爾克孜語) is a dialect of Khakas&lt;br /&gt;
	[&amp;quot;kjp&amp;quot;] = &amp;quot;東波克倫語&amp;quot;,&lt;br /&gt;
	[&amp;quot;kjt&amp;quot;] = &amp;quot;帕波克倫語&amp;quot;,&lt;br /&gt;
	[&amp;quot;kmr&amp;quot;] = &amp;quot;北庫德語&amp;quot;,														-- Northern Kurdish&lt;br /&gt;
	[&amp;quot;knn&amp;quot;] = &amp;quot;孔卡尼語&amp;quot;,														-- Konkani (individual language)&lt;br /&gt;
	[&amp;quot;koi&amp;quot;] = &amp;quot;彼爾姆科米語&amp;quot;,														-- Komi-Permyak language&lt;br /&gt;
	[&amp;quot;kok&amp;quot;] = &amp;quot;孔卡尼語&amp;quot;,														-- Konkani (macrolanguage)&lt;br /&gt;
	[&amp;quot;koo&amp;quot;] = &amp;quot;孔喬語&amp;quot;,															-- Konjo language (Bantu)&lt;br /&gt;
	[&amp;quot;kpo&amp;quot;] = &amp;quot;科普索語&amp;quot;,														-- Kposo, Ikposo&lt;br /&gt;
	[&amp;quot;kpy&amp;quot;] = &amp;quot;科里亞克語&amp;quot;,&lt;br /&gt;
	[&amp;quot;krc&amp;quot;] = &amp;quot;卡拉恰伊-巴爾卡爾語&amp;quot;,												-- Karachay-Balkar&lt;br /&gt;
	[&amp;quot;krj&amp;quot;] = &amp;quot;基那來阿語&amp;quot;,														-- Kinaray-A&lt;br /&gt;
	[&amp;quot;ksh&amp;quot;] = &amp;quot;利普里安語&amp;quot;,														-- Ripuarian, Kölsch; ksh is the code of Colognian, but ksh.wiki is the Ripuarian Wikipedia&lt;br /&gt;
	[&amp;quot;ksw&amp;quot;] = &amp;quot;斯高克倫語&amp;quot;,														-- S&#039;gaw Karen&lt;br /&gt;
	[&amp;quot;ktu&amp;quot;] = &amp;quot;基圖巴語&amp;quot;,														-- Kituba (DR Congo)&lt;br /&gt;
	[&amp;quot;ktz&amp;quot;] = &amp;quot;Juǀ&#039;hoan&amp;quot;,														-- Ju/&#039;hoan, Juǀʼhoan, Juǀʼhoansi&lt;br /&gt;
	[&amp;quot;kwk&amp;quot;] = &amp;quot;夸扣特爾語&amp;quot;,														-- Kwakʼwala&lt;br /&gt;
	[&amp;quot;kzg&amp;quot;] = &amp;quot;喜界語&amp;quot;,															-- Kikai&lt;br /&gt;
	[&amp;quot;lbj&amp;quot;] = &amp;quot;拉達克語&amp;quot;,														-- Ladakhi&lt;br /&gt;
	[&amp;quot;lez&amp;quot;] = &amp;quot;列茲金語&amp;quot;,														-- Lezgian, Lezghian&lt;br /&gt;
	[&amp;quot;lic&amp;quot;] = &amp;quot;黎語&amp;quot;,&lt;br /&gt;
	[&amp;quot;lij&amp;quot;] = &amp;quot;利古里亞語&amp;quot;,&lt;br /&gt;
	[&amp;quot;liv&amp;quot;] = &amp;quot;立窩尼亞語&amp;quot;,														-- Livonian, Liv&lt;br /&gt;
	[&amp;quot;lkt&amp;quot;] = &amp;quot;拉科塔語&amp;quot;,														-- Lakota&lt;br /&gt;
	[&amp;quot;lld&amp;quot;] = &amp;quot;拉定語&amp;quot;,															-- Ladin&lt;br /&gt;
	[&amp;quot;lng&amp;quot;] = &amp;quot;倫巴底語&amp;quot;,														-- Lombardic, Langobardic&lt;br /&gt;
	[&amp;quot;ltg&amp;quot;] = &amp;quot;拉特加萊語&amp;quot;,&lt;br /&gt;
	[&amp;quot;lud&amp;quot;] = &amp;quot;呂迪語&amp;quot;,&lt;br /&gt;
	[&amp;quot;lzh&amp;quot;] = &amp;quot;文言&amp;quot;,&lt;br /&gt;
	[&amp;quot;lzz&amp;quot;] = &amp;quot;拉茲語&amp;quot;,															-- Laz&lt;br /&gt;
	[&amp;quot;maz&amp;quot;] = &amp;quot;馬索維亞語&amp;quot;,														-- Central Mazahua&lt;br /&gt;
	[&amp;quot;mag&amp;quot;] = &amp;quot;摩揭陀語&amp;quot;,														-- Magahi&lt;br /&gt;
	[&amp;quot;mdf&amp;quot;] = &amp;quot;莫克沙語&amp;quot;,														-- Moksha&lt;br /&gt;
	[&amp;quot;mfa&amp;quot;] = &amp;quot;亞維語&amp;quot;,&lt;br /&gt;
	[&amp;quot;mfa-latn&amp;quot;] = &amp;quot;亞維語&amp;quot;,&lt;br /&gt;
	[&amp;quot;mga&amp;quot;] = &amp;quot;中古愛爾蘭語&amp;quot;,														-- Middle Irish (900-1200)&lt;br /&gt;
	[&amp;quot;mhi&amp;quot;] = &amp;quot;馬氐語&amp;quot;,&lt;br /&gt;
	[&amp;quot;mhq&amp;quot;] = &amp;quot;曼丹語&amp;quot;,&lt;br /&gt;
	[&amp;quot;mhr&amp;quot;] = &amp;quot;馬里語&amp;quot;,															-- Eastern Mari&lt;br /&gt;
	[&amp;quot;mia&amp;quot;] = &amp;quot;邁阿密-伊利諾伊語&amp;quot;,													-- Miami&lt;br /&gt;
	[&amp;quot;mic&amp;quot;] = &amp;quot;米克馬克語&amp;quot;,														-- Mi’kmaq&lt;br /&gt;
	[&amp;quot;min&amp;quot;] = &amp;quot;米南佳保語&amp;quot;,       												-- Minangkabau&lt;br /&gt;
	[&amp;quot;miq&amp;quot;] = &amp;quot;米斯基托語&amp;quot;,														-- Mískito&lt;br /&gt;
	[&amp;quot;mix&amp;quot;] = &amp;quot;米斯特克語&amp;quot;,														-- Mixtepec Mixtec&lt;br /&gt;
	[&amp;quot;mjw&amp;quot;] = &amp;quot;卡爾比語&amp;quot;,														-- Karbi&lt;br /&gt;
	[&amp;quot;mkw&amp;quot;] = &amp;quot;基圖巴語&amp;quot;,												-- Kituba (Congo Republic)&lt;br /&gt;
	[&amp;quot;mla&amp;quot;] = &amp;quot;它瑪姆波語&amp;quot;,														-- Malo; formerly a misuse of code mla;&lt;br /&gt;
	[&amp;quot;mni&amp;quot;] = &amp;quot;曼尼普爾語&amp;quot;,														-- Manipuri, Meitei&lt;br /&gt;
	[&amp;quot;mnk&amp;quot;] = &amp;quot;曼丁戈語&amp;quot;,&lt;br /&gt;
	[&amp;quot;mnp&amp;quot;] = &amp;quot;閩北語&amp;quot;,&lt;br /&gt;
	[&amp;quot;mnw&amp;quot;] = &amp;quot;孟語&amp;quot;,&lt;br /&gt;
	[&amp;quot;moe&amp;quot;] = &amp;quot;因努語&amp;quot;,															-- Innu&lt;br /&gt;
--	[&amp;quot;mol&amp;quot;] = &amp;quot;摩爾多瓦語&amp;quot;,														-- Moldavian, Moldovan (639-3, both retired)&lt;br /&gt;
	[&amp;quot;mrj&amp;quot;] = &amp;quot;山地馬里語&amp;quot;,														-- Western Mari&lt;br /&gt;
	[&amp;quot;mtq&amp;quot;] = &amp;quot;芒語&amp;quot;,															-- Mường language&lt;br /&gt;
	[&amp;quot;mww&amp;quot;] = &amp;quot;白苗話&amp;quot;,															-- Hmong Daw&lt;br /&gt;
	[&amp;quot;mzn&amp;quot;] = &amp;quot;馬贊德蘭語&amp;quot;,														-- Mazanderani&lt;br /&gt;
	[&amp;quot;nan&amp;quot;] = &amp;quot;閩南語&amp;quot;,															-- Min Nan Chinese&lt;br /&gt;
	[&amp;quot;naq&amp;quot;] = &amp;quot;科伊科伊語&amp;quot;,														-- Khoekhoe, Nama (Namibia); same as first in IANA list, delete?&lt;br /&gt;
	[&amp;quot;naz&amp;quot;] = &amp;quot;科特佩克納瓦特爾語&amp;quot;,												-- Coatepec Nahuatl; formerly a misuse of code naz&lt;br /&gt;
	[&amp;quot;nci&amp;quot;] = &amp;quot;古典納瓦特爾語&amp;quot;,													-- Classical Nahuatl; same, delete?&lt;br /&gt;
	[&amp;quot;nds&amp;quot;] = &amp;quot;低地德語&amp;quot;,														-- Low German, Low Saxon, Plattdeutsch, Plattdüütsch&lt;br /&gt;
	[&amp;quot;nds-nl&amp;quot;] = &amp;quot;荷蘭下薩克森語&amp;quot;,												-- Dutch Low Saxon, Low German, Low Saxon; as spoken in the Netherlands; see code nsd&lt;br /&gt;
	[&amp;quot;new&amp;quot;] = &amp;quot;尼瓦爾語&amp;quot;,														-- Newari, Nepal Bhasa&lt;br /&gt;
	[&amp;quot;niu&amp;quot;] = &amp;quot;紐埃語&amp;quot;,															-- Niuean&lt;br /&gt;
	[&amp;quot;nmn&amp;quot;] = &amp;quot;宏語&amp;quot;,	&lt;br /&gt;
	[&amp;quot;nod&amp;quot;] = &amp;quot;北部泰語&amp;quot;,														-- Northern Thai, Lanna, Kam Mueang&lt;br /&gt;
	[&amp;quot;non&amp;quot;] = &amp;quot;古諾斯語&amp;quot;,	&lt;br /&gt;
 	[&amp;quot;nrf&amp;quot;] = &amp;quot;諾曼語&amp;quot;,														&lt;br /&gt;
	[&amp;quot;nsd&amp;quot;] = &amp;quot;南尼蘇語&amp;quot;,														-- Southern Nisu&lt;br /&gt;
	[&amp;quot;nso&amp;quot;] = &amp;quot;北索托語&amp;quot;,														-- Pedi, Northern Sotho, Sepedi&lt;br /&gt;
	[&amp;quot;nwc&amp;quot;] = &amp;quot;古典尼瓦爾語&amp;quot;,														-- Classical Newari, Classical Nepal Bhasa, Old Newari&lt;br /&gt;
	[&amp;quot;oar&amp;quot;] = &amp;quot;古亞蘭語&amp;quot;,&lt;br /&gt;
	[&amp;quot;oci&amp;quot;] = &amp;quot;普羅旺斯方言&amp;quot;,														-- oc&lt;br /&gt;
	[&amp;quot;okm&amp;quot;] = &amp;quot;中世韓語&amp;quot;,&lt;br /&gt;
	[&amp;quot;okn&amp;quot;] = &amp;quot;沖永良部語&amp;quot;,														-- Okinoerabu dialect cluster, Shimamuni	&lt;br /&gt;
	[&amp;quot;oko&amp;quot;] = &amp;quot;新羅語&amp;quot;,&lt;br /&gt;
	[&amp;quot;ood&amp;quot;] = &amp;quot;奧奧薩姆語&amp;quot;,														-- Tohono O&#039;odham&lt;br /&gt;
	[&amp;quot;orv&amp;quot;] = &amp;quot;古東斯拉夫語&amp;quot;,     													-- Old East Slavic&lt;br /&gt;
	[&amp;quot;ota&amp;quot;] = &amp;quot;鄂圖曼土耳其語&amp;quot;,													-- Ottoman Turkish (1500-1928)&lt;br /&gt;
	[&amp;quot;otb&amp;quot;] = &amp;quot;中古藏語&amp;quot;,&lt;br /&gt;
	[&amp;quot;otk&amp;quot;] = &amp;quot;古代突厥語&amp;quot;,														-- Old Turkish&lt;br /&gt;
	[&amp;quot;otw&amp;quot;] = &amp;quot;渥太華方言&amp;quot;,														-- Ottawa dialect&lt;br /&gt;
	[&amp;quot;oty&amp;quot;] = &amp;quot;古泰米爾語&amp;quot;,&lt;br /&gt;
	[&amp;quot;oui&amp;quot;] = &amp;quot;回鶻語&amp;quot;,&lt;br /&gt;
	[&amp;quot;owl&amp;quot;] = &amp;quot;古威爾斯語&amp;quot;,														-- Old Welsh&lt;br /&gt;
	[&amp;quot;pal&amp;quot;] = &amp;quot;中古波斯語&amp;quot;,														-- Pahlavi&lt;br /&gt;
	[&amp;quot;pam&amp;quot;] = &amp;quot;邦板牙語&amp;quot;,														-- Pampanga, Kapampangan&lt;br /&gt;
	[&amp;quot;pcd&amp;quot;] = &amp;quot;皮卡第語&amp;quot;,&lt;br /&gt;
	[&amp;quot;peo&amp;quot;] = &amp;quot;古波斯語&amp;quot;,														-- Old Persian (ca. 600-400 B.C.)&lt;br /&gt;
	[&amp;quot;phr&amp;quot;] = &amp;quot;博德瓦爾語&amp;quot;,														-- Pahari-Potwari&lt;br /&gt;
	[&amp;quot;phn&amp;quot;] = &amp;quot;腓尼基語&amp;quot;,		                                                -- Phoenician&lt;br /&gt;
	[&amp;quot;pjt&amp;quot;] = &amp;quot;皮詹賈賈拉語&amp;quot;,&lt;br /&gt;
	[&amp;quot;pka&amp;quot;] = &amp;quot;普拉克里特諸語言&amp;quot;,													-- Ardhamāgadhī Prākrit&lt;br /&gt;
	[&amp;quot;pms&amp;quot;] = &amp;quot;皮埃蒙特語&amp;quot;,&lt;br /&gt;
	[&amp;quot;pnb&amp;quot;] = &amp;quot;旁遮普語&amp;quot;,														-- Western Panjabi&lt;br /&gt;
	[&amp;quot;ppu&amp;quot;] = &amp;quot;巴布拉語&amp;quot;,														-- Papura, Hoany&lt;br /&gt;
	[&amp;quot;pot&amp;quot;] = &amp;quot;波塔瓦托米語&amp;quot;,&lt;br /&gt;
	[&amp;quot;pox&amp;quot;] = &amp;quot;波拉比語&amp;quot;,														-- Polabian&lt;br /&gt;
	[&amp;quot;prs&amp;quot;] = &amp;quot;達利語&amp;quot;,&lt;br /&gt;
	[&amp;quot;prg&amp;quot;] = &amp;quot;古普魯士語&amp;quot;,&lt;br /&gt;
	[&amp;quot;psu&amp;quot;] = &amp;quot;索拉塞那語&amp;quot;,														-- Sauraseni Prākrit&lt;br /&gt;
	[&amp;quot;pwn&amp;quot;] = &amp;quot;排灣語&amp;quot;,															-- Pinayuanan, Paiwan&lt;br /&gt;
	[&amp;quot;pwo&amp;quot;] = &amp;quot;西波克倫語&amp;quot;,&lt;br /&gt;
	[&amp;quot;pww&amp;quot;] = &amp;quot;北波克倫語&amp;quot;,&lt;br /&gt;
	[&amp;quot;pyu&amp;quot;] = &amp;quot;卑南語&amp;quot;,															-- Pinuyumayan, Puyuma&lt;br /&gt;
	[&amp;quot;pzh&amp;quot;] = &amp;quot;巴宰語&amp;quot;,                                                          -- Pazeh&lt;br /&gt;
	[&amp;quot;quc&amp;quot;] = &amp;quot;基切語&amp;quot;,&lt;br /&gt;
	[&amp;quot;qxl&amp;quot;] = &amp;quot;薩拉薩卡奇楚瓦語&amp;quot;,&lt;br /&gt;
	[&amp;quot;qxq&amp;quot;] = &amp;quot;卡什加語&amp;quot;,&lt;br /&gt;
	[&amp;quot;rap&amp;quot;] = &amp;quot;拉帕努伊語&amp;quot;,														-- Rapanui&lt;br /&gt;
	[&amp;quot;rar&amp;quot;] = &amp;quot;庫克群島毛利語&amp;quot;,													-- Rarotongan, Cook Islands Maori&lt;br /&gt;
	[&amp;quot;rcf&amp;quot;] = &amp;quot;留尼旺克里奧爾語&amp;quot;,&lt;br /&gt;
	[&amp;quot;rhg&amp;quot;] = &amp;quot;羅興亞語&amp;quot; ,&lt;br /&gt;
	[&amp;quot;rmu&amp;quot;] = &amp;quot;斯坎多羅馬尼語&amp;quot;,													-- Tavringer Romani&lt;br /&gt;
	[&amp;quot;rom&amp;quot;] = &amp;quot;羅姆語&amp;quot;,															-- Romany&lt;br /&gt;
	[&amp;quot;rsk&amp;quot;] = &amp;quot;潘諾尼亞盧森尼亞語&amp;quot;,												-- Pannonian Rusyn&lt;br /&gt;
	[&amp;quot;rue&amp;quot;] = &amp;quot;盧森尼亞語&amp;quot;,														-- Rusyn&lt;br /&gt;
	[&amp;quot;rup&amp;quot;] = &amp;quot;阿羅馬尼亞語&amp;quot;,														-- Macedo-Romanian, Aromanian, Arumanian&lt;br /&gt;
	[&amp;quot;rus&amp;quot;] = &amp;quot;俄語&amp;quot;,															-- not in IANA; see code ru&lt;br /&gt;
	[&amp;quot;rut&amp;quot;] = &amp;quot;魯圖爾語&amp;quot;,														-- Rutul&lt;br /&gt;
	[&amp;quot;ryn&amp;quot;] = &amp;quot;北奄美大島語&amp;quot;,&lt;br /&gt;
	[&amp;quot;rys&amp;quot;] = &amp;quot;八重山語&amp;quot;,														-- Yaeyama&lt;br /&gt;
	[&amp;quot;ryu&amp;quot;] = &amp;quot;沖繩語&amp;quot;,															-- Central Okinawan&lt;br /&gt;
	[&amp;quot;sah&amp;quot;] = &amp;quot;薩哈語&amp;quot;,															-- Yakut&lt;br /&gt;
	[&amp;quot;sce&amp;quot;] = &amp;quot;東鄉語&amp;quot;,&lt;br /&gt;
	[&amp;quot;scn&amp;quot;] = &amp;quot;西西里語&amp;quot;,&lt;br /&gt;
	[&amp;quot;sco&amp;quot;] = &amp;quot;低地蘇格蘭語&amp;quot;,														-- Scots, Lowland Scots&lt;br /&gt;
	[&amp;quot;scq&amp;quot;] = &amp;quot;薩奧基語&amp;quot;,&lt;br /&gt;
	[&amp;quot;sdc&amp;quot;] = &amp;quot;薩薩里語&amp;quot;,														-- Sassarese Sardinian&lt;br /&gt;
	[&amp;quot;sdn&amp;quot;] = &amp;quot;加盧拉方言&amp;quot;,														-- Gallurese Sardinian&lt;br /&gt;
	[&amp;quot;sga&amp;quot;] = &amp;quot;古愛爾蘭語&amp;quot;,														-- Old Irish (to 900)&lt;br /&gt;
	[&amp;quot;sgs&amp;quot;] = &amp;quot;薩莫吉提亞語&amp;quot;,														-- Samogitian dialect, Žemaitiu ruoda&lt;br /&gt;
	[&amp;quot;shn&amp;quot;] = &amp;quot;撣語&amp;quot;,															-- Shan&lt;br /&gt;
	[&amp;quot;shp&amp;quot;] = &amp;quot;西皮波語&amp;quot;,														-- Shipibo-Conibo&lt;br /&gt;
	[&amp;quot;sid&amp;quot;] = &amp;quot;錫達馬語&amp;quot;,															-- Sidaamu Afoo&lt;br /&gt;
	[&amp;quot;sip&amp;quot;] = &amp;quot;錫金語&amp;quot;,															-- Sikkimese&lt;br /&gt;
	[&amp;quot;sjo&amp;quot;] = &amp;quot;錫伯語&amp;quot;,&lt;br /&gt;
	[&amp;quot;smj&amp;quot;] = &amp;quot;呂勒薩米語&amp;quot;,                                             			-- Lule Sámi&lt;br /&gt;
	[&amp;quot;smn&amp;quot;] = &amp;quot;伊納里薩米語&amp;quot;,&lt;br /&gt;
	[&amp;quot;sms&amp;quot;] = &amp;quot;斯科爾特薩米語&amp;quot;,													-- Skolt Sami&lt;br /&gt;
	[&amp;quot;sjd&amp;quot;] = &amp;quot;基爾丁薩米語&amp;quot;,&lt;br /&gt;
	[&amp;quot;sje&amp;quot;] = &amp;quot;皮特薩米語&amp;quot;,&lt;br /&gt;
	[&amp;quot;skr&amp;quot;] = &amp;quot;色萊基語&amp;quot;,														-- Saraiki, Seraiki; same as first in IANA list, delete?&lt;br /&gt;
	[&amp;quot;sli&amp;quot;] = &amp;quot;西里西亞方言&amp;quot;,														-- Silesian German Language&lt;br /&gt;
	[&amp;quot;slr&amp;quot;] = &amp;quot;撒拉語&amp;quot;,&lt;br /&gt;
	[&amp;quot;spv&amp;quot;] = &amp;quot;森伯爾布爾語&amp;quot;,														-- Sambalpuri language&lt;br /&gt;
	[&amp;quot;squ&amp;quot;] = &amp;quot;史戈米殊語&amp;quot;,														-- Squamish language&lt;br /&gt;
	[&amp;quot;src&amp;quot;] = &amp;quot;勞古多羅方言&amp;quot;,														-- Logudorese Sardinian&lt;br /&gt;
	[&amp;quot;sro&amp;quot;] = &amp;quot;坎皮達諾方言&amp;quot;,														-- Campidanese Sardinian&lt;br /&gt;
	[&amp;quot;ssf&amp;quot;] = &amp;quot;邵語&amp;quot;,&lt;br /&gt;
	[&amp;quot;sth&amp;quot;] = &amp;quot;雪爾塔語&amp;quot;,&lt;br /&gt;
	[&amp;quot;stq&amp;quot;] = &amp;quot;薩特菲士蘭語&amp;quot;,&lt;br /&gt;
	[&amp;quot;sva&amp;quot;] = &amp;quot;斯凡語&amp;quot;,&lt;br /&gt;
	[&amp;quot;swb&amp;quot;] = &amp;quot;馬約特語&amp;quot;,														-- Shimaore&lt;br /&gt;
	[&amp;quot;swg&amp;quot;] = &amp;quot;施瓦本方言&amp;quot;,&lt;br /&gt;
	[&amp;quot;sxr&amp;quot;] = &amp;quot;拉阿魯哇語&amp;quot;,														-- Hla&#039;alua, Saaroa&lt;br /&gt;
	[&amp;quot;syc&amp;quot;] = &amp;quot;古敘利亞語&amp;quot;,														-- Classical Syriac&lt;br /&gt;
	[&amp;quot;syr&amp;quot;] = &amp;quot;敘利亞語&amp;quot;,														-- Syriac&lt;br /&gt;
	[&amp;quot;szl&amp;quot;] = &amp;quot;西里西亞語&amp;quot;,														-- Silesian&lt;br /&gt;
	[&amp;quot;szy&amp;quot;] = &amp;quot;撒奇萊雅語&amp;quot;,														-- Sakizaya&lt;br /&gt;
	[&amp;quot;srh&amp;quot;] = &amp;quot;色勒庫爾語&amp;quot;,&lt;br /&gt;
	[&amp;quot;tab&amp;quot;] = &amp;quot;塔巴薩蘭語&amp;quot;,														-- Tabasaran&lt;br /&gt;
	[&amp;quot;tao&amp;quot;] = &amp;quot;達悟語&amp;quot;,															-- Cizicizing No Tao、Ireriak No Tao, Yami&lt;br /&gt;
	[&amp;quot;tay&amp;quot;] = &amp;quot;泰雅語&amp;quot;,															-- Atayal, Tayal&lt;br /&gt;
	[&amp;quot;tcy&amp;quot;] = &amp;quot;圖陸語&amp;quot;,															-- Tulu, Tulu bāse&lt;br /&gt;
	[&amp;quot;tdd&amp;quot;] = &amp;quot;傣那語&amp;quot;,&lt;br /&gt;
	[&amp;quot;tet&amp;quot;] = &amp;quot;德頓語&amp;quot;,															-- Tetum&lt;br /&gt;
	[&amp;quot;tkl&amp;quot;] = &amp;quot;托克勞語&amp;quot;,														-- Tokelau&lt;br /&gt;
	[&amp;quot;tkn&amp;quot;] = &amp;quot;德之島語&amp;quot;,														-- Tokunoshima&lt;br /&gt;
	[&amp;quot;tly&amp;quot;] = &amp;quot;塔利希語&amp;quot;,&lt;br /&gt;
	[&amp;quot;tmh&amp;quot;] = &amp;quot;圖阿雷格語&amp;quot;,														-- Tamashek&lt;br /&gt;
	[&amp;quot;tmr&amp;quot;] = &amp;quot;猶太巴比倫亞蘭語&amp;quot;,&lt;br /&gt;
	[&amp;quot;tnq&amp;quot;] = &amp;quot;泰諾語&amp;quot;,&lt;br /&gt;
	[&amp;quot;tok&amp;quot;] = &amp;quot;道本語&amp;quot;,&lt;br /&gt;
	[&amp;quot;tpi&amp;quot;] = &amp;quot;巴布亞皮欽語&amp;quot;,														-- Tok Pisin&lt;br /&gt;
	[&amp;quot;trv&amp;quot;] = &amp;quot;太魯閣語&amp;quot;,														-- Truku, Sejiq Truku&lt;br /&gt;
	[&amp;quot;tsg&amp;quot;] = &amp;quot;陶蘇格語&amp;quot; ,&lt;br /&gt;
	[&amp;quot;tsu&amp;quot;] = &amp;quot;鄒語&amp;quot;,															-- Cou, Tsou&lt;br /&gt;
	[&amp;quot;tts&amp;quot;] = &amp;quot;依善語&amp;quot;,															-- Isan language&lt;br /&gt;
	[&amp;quot;tvl&amp;quot;] = &amp;quot;吐瓦魯語&amp;quot;,														-- Tuvalu&lt;br /&gt;
	[&amp;quot;tvx&amp;quot;] = &amp;quot;大武壠語&amp;quot;,&lt;br /&gt;
	[&amp;quot;txb&amp;quot;] = &amp;quot;龜茲語&amp;quot;,															-- Tocharian B (乙種吐火羅語)&lt;br /&gt;
	[&amp;quot;txg&amp;quot;] = &amp;quot;西夏語&amp;quot;,&lt;br /&gt;
	[&amp;quot;tyv&amp;quot;] = &amp;quot;圖瓦語&amp;quot;,															-- Tuvinian&lt;br /&gt;
	[&amp;quot;uby&amp;quot;] = &amp;quot;尤比克語&amp;quot;,														-- Ubykh&lt;br /&gt;
	[&amp;quot;uon&amp;quot;] = &amp;quot;龜崙語&amp;quot;,															-- Kulon&lt;br /&gt;
--	[&amp;quot;uun&amp;quot;] = &amp;quot;巴宰語&amp;quot;,															-- Kulon-Pazeh (deprecated per iso639-3.sil.org/request/2021-042)&lt;br /&gt;
	[&amp;quot;vec&amp;quot;] = &amp;quot;威尼斯語&amp;quot;,												&lt;br /&gt;
	[&amp;quot;vep&amp;quot;] = &amp;quot;維普斯語&amp;quot;,														-- Veps&lt;br /&gt;
	[&amp;quot;vls&amp;quot;] = &amp;quot;西弗拉芒方言&amp;quot;,														-- Vlaams&lt;br /&gt;
	[&amp;quot;vmf&amp;quot;] = &amp;quot;東法蘭克尼亞方言&amp;quot;,													-- East Franconian German&lt;br /&gt;
	[&amp;quot;vro&amp;quot;] = &amp;quot;沃羅語&amp;quot;,															-- Võro&lt;br /&gt;
	[&amp;quot;war&amp;quot;] = &amp;quot;瓦瑞語&amp;quot;,															-- Waray (Philippines)&lt;br /&gt;
	[&amp;quot;wbp&amp;quot;] = &amp;quot;瓦爾皮里語&amp;quot;,&lt;br /&gt;
	[&amp;quot;wep&amp;quot;] = &amp;quot;威斯特法倫方言&amp;quot;,                          							-- Westphalien&lt;br /&gt;
	[&amp;quot;wuu&amp;quot;] = &amp;quot;吳語&amp;quot;,&lt;br /&gt;
	[&amp;quot;xal&amp;quot;] = &amp;quot;衛拉特語&amp;quot;,														-- Kalmyk, Oirat&lt;br /&gt;
	[&amp;quot;xal-ru&amp;quot;] = &amp;quot;卡爾梅克衛拉特語&amp;quot;,												-- Kalmyk Oirat&lt;br /&gt;
	[&amp;quot;xbc&amp;quot;] = &amp;quot;巴克特里亞語&amp;quot;,&lt;br /&gt;
	[&amp;quot;xcb&amp;quot;] = &amp;quot;坎伯蘭語&amp;quot;,														-- Cumbric&lt;br /&gt;
	[&amp;quot;xcl&amp;quot;] = &amp;quot;古典亞美尼亞語&amp;quot;,													-- Classical Armenian&lt;br /&gt;
	[&amp;quot;xct&amp;quot;] = &amp;quot;近古藏語&amp;quot;,														-- Classical Tibetan&lt;br /&gt;
	[&amp;quot;xmf&amp;quot;] = &amp;quot;明格列爾語&amp;quot;,														-- Mingrelian &lt;br /&gt;
	[&amp;quot;xnb&amp;quot;] = &amp;quot;卡那卡那富語&amp;quot;,														-- Kanakanavu&lt;br /&gt;
	[&amp;quot;xpp&amp;quot;] = &amp;quot;百濟語&amp;quot;,															-- Baekje&lt;br /&gt;
	[&amp;quot;xpr&amp;quot;] = &amp;quot;安息語&amp;quot;,&lt;br /&gt;
	[&amp;quot;xpu&amp;quot;] = &amp;quot;布匿語&amp;quot;,															-- Punic&lt;br /&gt;
	[&amp;quot;xsr&amp;quot;] = &amp;quot;夏爾巴語&amp;quot;,														-- Sherpa&lt;br /&gt;
	[&amp;quot;xsy&amp;quot;] = &amp;quot;賽夏語&amp;quot;,															-- Saisiyat&lt;br /&gt;
	[&amp;quot;xto&amp;quot;] = &amp;quot;焉耆語&amp;quot;,															-- Tocharian A (甲種吐火羅語)&lt;br /&gt;
	[&amp;quot;xtq&amp;quot;] = &amp;quot;圖木舒克語&amp;quot;,&lt;br /&gt;
	[&amp;quot;xug&amp;quot;] = &amp;quot;國頭語&amp;quot;,															-- Kunigami&lt;br /&gt;
	[&amp;quot;xwo&amp;quot;] = &amp;quot;書面瓦剌語&amp;quot;,														-- Written Oirat&lt;br /&gt;
	[&amp;quot;yaq&amp;quot;] = &amp;quot;雅基語&amp;quot;,&lt;br /&gt;
	[&amp;quot;ybe&amp;quot;] = &amp;quot;西部裕固語&amp;quot;,&lt;br /&gt;
	[&amp;quot;yoi&amp;quot;] = &amp;quot;與那國語&amp;quot;,														-- Yonaguni &lt;br /&gt;
	[&amp;quot;yox&amp;quot;] = &amp;quot;與論語&amp;quot;,															-- Yoron&lt;br /&gt;
	[&amp;quot;ypk&amp;quot;] = &amp;quot;尤皮克語&amp;quot;,&lt;br /&gt;
	[&amp;quot;yrk&amp;quot;] = &amp;quot;涅涅茨語&amp;quot;,&lt;br /&gt;
	[&amp;quot;yua&amp;quot;] = &amp;quot;猶加敦馬雅語&amp;quot;,														-- Yucateco, Yucatec Maya&lt;br /&gt;
	[&amp;quot;yue&amp;quot;] = &amp;quot;粵語&amp;quot;,&lt;br /&gt;
	[&amp;quot;yuy&amp;quot;] = &amp;quot;東部裕固語&amp;quot;,&lt;br /&gt;
	[&amp;quot;zea&amp;quot;] = &amp;quot;西蘭語&amp;quot;,															-- Zeêuw, Zealandic&lt;br /&gt;
	[&amp;quot;zkg&amp;quot;] = &amp;quot;高句麗語&amp;quot;,&lt;br /&gt;
	[&amp;quot;zne&amp;quot;] = &amp;quot;贊德語&amp;quot;,															-- Zande&lt;br /&gt;
	[&amp;quot;zng&amp;quot;] = &amp;quot;莽語&amp;quot;,															-- Mảng language&lt;br /&gt;
&lt;br /&gt;
-- non-standard codes&lt;br /&gt;
	[&amp;quot;be-x-old&amp;quot;] = &amp;quot;白俄羅斯語傳統正寫法&amp;quot;,											-- be = Belarusian; x-old = private use tag; be-x-old.wikipedia.org; space char in index may indicate that this code not used&lt;br /&gt;
--	[&amp;quot;cg&amp;quot;] = &amp;quot;蒙特內哥羅語&amp;quot;,														-- IANA / ISO 639-3 code is cnr&lt;br /&gt;
	[&amp;quot;cnr-cyrl&amp;quot;] = &amp;quot;蒙特內哥羅語西里爾字母&amp;quot;,&lt;br /&gt;
	[&amp;quot;cnr-latn&amp;quot;] = &amp;quot;蒙特內哥羅語拉丁字母&amp;quot;,&lt;br /&gt;
	[&amp;quot;de-at&amp;quot;] = &amp;quot;奧地利德語&amp;quot;,&lt;br /&gt;
	[&amp;quot;de-ch&amp;quot;] = &amp;quot;瑞士標準德語&amp;quot;,													-- Swiss Standard German&lt;br /&gt;
	[&amp;quot;en-emodeng&amp;quot;] = &amp;quot;近代英語&amp;quot;,													-- emodeng is not an IANA-registered variant&lt;br /&gt;
	[&amp;quot;fr-ca&amp;quot;] = &amp;quot;加拿大法語&amp;quot;,														-- Canadian French&lt;br /&gt;
	[&amp;quot;fr-gallo&amp;quot;] = &amp;quot;加洛語&amp;quot;,&lt;br /&gt;
	[&amp;quot;fra-frc&amp;quot;] = &amp;quot;法蘭琪-康堤語&amp;quot;,&lt;br /&gt;
	[&amp;quot;fc&amp;quot;] = &amp;quot;法蘭琪-康堤語&amp;quot;,&lt;br /&gt;
	[&amp;quot;gkm&amp;quot;] = &amp;quot;中古希臘語&amp;quot;,&lt;br /&gt;
--	[&amp;quot;grc-gre&amp;quot;] = &amp;quot;希臘語&amp;quot;,														-- grc = Ancient Greek (to 1453); gre not an IANA-registered code; used by Template:lang-grc-gre&lt;br /&gt;
	[&amp;quot;gsw-fr&amp;quot;] = &amp;quot;阿爾薩斯語&amp;quot;,&lt;br /&gt;
	[&amp;quot;hbs-cyrl&amp;quot;] = &amp;quot;塞爾維亞-克羅埃西亞語西里爾字母&amp;quot;,&lt;br /&gt;
	[&amp;quot;hbs-latn&amp;quot;] = &amp;quot;塞爾維亞-克羅埃西亞語拉丁字母&amp;quot;,&lt;br /&gt;
	[&amp;quot;map-bms&amp;quot;] = &amp;quot;班尤馬山語&amp;quot;,													-- dialect of Javanese; map = Austronesian languages (639-2); bms is an IANA registered code not related to Javanese; map-bms.wikipedia.org&lt;br /&gt;
	[&amp;quot;nan-tw&amp;quot;] = &amp;quot;臺灣話&amp;quot;,														-- Taiwanese Hokkien&lt;br /&gt;
	[&amp;quot;nrf-gg&amp;quot;] = &amp;quot;根西方言&amp;quot;,&lt;br /&gt;
	[&amp;quot;nrf-je&amp;quot;] = &amp;quot;澤西方言&amp;quot;,&lt;br /&gt;
	[&amp;quot;oc-auvern&amp;quot;] = &amp;quot;奧弗涅方言&amp;quot;, &lt;br /&gt;
	[&amp;quot;oc-gascon&amp;quot;] = &amp;quot;加斯科涅語&amp;quot;, &lt;br /&gt;
	[&amp;quot;oc-lemosin&amp;quot;] = &amp;quot;利穆贊方言&amp;quot;, &lt;br /&gt;
	[&amp;quot;oc-provenc&amp;quot;] = &amp;quot;普羅旺斯方言&amp;quot;, &lt;br /&gt;
	[&amp;quot;oc-vivaraup&amp;quot;] = &amp;quot;維瓦賴-阿爾卑斯方言&amp;quot;,&lt;br /&gt;
	[&amp;quot;roa-tara&amp;quot;] = &amp;quot;塔蘭托方言&amp;quot;,													-- roa = Romance languages (639-2); tara is not an IANA registered script; roa-tara.wikipedia.org&lt;br /&gt;
	[&amp;quot;simple&amp;quot;] = &amp;quot;簡單英語&amp;quot;,														-- simple is not an IANA registered variant; simple.wikipedia.org&lt;br /&gt;
	[&amp;quot;sr-cyrl&amp;quot;] = &amp;quot;塞爾維亞語西里爾字母&amp;quot;,&lt;br /&gt;
	[&amp;quot;sr-latn&amp;quot;] = &amp;quot;塞爾維亞語拉丁字母&amp;quot;,&lt;br /&gt;
	[&amp;quot;va&amp;quot;] = &amp;quot;瓦倫西亞語&amp;quot;,&lt;br /&gt;
	[&amp;quot;yol&amp;quot;] = &amp;quot;約拉語&amp;quot;,															-- yol = Yola dialect; the code is deprecated in 2024, covered by Middle English (enm) afterwards&lt;br /&gt;
	[&amp;quot;zh-classical&amp;quot;] = &amp;quot;文言&amp;quot;,													-- zh = Chinese; classical is not an IANA-registered variant; zh-classical.wikipedia.org&lt;br /&gt;
	[&amp;quot;zh-min-nan&amp;quot;] = &amp;quot;閩南語&amp;quot;,													-- zh-min-nan = Minnan, Hokkien, Amoy, Taiwanese, Southern Min, Southern Fujian, Hoklo, Southern Fukien, Ho-lo; granfathered in IANA, nan preferred; zh-min-nan.wikipedia.org&lt;br /&gt;
	[&amp;quot;zh-yue&amp;quot;] = &amp;quot;粵語&amp;quot;,&lt;br /&gt;
	[&amp;quot;grc-x-aeolic&amp;quot;] = &amp;quot;愛奧利亞希臘語&amp;quot;,											-- these grc-x-... codes are preferred alternates to the non-standard catchall code grc-gre&lt;br /&gt;
	[&amp;quot;grc-x-arcadcyp&amp;quot;] = &amp;quot;南亞該亞希臘語&amp;quot;,&lt;br /&gt;
	[&amp;quot;grc-x-attic&amp;quot;] = &amp;quot;阿提卡希臘語&amp;quot;,&lt;br /&gt;
	[&amp;quot;grc-x-biblical&amp;quot;] = &amp;quot;聖經希臘語&amp;quot;,&lt;br /&gt;
	[&amp;quot;grc-x-byzant&amp;quot;] = &amp;quot;拜占庭希臘語&amp;quot;,&lt;br /&gt;
	[&amp;quot;grc-x-classic&amp;quot;] = &amp;quot;古典希臘語&amp;quot;,&lt;br /&gt;
	[&amp;quot;grc-x-doric&amp;quot;] = &amp;quot;多利亞希臘語&amp;quot;,&lt;br /&gt;
	[&amp;quot;grc-x-hellen&amp;quot;] = &amp;quot;希臘化希臘語&amp;quot;,&lt;br /&gt;
	[&amp;quot;grc-x-ionic&amp;quot;] = &amp;quot;愛奧尼亞希臘語&amp;quot;,&lt;br /&gt;
	[&amp;quot;grc-x-koine&amp;quot;] = &amp;quot;通用希臘語&amp;quot;,&lt;br /&gt;
	[&amp;quot;grc-x-medieval&amp;quot;] = &amp;quot;中古希臘語&amp;quot;,&lt;br /&gt;
	[&amp;quot;grc-x-patris&amp;quot;] = &amp;quot;教父希臘語&amp;quot;,&lt;br /&gt;
	[&amp;quot;grk-x-proto&amp;quot;] = &amp;quot;原始希臘語&amp;quot;,												-- grk in IANA is Greek languages&lt;br /&gt;
--	[&amp;quot;iir-x-proto&amp;quot;] = &amp;quot;原始印度-伊朗語&amp;quot;,											-- iir in IANA is Indo-Iranian Languages&lt;br /&gt;
--	[&amp;quot;ira-x-proto&amp;quot;] = &amp;quot;原始伊朗語&amp;quot;,												-- ira in IANA is Iranian languages&lt;br /&gt;
--	[&amp;quot;itc-x-proto&amp;quot;] = &amp;quot;原始義大利語&amp;quot;,												-- itc in IANA is Italic languages&lt;br /&gt;
--	[&amp;quot;sla-x-proto&amp;quot;] = &amp;quot;原始斯拉夫語&amp;quot;,												-- sla in IANA is Slavic languages&lt;br /&gt;
	[&amp;quot;yuf-x-hav&amp;quot;] = &amp;quot;哈瓦蘇佩語&amp;quot;,													-- IANA name for these three is Havasupai-Walapai-Yavapai&lt;br /&gt;
	[&amp;quot;yuf-x-wal&amp;quot;] = &amp;quot;華萊派語&amp;quot;,&lt;br /&gt;
	[&amp;quot;yuf-x-yav&amp;quot;] = &amp;quot;亞瓦派語&amp;quot;,&lt;br /&gt;
	}&lt;br /&gt;
&lt;br /&gt;
--[[--------------------------&amp;lt; A R T I C L E _ L I N K &amp;gt;------------------------------------------------------&lt;br /&gt;
&lt;br /&gt;
对于少数情况下，条目标题不符合常规的“某语”格式，本表用于将语言代码映射到条目标题。&lt;br /&gt;
应尽量避免使用此表，而应优先使用重定向页面，这是长期以来处理不符合常规命名模式的条目名称的做法。&lt;br /&gt;
&lt;br /&gt;
]]&lt;br /&gt;
&lt;br /&gt;
local article_name = {&lt;br /&gt;
	&lt;br /&gt;
	}&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
--[=[-------------------------&amp;lt; R T L _ S C R I P T S &amp;gt;--------------------------------------------------------&lt;br /&gt;
&lt;br /&gt;
ISO 15924 scripts that are written right-to-left. Data in this table taken from [[ISO 15924#List of codes]]&lt;br /&gt;
&lt;br /&gt;
last update to this list: 2017-12-24&lt;br /&gt;
&lt;br /&gt;
]=]&lt;br /&gt;
&lt;br /&gt;
local rtl_scripts = {&lt;br /&gt;
	&#039;adlm&#039;, &#039;arab&#039;, &#039;aran&#039;, &#039;armi&#039;, &#039;avst&#039;, &#039;cprt&#039;, &#039;egyd&#039;, &#039;egyh&#039;, &#039;hatr&#039;, &#039;hebr&#039;,&lt;br /&gt;
	&#039;hung&#039;, &#039;inds&#039;, &#039;khar&#039;, &#039;lydi&#039;, &#039;mand&#039;, &#039;mani&#039;, &#039;mend&#039;, &#039;merc&#039;, &#039;mero&#039;, &#039;narb&#039;,&lt;br /&gt;
	&#039;nbat&#039;, &#039;nkoo&#039;, &#039;orkh&#039;, &#039;palm&#039;, &#039;phli&#039;, &#039;phlp&#039;, &#039;phlv&#039;, &#039;phnx&#039;, &#039;prti&#039;, &#039;rohg&#039;,&lt;br /&gt;
	&#039;samr&#039;, &#039;sarb&#039;, &#039;sogd&#039;, &#039;sogo&#039;, &#039;syrc&#039;, &#039;syre&#039;, &#039;syrj&#039;, &#039;syrn&#039;, &#039;thaa&#039;, &#039;wole&#039;,&lt;br /&gt;
	};&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
--[[--------------------------&amp;lt; T R A N S L I T _ T I T L E S &amp;gt;------------------------------------------------&lt;br /&gt;
&lt;br /&gt;
This is a table of tables of transliteration standards and the language codes or language scripts that apply to&lt;br /&gt;
those standards. This table is used to create the tool-tip text associated with the transliterated text displayed&lt;br /&gt;
by some of the {{lang-??}} templates.&lt;br /&gt;
&lt;br /&gt;
These tables are more-or-less copied directly from {{transl}}. The standard &#039;NO_STD&#039; is a construct to allow for&lt;br /&gt;
the cases when no |std= parameter value is provided.&lt;br /&gt;
&lt;br /&gt;
]]&lt;br /&gt;
&lt;br /&gt;
local translit_title_table = {&lt;br /&gt;
	[&#039;ahl&#039;] = {&lt;br /&gt;
		[&#039;default&#039;] = &#039;Academy of the Hebrew Language transliteration&#039;,&lt;br /&gt;
		},&lt;br /&gt;
&lt;br /&gt;
	[&#039;ala&#039;] = {&lt;br /&gt;
		[&#039;default&#039;] = &#039;American Library Association – Library of Congress transliteration&#039;,&lt;br /&gt;
		},&lt;br /&gt;
&lt;br /&gt;
	[&#039;ala-lc&#039;] = {&lt;br /&gt;
		[&#039;default&#039;] = &#039;American Library Association – Library of Congress transliteration&#039;,&lt;br /&gt;
		},&lt;br /&gt;
&lt;br /&gt;
	[&#039;batr&#039;] = {&lt;br /&gt;
		[&#039;default&#039;] = &#039;Bikdash Arabic Transliteration Rules&#039;,&lt;br /&gt;
		},&lt;br /&gt;
&lt;br /&gt;
	[&#039;bgn/pcgn&#039;] = {&lt;br /&gt;
		[&#039;default&#039;] = &#039;Board on Geographic Names / Permanent Committee on Geographical Names transliteration&#039;,&lt;br /&gt;
		},&lt;br /&gt;
&lt;br /&gt;
	[&#039;din&#039;] = {&lt;br /&gt;
		[&#039;ar&#039;] = &#039;DIN 31635 Arabic&#039;,&lt;br /&gt;
		[&#039;fa&#039;] = &#039;DIN 31635 Arabic&#039;,&lt;br /&gt;
		[&#039;ku&#039;] = &#039;DIN 31635 Arabic&#039;,&lt;br /&gt;
		[&#039;ps&#039;] = &#039;DIN 31635 Arabic&#039;,&lt;br /&gt;
		[&#039;tg&#039;] = &#039;DIN 31635 Arabic&#039;,&lt;br /&gt;
		[&#039;ug&#039;] = &#039;DIN 31635 Arabic&#039;,&lt;br /&gt;
		[&#039;ur&#039;] = &#039;DIN 31635 Arabic&#039;,&lt;br /&gt;
		[&#039;arab&#039;] = &#039;DIN 31635 Arabic&#039;,&lt;br /&gt;
&lt;br /&gt;
		[&#039;default&#039;] = &#039;DIN transliteration&#039;,&lt;br /&gt;
		},&lt;br /&gt;
&lt;br /&gt;
	[&#039;eae&#039;] = {&lt;br /&gt;
		[&#039;default&#039;] = &#039;Encyclopaedia Aethiopica transliteration&#039;,&lt;br /&gt;
		},&lt;br /&gt;
&lt;br /&gt;
	[&#039;hepburn&#039;] = {&lt;br /&gt;
		[&#039;default&#039;] = &#039;Hepburn transliteration&#039;,&lt;br /&gt;
		},&lt;br /&gt;
&lt;br /&gt;
	[&#039;hunterian&#039;] = {&lt;br /&gt;
		[&#039;default&#039;] = &#039;Hunterian transliteration&#039;,&lt;br /&gt;
		},&lt;br /&gt;
&lt;br /&gt;
	[&#039;iast&#039;] = {&lt;br /&gt;
		[&#039;default&#039;] = &#039;International Alphabet of Sanskrit transliteration&#039;,&lt;br /&gt;
		},&lt;br /&gt;
&lt;br /&gt;
	[&#039;iso&#039;] = {																	-- when a transliteration standard is supplied&lt;br /&gt;
		[&#039;ab&#039;] = &#039;ISO 9 Cyrillic&#039;,&lt;br /&gt;
		[&#039;ba&#039;] = &#039;ISO 9 Cyrillic&#039;,&lt;br /&gt;
		[&#039;be&#039;] = &#039;ISO 9 Cyrillic&#039;,&lt;br /&gt;
		[&#039;bg&#039;] = &#039;ISO 9 Cyrillic&#039;,&lt;br /&gt;
		[&#039;kk&#039;] = &#039;ISO 9 Cyrillic&#039;,&lt;br /&gt;
		[&#039;ky&#039;] = &#039;ISO 9 Cyrillic&#039;,&lt;br /&gt;
		[&#039;mn&#039;] = &#039;ISO 9 Cyrillic&#039;,&lt;br /&gt;
		[&#039;ru&#039;] = &#039;ISO 9 Cyrillic&#039;,&lt;br /&gt;
		[&#039;tg&#039;] = &#039;ISO 9 Cyrillic&#039;,&lt;br /&gt;
		[&#039;uk&#039;] = &#039;ISO 9 Cyrillic&#039;,&lt;br /&gt;
		[&#039;bua&#039;] = &#039;ISO 9 Cyrillic&#039;,&lt;br /&gt;
		[&#039;sah&#039;] = &#039;ISO 9 Cyrillic&#039;,&lt;br /&gt;
		[&#039;tut&#039;] = &#039;ISO 9 Cyrillic&#039;,&lt;br /&gt;
		[&#039;xal&#039;] = &#039;ISO 9 Cyrillic&#039;,&lt;br /&gt;
		[&#039;cyrl&#039;] = &#039;ISO 9 Cyrillic&#039;,&lt;br /&gt;
&lt;br /&gt;
		[&#039;ar&#039;] = &#039;ISO 233 Arabic&#039;,&lt;br /&gt;
		[&#039;ku&#039;] = &#039;ISO 233 Arabic&#039;,&lt;br /&gt;
		[&#039;ps&#039;] = &#039;ISO 233 Arabic&#039;,&lt;br /&gt;
		[&#039;ug&#039;] = &#039;ISO 233 Arabic&#039;,&lt;br /&gt;
		[&#039;ur&#039;] = &#039;ISO 233 Arabic&#039;,&lt;br /&gt;
		[&#039;arab&#039;] = &#039;ISO 233 Arabic&#039;,&lt;br /&gt;
&lt;br /&gt;
		[&#039;he&#039;] = &#039;ISO 259 Hebrew&#039;,&lt;br /&gt;
		[&#039;yi&#039;] = &#039;ISO 259 Hebrew&#039;,&lt;br /&gt;
		[&#039;hebr&#039;] = &#039;ISO 259 Hebrew&#039;,&lt;br /&gt;
&lt;br /&gt;
		[&#039;el&#039;] = &#039;ISO 843 Greek&#039;,&lt;br /&gt;
		[&#039;grc&#039;] = &#039;ISO 843 Greek&#039;,&lt;br /&gt;
&lt;br /&gt;
		[&#039;ja&#039;] = &#039;ISO 3602 Japanese&#039;,&lt;br /&gt;
		[&#039;hira&#039;] = &#039;ISO 3602 Japanese&#039;,&lt;br /&gt;
		[&#039;hrkt&#039;] = &#039;ISO 3602 Japanese&#039;,&lt;br /&gt;
		[&#039;jpan&#039;] = &#039;ISO 3602 Japanese&#039;,&lt;br /&gt;
		[&#039;kana&#039;] = &#039;ISO 3602 Japanese&#039;,&lt;br /&gt;
&lt;br /&gt;
		[&#039;zh&#039;] = &#039;ISO 7098 Chinese&#039;,&lt;br /&gt;
		[&#039;chi&#039;] = &#039;ISO 7098 Chinese&#039;,&lt;br /&gt;
		[&#039;cmn&#039;] = &#039;ISO 7098 Chinese&#039;,&lt;br /&gt;
		[&#039;zho&#039;] = &#039;ISO 7098 Chinese&#039;,&lt;br /&gt;
--		[&#039;han&#039;] = &#039;ISO 7098 Chinese&#039;,											-- unicode alias of Hani? doesn&#039;t belong here? should be Hani?&lt;br /&gt;
		[&#039;hans&#039;] = &#039;ISO 7098 Chinese&#039;,&lt;br /&gt;
		[&#039;hant&#039;] = &#039;ISO 7098 Chinese&#039;,&lt;br /&gt;
&lt;br /&gt;
		[&#039;ka&#039;] = &#039;ISO 9984 Georgian&#039;,&lt;br /&gt;
		[&#039;kat&#039;] = &#039;ISO 9984 Georgian&#039;,&lt;br /&gt;
&lt;br /&gt;
		[&#039;arm&#039;] = &#039;ISO 9985 Armenian&#039;,&lt;br /&gt;
		[&#039;hy&#039;] = &#039;ISO 9985 Armenian&#039;,&lt;br /&gt;
&lt;br /&gt;
		[&#039;th&#039;] = &#039;ISO 11940 Thai&#039;,&lt;br /&gt;
		[&#039;tha&#039;] = &#039;ISO 11940 Thai&#039;,&lt;br /&gt;
&lt;br /&gt;
		[&#039;ko&#039;] = &#039;ISO 11941 Korean&#039;,&lt;br /&gt;
		[&#039;kor&#039;] = &#039;ISO 11941 Korean&#039;,&lt;br /&gt;
&lt;br /&gt;
		[&#039;awa&#039;] = &#039;ISO 15919 Indic&#039;,&lt;br /&gt;
		[&#039;bho&#039;] = &#039;ISO 15919 Indic&#039;,&lt;br /&gt;
		[&#039;bn&#039;] = &#039;ISO 15919 Indic&#039;,&lt;br /&gt;
		[&#039;bra&#039;] = &#039;ISO 15919 Indic&#039;,&lt;br /&gt;
		[&#039;doi&#039;] = &#039;ISO 15919 Indic&#039;,&lt;br /&gt;
		[&#039;dra&#039;] = &#039;ISO 15919 Indic&#039;,&lt;br /&gt;
		[&#039;gon&#039;] = &#039;ISO 15919 Indic&#039;,&lt;br /&gt;
		[&#039;gu&#039;] = &#039;ISO 15919 Indic&#039;,&lt;br /&gt;
		[&#039;hi&#039;] = &#039;ISO 15919 Indic&#039;,&lt;br /&gt;
		[&#039;hno&#039;] = &#039;ISO 15919 Indic&#039;,&lt;br /&gt;
		[&#039;inc&#039;] = &#039;ISO 15919 Indic&#039;,&lt;br /&gt;
		[&#039;kn&#039;] = &#039;ISO 15919 Indic&#039;,&lt;br /&gt;
		[&#039;kok&#039;] = &#039;ISO 15919 Indic&#039;,&lt;br /&gt;
		[&#039;ks&#039;] = &#039;ISO 15919 Indic&#039;,&lt;br /&gt;
		[&#039;mag&#039;] = &#039;ISO 15919 Indic&#039;,&lt;br /&gt;
		[&#039;mai&#039;] = &#039;ISO 15919 Indic&#039;,&lt;br /&gt;
		[&#039;ml&#039;] = &#039;ISO 15919 Indic&#039;,&lt;br /&gt;
		[&#039;mr&#039;] = &#039;ISO 15919 Indic&#039;,&lt;br /&gt;
		[&#039;ne&#039;] = &#039;ISO 15919 Indic&#039;,&lt;br /&gt;
		[&#039;new&#039;] = &#039;ISO 15919 Indic&#039;,&lt;br /&gt;
		[&#039;or&#039;] = &#039;ISO 15919 Indic&#039;,&lt;br /&gt;
		[&#039;pa&#039;] = &#039;ISO 15919 Indic&#039;,&lt;br /&gt;
		[&#039;pnb&#039;] = &#039;ISO 15919 Indic&#039;,&lt;br /&gt;
		[&#039;raj&#039;] = &#039;ISO 15919 Indic&#039;,&lt;br /&gt;
		[&#039;sa&#039;] = &#039;ISO 15919 Indic&#039;,&lt;br /&gt;
		[&#039;sat&#039;] = &#039;ISO 15919 Indic&#039;,&lt;br /&gt;
		[&#039;sd&#039;] = &#039;ISO 15919 Indic&#039;,&lt;br /&gt;
		[&#039;si&#039;] = &#039;ISO 15919 Indic&#039;,&lt;br /&gt;
		[&#039;skr&#039;] = &#039;ISO 15919 Indic&#039;,&lt;br /&gt;
		[&#039;ta&#039;] = &#039;ISO 15919 Indic&#039;,&lt;br /&gt;
		[&#039;tcy&#039;] = &#039;ISO 15919 Indic&#039;,&lt;br /&gt;
		[&#039;te&#039;] = &#039;ISO 15919 Indic&#039;,&lt;br /&gt;
		[&#039;beng&#039;] = &#039;ISO 15919 Indic&#039;,&lt;br /&gt;
		[&#039;brah&#039;] = &#039;ISO 15919 Indic&#039;,&lt;br /&gt;
		[&#039;deva&#039;] = &#039;ISO 15919 Indic&#039;,&lt;br /&gt;
		[&#039;gujr&#039;] = &#039;ISO 15919 Indic&#039;,&lt;br /&gt;
		[&#039;guru&#039;] = &#039;ISO 15919 Indic&#039;,&lt;br /&gt;
		[&#039;knda&#039;] = &#039;ISO 15919 Indic&#039;,&lt;br /&gt;
		[&#039;mlym&#039;] = &#039;ISO 15919 Indic&#039;,&lt;br /&gt;
		[&#039;orya&#039;] = &#039;ISO 15919 Indic&#039;,&lt;br /&gt;
		[&#039;sinh&#039;] = &#039;ISO 15919 Indic&#039;,&lt;br /&gt;
		[&#039;taml&#039;] = &#039;ISO 15919 Indic&#039;,&lt;br /&gt;
		[&#039;telu&#039;] = &#039;ISO 15919 Indic&#039;,&lt;br /&gt;
&lt;br /&gt;
		[&#039;default&#039;] = &#039;ISO transliteration&#039;,&lt;br /&gt;
		},&lt;br /&gt;
&lt;br /&gt;
	[&#039;jyutping&#039;] = {&lt;br /&gt;
		[&#039;default&#039;] = &#039;Jyutping transliteration&#039;,&lt;br /&gt;
		},&lt;br /&gt;
&lt;br /&gt;
	[&#039;mlcts&#039;] = {&lt;br /&gt;
		[&#039;default&#039;] = &#039;Myanmar Language Commission Transcription System&#039;,&lt;br /&gt;
		},&lt;br /&gt;
&lt;br /&gt;
	[&#039;mr&#039;] = {&lt;br /&gt;
		[&#039;default&#039;] = &#039;McCune–Reischauer transliteration&#039;,&lt;br /&gt;
		},&lt;br /&gt;
&lt;br /&gt;
	[&#039;nihon-shiki&#039;] = {&lt;br /&gt;
		[&#039;default&#039;] = &#039;Nihon-shiki transliteration&#039;,&lt;br /&gt;
		},&lt;br /&gt;
&lt;br /&gt;
	[&#039;no_std&#039;] = {																-- when no transliteration standard is supplied&lt;br /&gt;
		[&#039;akk&#039;] = &#039;Semitic transliteration&#039;,&lt;br /&gt;
		[&#039;sem&#039;] = &#039;Semitic transliteration&#039;,&lt;br /&gt;
		[&#039;phnx&#039;] = &#039;Semitic transliteration&#039;,&lt;br /&gt;
		[&#039;xsux&#039;] = &#039;Cuneiform transliteration&#039;,&lt;br /&gt;
		},&lt;br /&gt;
&lt;br /&gt;
	[&#039;pinyin&#039;] = {&lt;br /&gt;
		[&#039;default&#039;] = &#039;Pinyin transliteration&#039;,&lt;br /&gt;
		},&lt;br /&gt;
&lt;br /&gt;
	[&#039;rr&#039;] = {&lt;br /&gt;
		[&#039;default&#039;] = &#039;Revised Romanization of Korean transliteration&#039;,&lt;br /&gt;
		},&lt;br /&gt;
&lt;br /&gt;
	[&#039;rtgs&#039;] = {&lt;br /&gt;
		[&#039;default&#039;] = &#039;Royal Thai General System of Transcription&#039;,&lt;br /&gt;
		},&lt;br /&gt;
	&lt;br /&gt;
	[&#039;satts&#039;] = {&lt;br /&gt;
		[&#039;default&#039;] = &#039;Standard Arabic Technical Transliteration System transliteration&#039;,&lt;br /&gt;
		},&lt;br /&gt;
&lt;br /&gt;
	[&#039;scientific&#039;] = {&lt;br /&gt;
		[&#039;default&#039;] = &#039;scientific transliteration&#039;,&lt;br /&gt;
		},&lt;br /&gt;
&lt;br /&gt;
	[&#039;ukrainian&#039;] = {&lt;br /&gt;
		[&#039;default&#039;] = &#039;Ukrainian National system of romanization&#039;,&lt;br /&gt;
		},&lt;br /&gt;
&lt;br /&gt;
	[&#039;ungegn&#039;] = {&lt;br /&gt;
		[&#039;default&#039;] = &#039;United Nations Group of Experts on Geographical Names transliteration&#039;,&lt;br /&gt;
		},&lt;br /&gt;
&lt;br /&gt;
	[&#039;wadegile&#039;] = {&lt;br /&gt;
		[&#039;default&#039;] = &#039;Wade–Giles transliteration&#039;,&lt;br /&gt;
		},&lt;br /&gt;
&lt;br /&gt;
	[&#039;wehr&#039;] = {&lt;br /&gt;
		[&#039;default&#039;] = &#039;Hans Wehr transliteration&#039;,&lt;br /&gt;
		},&lt;br /&gt;
	[&#039;yaleko&#039;] = {&lt;br /&gt;
		[&#039;default&#039;] = &#039;Yale romanization of Korean&#039;,&lt;br /&gt;
	}&lt;br /&gt;
};&lt;br /&gt;
&lt;br /&gt;
--[[--------------------------&amp;lt; E X P O R T S &amp;gt;----------------------------------------------------------------&lt;br /&gt;
]]&lt;br /&gt;
&lt;br /&gt;
return&lt;br /&gt;
	{&lt;br /&gt;
	this_wiki_lang_tag = this_wiki_lang_tag,&lt;br /&gt;
	this_wiki_lang_dir = lang_obj:getDir(),										-- wiki&#039;s language direction&lt;br /&gt;
	&lt;br /&gt;
	article_name = article_name,&lt;br /&gt;
	lang_name_table = lang_name_table_t,&lt;br /&gt;
	override = override,&lt;br /&gt;
	rtl_scripts = rtl_scripts,&lt;br /&gt;
	special_tags_table = special_tags_table,&lt;br /&gt;
	translit_title_table = translit_title_table,&lt;br /&gt;
	};&lt;/div&gt;</summary>
		<author><name>DoubleCircle</name></author>
	</entry>
	<entry>
		<id>https://9on0wiki.gunmu.dns.navy/index.php?title=Module:Unicode_data&amp;diff=712</id>
		<title>Module:Unicode data</title>
		<link rel="alternate" type="text/html" href="https://9on0wiki.gunmu.dns.navy/index.php?title=Module:Unicode_data&amp;diff=712"/>
		<updated>2026-08-26T10:58:54Z</updated>

		<summary type="html">&lt;p&gt;DoubleCircle：​导入1个版本&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;local p = {}&lt;br /&gt;
&lt;br /&gt;
local floor = math.floor&lt;br /&gt;
&lt;br /&gt;
local function errorf(level, ...)&lt;br /&gt;
	if type(level) == &amp;quot;number&amp;quot; then&lt;br /&gt;
		return error(string.format(...), level + 1)&lt;br /&gt;
	else -- level is actually the format string.&lt;br /&gt;
		return error(string.format(level, ...), 2)&lt;br /&gt;
	end&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
local function binary_range_search(codepoint, ranges)&lt;br /&gt;
	local low, mid, high&lt;br /&gt;
	low, high = 1, ranges.length or require &amp;quot;Module:TableTools&amp;quot;.length(ranges)&lt;br /&gt;
	while low &amp;lt;= high do&lt;br /&gt;
		mid = floor((low + high) / 2)&lt;br /&gt;
		local range = ranges[mid]&lt;br /&gt;
		if codepoint &amp;lt; range[1] then&lt;br /&gt;
			high = mid - 1&lt;br /&gt;
		elseif codepoint &amp;lt;= range[2] then&lt;br /&gt;
			return range, mid&lt;br /&gt;
		else&lt;br /&gt;
			low = mid + 1&lt;br /&gt;
		end&lt;br /&gt;
	end&lt;br /&gt;
	return nil, mid&lt;br /&gt;
end&lt;br /&gt;
p.binary_range_search = binary_range_search&lt;br /&gt;
&lt;br /&gt;
--[[&lt;br /&gt;
local function linear_range_search(codepoint, ranges)&lt;br /&gt;
	for i, range in ipairs(ranges) do&lt;br /&gt;
		if range[1] &amp;lt;= codepoint and codepoint &amp;lt;= range[2] then&lt;br /&gt;
			return range&lt;br /&gt;
		end&lt;br /&gt;
	end&lt;br /&gt;
end&lt;br /&gt;
--]]&lt;br /&gt;
&lt;br /&gt;
-- Load a module by indexing &amp;quot;loader&amp;quot; with the name of the module minus the&lt;br /&gt;
-- &amp;quot;Module:Unicode data/&amp;quot; part. For instance, loader.blocks returns&lt;br /&gt;
-- [[Module:Unicode data/blocks]]. If a module cannot be loaded, false will be&lt;br /&gt;
-- returned.&lt;br /&gt;
local loader = setmetatable({}, {&lt;br /&gt;
	__index = function (self, key)&lt;br /&gt;
		local success, data = pcall(mw.loadData, &amp;quot;Module:Unicode data/&amp;quot; .. key)&lt;br /&gt;
		if not success then&lt;br /&gt;
			data = false&lt;br /&gt;
		end&lt;br /&gt;
		self[key] = data&lt;br /&gt;
		return data&lt;br /&gt;
	end&lt;br /&gt;
})&lt;br /&gt;
&lt;br /&gt;
-- For the algorithm used to generate Hangul Syllable names,&lt;br /&gt;
-- see &amp;quot;Hangul Syllable Name Generation&amp;quot; in section 3.12 of the&lt;br /&gt;
-- Unicode Specification:&lt;br /&gt;
-- https://www.unicode.org/versions/Unicode11.0.0/ch03.pdf&lt;br /&gt;
local name_hooks = {&lt;br /&gt;
	{     0x00,     0x1F, &amp;quot;&amp;lt;control-%04X&amp;gt;&amp;quot; }, -- C0 control characters&lt;br /&gt;
	{     0x7F,     0x9F, &amp;quot;&amp;lt;control-%04X&amp;gt;&amp;quot; }, -- DEL and C1 control characters&lt;br /&gt;
	{   0x3400,   0x4DBF, &amp;quot;CJK UNIFIED IDEOGRAPH-%04X&amp;quot; }, -- CJK Ideograph Extension A&lt;br /&gt;
	{   0x4E00,   0x9FFF, &amp;quot;CJK UNIFIED IDEOGRAPH-%04X&amp;quot; }, -- CJK Ideograph&lt;br /&gt;
	{   0xAC00,   0xD7A3, function (codepoint) -- Hangul Syllables&lt;br /&gt;
		local Hangul_data = loader.Hangul&lt;br /&gt;
		local syllable_index = codepoint - 0xAC00&lt;br /&gt;
&lt;br /&gt;
		return (&amp;quot;HANGUL SYLLABLE %s%s%s&amp;quot;):format(&lt;br /&gt;
			Hangul_data.leads[floor(syllable_index / Hangul_data.final_count)],&lt;br /&gt;
			Hangul_data.vowels[floor((syllable_index % Hangul_data.final_count)&lt;br /&gt;
				/ Hangul_data.trail_count)],&lt;br /&gt;
			Hangul_data.trails[syllable_index % Hangul_data.trail_count]&lt;br /&gt;
		)&lt;br /&gt;
	end },&lt;br /&gt;
	-- High Surrogates, High Private Use Surrogates, Low Surrogates&lt;br /&gt;
	{   0xD800,   0xDFFF, &amp;quot;&amp;lt;surrogate-%04X&amp;gt;&amp;quot; },&lt;br /&gt;
	{   0xE000,   0xF8FF, &amp;quot;&amp;lt;private-use-%04X&amp;gt;&amp;quot; }, -- Private Use&lt;br /&gt;
	-- CJK Compatibility Ideographs&lt;br /&gt;
	{   0xF900,   0xFA6D, &amp;quot;CJK COMPATIBILITY IDEOGRAPH-%04X&amp;quot; },&lt;br /&gt;
	{   0xFA70,   0xFAD9, &amp;quot;CJK COMPATIBILITY IDEOGRAPH-%04X&amp;quot; },&lt;br /&gt;
	{  0x17000,  0x187F7, &amp;quot;TANGUT IDEOGRAPH-%04X&amp;quot; }, -- Tangut Ideograph&lt;br /&gt;
	{  0x18800,  0x18AFF, function (codepoint)&lt;br /&gt;
		return (&amp;quot;TANGUT COMPONENT-%03d&amp;quot;):format(codepoint - 0x187FF)&lt;br /&gt;
	end },&lt;br /&gt;
	{  0x18D00,  0x18D08, &amp;quot;TANGUT IDEOGRAPH-%04X&amp;quot; }, -- Tangut Ideograph Supplement&lt;br /&gt;
	{  0x1B170,  0x1B2FB, &amp;quot;NUSHU CHARACTER-%04X&amp;quot; }, -- Nushu&lt;br /&gt;
	{  0x20000,  0x2A6DF, &amp;quot;CJK UNIFIED IDEOGRAPH-%04X&amp;quot; }, -- CJK Ideograph Extension B&lt;br /&gt;
	{  0x2A700,  0x2B739, &amp;quot;CJK UNIFIED IDEOGRAPH-%04X&amp;quot; }, -- CJK Ideograph Extension C&lt;br /&gt;
	{  0x2B740,  0x2B81D, &amp;quot;CJK UNIFIED IDEOGRAPH-%04X&amp;quot; }, -- CJK Ideograph Extension D&lt;br /&gt;
	{  0x2B820,  0x2CEA1, &amp;quot;CJK UNIFIED IDEOGRAPH-%04X&amp;quot; }, -- CJK Ideograph Extension E&lt;br /&gt;
	{  0x2CEB0,  0x2EBE0, &amp;quot;CJK UNIFIED IDEOGRAPH-%04X&amp;quot; }, -- CJK Ideograph Extension F&lt;br /&gt;
	-- CJK Compatibility Ideographs Supplement (Supplementary Ideographic Plane)&lt;br /&gt;
	{  0x2F800,  0x2FA1D, &amp;quot;CJK COMPATIBILITY IDEOGRAPH-%04X&amp;quot; },&lt;br /&gt;
	{  0xE0100,  0xE01EF, function (codepoint) -- Variation Selectors Supplement&lt;br /&gt;
		return (&amp;quot;VARIATION SELECTOR-%d&amp;quot;):format(codepoint - 0xE0100 + 17)&lt;br /&gt;
	end},&lt;br /&gt;
	{  0x30000,  0x3134A, &amp;quot;CJK UNIFIED IDEOGRAPH-%04X&amp;quot; }, -- CJK Ideograph Extension G&lt;br /&gt;
	{  0x31350,  0x323AF, &amp;quot;CJK UNIFIED IDEOGRAPH-%04X&amp;quot; }, -- CJK Ideograph Extension H&lt;br /&gt;
	{  0xF0000,  0xFFFFD, &amp;quot;&amp;lt;private-use-%04X&amp;gt;&amp;quot; }, -- Plane 15 Private Use&lt;br /&gt;
	{ 0x100000, 0x10FFFD, &amp;quot;&amp;lt;private-use-%04X&amp;gt;&amp;quot; }  -- Plane 16 Private Use&lt;br /&gt;
}&lt;br /&gt;
name_hooks.length = #name_hooks&lt;br /&gt;
&lt;br /&gt;
local name_range_cache&lt;br /&gt;
&lt;br /&gt;
local function generate_name(data, codepoint)&lt;br /&gt;
	if type(data) == &amp;quot;string&amp;quot; then&lt;br /&gt;
		return data:format(codepoint)&lt;br /&gt;
	else&lt;br /&gt;
		return data(codepoint)&lt;br /&gt;
	end&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
--[[&lt;br /&gt;
-- Checks that the code point is a number and in range.&lt;br /&gt;
-- Does not check whether code point is an integer.&lt;br /&gt;
-- Not used&lt;br /&gt;
local function check_codepoint(funcName, argIdx, val)&lt;br /&gt;
	require &#039;libraryUtil&#039;.checkType(funcName, argIdx, val, &#039;number&#039;)&lt;br /&gt;
	if codepoint &amp;lt; 0 or 0x10FFFF &amp;lt; codepoint then&lt;br /&gt;
		errorf(&amp;quot;Codepoint %04X out of range&amp;quot;, codepoint)&lt;br /&gt;
	end&lt;br /&gt;
end&lt;br /&gt;
--]]&lt;br /&gt;
&lt;br /&gt;
-- https://www.unicode.org/versions/Unicode11.0.0/ch04.pdf, section 4.8&lt;br /&gt;
function p.lookup_name(codepoint)&lt;br /&gt;
	-- U+FDD0-U+FDEF and all code points ending in FFFE or FFFF are Unassigned&lt;br /&gt;
	-- (Cn) and specifically noncharacters:&lt;br /&gt;
	-- https://www.unicode.org/faq/private_use.html#nonchar4&lt;br /&gt;
	if 0xFDD0 &amp;lt;= codepoint and (codepoint &amp;lt;= 0xFDEF&lt;br /&gt;
			or floor(codepoint % 0x10000) &amp;gt;= 0xFFFE) then&lt;br /&gt;
		return (&amp;quot;&amp;lt;noncharacter-%04X&amp;gt;&amp;quot;):format(codepoint)&lt;br /&gt;
	end&lt;br /&gt;
&lt;br /&gt;
	if name_range_cache -- Check if previously used &amp;quot;name hook&amp;quot; applies to this code point.&lt;br /&gt;
			and codepoint &amp;gt;= name_range_cache[1]&lt;br /&gt;
			and codepoint &amp;lt;= name_range_cache[2] then&lt;br /&gt;
		return generate_name(name_range_cache[3], codepoint)&lt;br /&gt;
	end&lt;br /&gt;
	&lt;br /&gt;
	local range = binary_range_search(codepoint, name_hooks)&lt;br /&gt;
	if range then&lt;br /&gt;
		name_range_cache = range&lt;br /&gt;
		return generate_name(range[3], codepoint)&lt;br /&gt;
	end&lt;br /&gt;
&lt;br /&gt;
	local data = loader[(&#039;names/%03X&#039;):format(codepoint / 0x1000)]&lt;br /&gt;
	&lt;br /&gt;
	if data and data[codepoint] then&lt;br /&gt;
		return data[codepoint]&lt;br /&gt;
	&lt;br /&gt;
	-- Unassigned (Cn) consists of noncharacters and reserved characters.&lt;br /&gt;
	-- The character has been established not to be a noncharacter,&lt;br /&gt;
	-- and if it were assigned, its name would already been retrieved,&lt;br /&gt;
	-- so it must be reserved.&lt;br /&gt;
	else&lt;br /&gt;
		return (&amp;quot;&amp;lt;reserved-%04X&amp;gt;&amp;quot;):format(codepoint)&lt;br /&gt;
	end&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
--[[&lt;br /&gt;
-- No image data modules on Wikipedia yet.&lt;br /&gt;
function p.lookup_image(codepoint)&lt;br /&gt;
	local data = loader[(&#039;images/%03X&#039;):format(codepoint / 0x1000)]&lt;br /&gt;
	&lt;br /&gt;
	if data then&lt;br /&gt;
		return data[codepoint]&lt;br /&gt;
	end&lt;br /&gt;
end&lt;br /&gt;
--]]&lt;br /&gt;
&lt;br /&gt;
local planes = {&lt;br /&gt;
	[ 0] = &amp;quot;Basic Multilingual Plane&amp;quot;;&lt;br /&gt;
	[ 1] = &amp;quot;Supplementary Multilingual Plane&amp;quot;;&lt;br /&gt;
	[ 2] = &amp;quot;Supplementary Ideographic Plane&amp;quot;;&lt;br /&gt;
	[ 3] = &amp;quot;Tertiary Ideographic Plane&amp;quot;;&lt;br /&gt;
	[14] = &amp;quot;Supplementary Special-purpose Plane&amp;quot;;&lt;br /&gt;
	[15] = &amp;quot;Supplementary Private Use Area-A&amp;quot;;&lt;br /&gt;
	[16] = &amp;quot;Supplementary Private Use Area-B&amp;quot;;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
-- Load [[Module:Unicode data/blocks]] if needed and assign it to this variable.&lt;br /&gt;
local blocks&lt;br /&gt;
&lt;br /&gt;
local function block_iter(blocks, i)&lt;br /&gt;
	i = i + 1&lt;br /&gt;
	local data = blocks[i]&lt;br /&gt;
	if data then&lt;br /&gt;
		 -- Unpack doesn&#039;t work on tables loaded with mw.loadData.&lt;br /&gt;
		return i, data[1], data[2], data[3]&lt;br /&gt;
	end&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
-- An ipairs-type iterator generator for the list of blocks.&lt;br /&gt;
function p.enum_blocks()&lt;br /&gt;
	local blocks = loader.blocks&lt;br /&gt;
	return block_iter, blocks, 0&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
function p.lookup_plane(codepoint)&lt;br /&gt;
	local i = floor(codepoint / 0x10000)&lt;br /&gt;
	return planes[i] or (&amp;quot;Plane %u&amp;quot;):format(i)&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
function p.lookup_block(codepoint)&lt;br /&gt;
	local blocks = loader.blocks&lt;br /&gt;
	local range = binary_range_search(codepoint, blocks)&lt;br /&gt;
	if range then&lt;br /&gt;
		return range[3]&lt;br /&gt;
	else&lt;br /&gt;
		return &amp;quot;No Block&amp;quot;&lt;br /&gt;
	end&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
function p.get_block_info(name)&lt;br /&gt;
	for i, block in ipairs(loader.blocks) do&lt;br /&gt;
		if block[3] == name then&lt;br /&gt;
			return block&lt;br /&gt;
		end&lt;br /&gt;
	end&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
function p.is_valid_pagename(pagename)&lt;br /&gt;
	local has_nonws = false&lt;br /&gt;
&lt;br /&gt;
	for cp in mw.ustring.gcodepoint(pagename) do&lt;br /&gt;
		if (cp == 0x0023) -- #&lt;br /&gt;
		or (cp == 0x005B) -- [&lt;br /&gt;
		or (cp == 0x005D) -- ]&lt;br /&gt;
		or (cp == 0x007B) -- {&lt;br /&gt;
		or (cp == 0x007C) -- |&lt;br /&gt;
		or (cp == 0x007D) -- }&lt;br /&gt;
		or (cp == 0x180E) -- MONGOLIAN VOWEL SEPARATOR&lt;br /&gt;
		or ((cp &amp;gt;= 0x2000) and (cp &amp;lt;= 0x200A)) -- spaces in General Punctuation block&lt;br /&gt;
		or (cp == 0xFFFD) -- REPLACEMENT CHARACTER&lt;br /&gt;
		then&lt;br /&gt;
			return false&lt;br /&gt;
		end&lt;br /&gt;
&lt;br /&gt;
		local printable, result = p.is_printable(cp)&lt;br /&gt;
		if not printable then&lt;br /&gt;
			return false&lt;br /&gt;
		end&lt;br /&gt;
&lt;br /&gt;
		if result ~= &amp;quot;space-separator&amp;quot; then&lt;br /&gt;
			has_nonws = true&lt;br /&gt;
		end&lt;br /&gt;
	end&lt;br /&gt;
&lt;br /&gt;
	return has_nonws&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
local function manual_unpack(what, from)&lt;br /&gt;
	if what[from + 1] == nil then&lt;br /&gt;
		return what[from]&lt;br /&gt;
	end&lt;br /&gt;
	&lt;br /&gt;
	local result = {}&lt;br /&gt;
	from = from or 1&lt;br /&gt;
	for i, item in ipairs(what) do&lt;br /&gt;
		if i &amp;gt;= from then&lt;br /&gt;
			table.insert(result, item)&lt;br /&gt;
		end&lt;br /&gt;
	end&lt;br /&gt;
	return unpack(result)&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
local function compare_ranges(range1, range2)&lt;br /&gt;
	return range1[1] &amp;lt; range2[1]&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
-- Creates a function to look up data in a module that contains &amp;quot;singles&amp;quot; (a&lt;br /&gt;
-- code point-to-data map) and &amp;quot;ranges&amp;quot; (an array containing arrays that contain&lt;br /&gt;
-- the low and high code points of a range and the data associated with that&lt;br /&gt;
-- range).&lt;br /&gt;
-- &amp;quot;loader&amp;quot; loads and returns the &amp;quot;singles&amp;quot; and &amp;quot;ranges&amp;quot; tables.&lt;br /&gt;
-- &amp;quot;match_func&amp;quot; is passed the code point and either the data or the &amp;quot;dots&amp;quot;, and&lt;br /&gt;
-- generates the final result of the function.&lt;br /&gt;
-- The varargs (&amp;quot;dots&amp;quot;) describes the default data to be returned if there wasn&#039;t&lt;br /&gt;
-- a match.&lt;br /&gt;
-- In case the function is used more than once, &amp;quot;cache&amp;quot; saves ranges that have&lt;br /&gt;
-- already been found to match, or a range whose data is the default if there&lt;br /&gt;
-- was no match.&lt;br /&gt;
local function memo_lookup(data_module_subpage, match_func, ...)&lt;br /&gt;
	local dots = { ... }&lt;br /&gt;
	local cache = {}&lt;br /&gt;
	local singles, ranges&lt;br /&gt;
&lt;br /&gt;
	return function (codepoint)&lt;br /&gt;
		if not singles then&lt;br /&gt;
			local data_module = loader[data_module_subpage]&lt;br /&gt;
			singles, ranges = data_module.singles, data_module.ranges&lt;br /&gt;
		end&lt;br /&gt;
&lt;br /&gt;
		if singles[codepoint] then&lt;br /&gt;
			return match_func(codepoint, singles[codepoint])&lt;br /&gt;
		end&lt;br /&gt;
&lt;br /&gt;
		local range = binary_range_search(codepoint, cache)&lt;br /&gt;
		if range then&lt;br /&gt;
			return match_func(codepoint, manual_unpack(range, 3))&lt;br /&gt;
		end&lt;br /&gt;
		&lt;br /&gt;
		local range, index = binary_range_search(codepoint, ranges)&lt;br /&gt;
		if range then&lt;br /&gt;
			table.insert(cache, range)&lt;br /&gt;
			table.sort(cache, compare_ranges)&lt;br /&gt;
			return match_func(codepoint, manual_unpack(range, 3))&lt;br /&gt;
		end&lt;br /&gt;
		&lt;br /&gt;
		if ranges[index] then&lt;br /&gt;
			local dots_range&lt;br /&gt;
			if codepoint &amp;gt; ranges[index][2] then&lt;br /&gt;
				dots_range = {&lt;br /&gt;
					ranges[index][2] + 1,&lt;br /&gt;
					ranges[index + 1] and ranges[index + 1][1] - 1 or 0x10FFFF,&lt;br /&gt;
					unpack(dots)&lt;br /&gt;
				}&lt;br /&gt;
			else -- codepoint &amp;lt; range[index][1]&lt;br /&gt;
				dots_range = {&lt;br /&gt;
					ranges[index - 1] and ranges[index - 1][2] + 1 or 0,&lt;br /&gt;
					ranges[index][1] - 1,&lt;br /&gt;
					unpack(dots)&lt;br /&gt;
				}&lt;br /&gt;
			end&lt;br /&gt;
			table.sort(cache, compare_ranges)&lt;br /&gt;
		end&lt;br /&gt;
		&lt;br /&gt;
		return match_func(codepoint)&lt;br /&gt;
	end&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
-- Get a code point&#039;s combining class value in [[Module:Unicode data/combining]],&lt;br /&gt;
-- and return whether this value is not zero. Zero is assigned as the default&lt;br /&gt;
-- if the combining class value is not found in this data module.&lt;br /&gt;
-- That is, return true if character is combining, or false if it is not.&lt;br /&gt;
-- See https://www.unicode.org/reports/tr44/#Canonical_Combining_Class_Values for&lt;br /&gt;
-- more information.&lt;br /&gt;
p.is_combining = memo_lookup(&lt;br /&gt;
	&amp;quot;combining&amp;quot;,&lt;br /&gt;
	function (codepoint, combining_class)&lt;br /&gt;
		return combining_class and combining_class ~= 0 or false&lt;br /&gt;
	end,&lt;br /&gt;
	0)&lt;br /&gt;
&lt;br /&gt;
function p.add_dotted_circle(str)&lt;br /&gt;
	return (mw.ustring.gsub(str, &amp;quot;.&amp;quot;,&lt;br /&gt;
		function(char)&lt;br /&gt;
			if p.is_combining(mw.ustring.codepoint(char)) then&lt;br /&gt;
				return &#039;◌&#039; .. char&lt;br /&gt;
			end&lt;br /&gt;
		end))&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
local lookup_control = memo_lookup(&lt;br /&gt;
	&amp;quot;control&amp;quot;,&lt;br /&gt;
	function (codepoint, ccc)&lt;br /&gt;
		return ccc or &amp;quot;assigned&amp;quot;&lt;br /&gt;
	end,&lt;br /&gt;
	&amp;quot;assigned&amp;quot;)&lt;br /&gt;
p.lookup_control = lookup_control&lt;br /&gt;
&lt;br /&gt;
function p.is_assigned(codepoint)&lt;br /&gt;
	return lookup_control(codepoint) ~= &amp;quot;unassigned&amp;quot;&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
function p.is_printable(codepoint)&lt;br /&gt;
	local result = lookup_control(codepoint)&lt;br /&gt;
	return (result == &amp;quot;assigned&amp;quot;) or (result == &amp;quot;space-separator&amp;quot;), result&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
function p.is_whitespace(codepoint)&lt;br /&gt;
	local result = lookup_control(codepoint)&lt;br /&gt;
	return (result == &amp;quot;space-separator&amp;quot;), result&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
p.lookup_category = memo_lookup(&lt;br /&gt;
	&amp;quot;category&amp;quot;,&lt;br /&gt;
	function (codepoint, category)&lt;br /&gt;
		return category&lt;br /&gt;
	end,&lt;br /&gt;
	&amp;quot;Cn&amp;quot;)&lt;br /&gt;
&lt;br /&gt;
local lookup_script = memo_lookup(&lt;br /&gt;
	&amp;quot;scripts&amp;quot;,&lt;br /&gt;
	function (codepoint, script_code)&lt;br /&gt;
		return script_code or &#039;Zzzz&#039;&lt;br /&gt;
	end,&lt;br /&gt;
	&amp;quot;Zzzz&amp;quot;)&lt;br /&gt;
p.lookup_script = lookup_script&lt;br /&gt;
&lt;br /&gt;
function p.get_best_script(str)&lt;br /&gt;
	-- Check type of argument, because mw.text.decode coerces numbers to strings!&lt;br /&gt;
	require &amp;quot;libraryUtil&amp;quot;.checkType(&amp;quot;get_best_script&amp;quot;, 1, str, &amp;quot;string&amp;quot;)&lt;br /&gt;
	&lt;br /&gt;
	-- Convert HTML character references (including named character references,&lt;br /&gt;
	-- or character entities) to characters.&lt;br /&gt;
	str = mw.text.decode(str, true)&lt;br /&gt;
	&lt;br /&gt;
	local scripts = {}&lt;br /&gt;
	for codepoint in mw.ustring.gcodepoint(str) do&lt;br /&gt;
		local script = lookup_script(codepoint)&lt;br /&gt;
		&lt;br /&gt;
		-- Ignore &amp;quot;Inherited&amp;quot;, &amp;quot;Undetermined&amp;quot;, or &amp;quot;Uncoded&amp;quot; scripts.&lt;br /&gt;
		if not (script == &amp;quot;Zyyy&amp;quot; or script == &amp;quot;Zinh&amp;quot; or script == &amp;quot;Zzzz&amp;quot;) then&lt;br /&gt;
			scripts[script] = true&lt;br /&gt;
		end&lt;br /&gt;
	end&lt;br /&gt;
	&lt;br /&gt;
	-- If scripts does not contain two or more keys,&lt;br /&gt;
	-- return first and only key (script code) in table.&lt;br /&gt;
	if not next(scripts, next(scripts)) then&lt;br /&gt;
		return next(scripts)&lt;br /&gt;
	end -- else return majority script, or else &amp;quot;Zzzz&amp;quot;?&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
function p.is_Latin(str)&lt;br /&gt;
	require &amp;quot;libraryUtil&amp;quot;.checkType(&amp;quot;get_best_script&amp;quot;, 1, str, &amp;quot;string&amp;quot;)&lt;br /&gt;
	str = mw.text.decode(str, true)&lt;br /&gt;
	&lt;br /&gt;
	-- Search for the leading bytes that introduce the UTF-8 encoding of the&lt;br /&gt;
	-- code points U+0340-U+10FFFF. If they are not found and there is at least&lt;br /&gt;
	-- one Latin-script character, the string counts as Latin, because the rest&lt;br /&gt;
	-- of the characters can only be Zyyy, Zinh, and Zzzz.&lt;br /&gt;
	-- The only scripts found below U+0370 (the first code point of the Greek&lt;br /&gt;
	-- and Coptic block) are Latn, Zyyy, Zinh, and Zzzz.&lt;br /&gt;
	-- See the codepage in the [[UTF-8]] article.&lt;br /&gt;
	if not str:find &amp;quot;[\205-\244]&amp;quot; then&lt;br /&gt;
		for codepoint in mw.ustring.gcodepoint(str) do&lt;br /&gt;
			if lookup_script(codepoint) == &amp;quot;Latn&amp;quot; then&lt;br /&gt;
				return true&lt;br /&gt;
			end&lt;br /&gt;
		end&lt;br /&gt;
	end&lt;br /&gt;
	&lt;br /&gt;
	local Latn = false&lt;br /&gt;
	&lt;br /&gt;
	for codepoint in mw.ustring.gcodepoint(str) do&lt;br /&gt;
		local script = lookup_script(codepoint)&lt;br /&gt;
		&lt;br /&gt;
		if script == &amp;quot;Latn&amp;quot; then&lt;br /&gt;
			Latn = true&lt;br /&gt;
		elseif not (script == &amp;quot;Zyyy&amp;quot; or script == &amp;quot;Zinh&amp;quot;&lt;br /&gt;
				or script == &amp;quot;Zzzz&amp;quot;) then&lt;br /&gt;
			return false&lt;br /&gt;
		end&lt;br /&gt;
	end&lt;br /&gt;
	&lt;br /&gt;
	return Latn&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
-- Checks that a string contains only characters belonging to right-to-left&lt;br /&gt;
-- scripts, or characters of ignorable scripts.&lt;br /&gt;
function p.is_rtl(str)&lt;br /&gt;
	require &amp;quot;libraryUtil&amp;quot;.checkType(&amp;quot;get_best_script&amp;quot;, 1, str, &amp;quot;string&amp;quot;)&lt;br /&gt;
	str = mw.text.decode(str, true)&lt;br /&gt;
	&lt;br /&gt;
	-- Search for the leading bytes that introduce the UTF-8 encoding of the&lt;br /&gt;
	-- code points U+0580-U+10FFFF. If they are not found, the string can only&lt;br /&gt;
	-- have characters from a left-to-right script, because the first code point&lt;br /&gt;
	-- in a right-to-left script is U+0591, in the Hebrew block.&lt;br /&gt;
	if not str:find &amp;quot;[\214-\244]&amp;quot; then&lt;br /&gt;
		return false&lt;br /&gt;
	end&lt;br /&gt;
	&lt;br /&gt;
	local result = false&lt;br /&gt;
	local rtl = loader.scripts.rtl&lt;br /&gt;
	for codepoint in mw.ustring.gcodepoint(str) do&lt;br /&gt;
		local script = lookup_script(codepoint)&lt;br /&gt;
		&lt;br /&gt;
		if rtl[script] then&lt;br /&gt;
			result = true&lt;br /&gt;
		elseif not (script == &amp;quot;Zyyy&amp;quot; or script == &amp;quot;Zinh&amp;quot;&lt;br /&gt;
				or script == &amp;quot;Zzzz&amp;quot;) then&lt;br /&gt;
			return false&lt;br /&gt;
		end&lt;br /&gt;
	end&lt;br /&gt;
	&lt;br /&gt;
	return result&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
--[[--------------------------&amp;lt; I S _ R T L _ F R A M E &amp;gt;------------------------------------------------------&lt;br /&gt;
&lt;br /&gt;
external entry from an {{#invoke:}} to determine if a string of text is rtl.  Strips html and html-like tags so&lt;br /&gt;
that those tags don&#039;t corrupt the is-rtl-is-not-rtl determination; this added for the cases where the rtl text&lt;br /&gt;
has &amp;lt;br /&amp;gt; tags.&lt;br /&gt;
&lt;br /&gt;
]]&lt;br /&gt;
&lt;br /&gt;
function p.is_rtl_frame (frame)&lt;br /&gt;
	local str = frame.args[1];													-- get the string from the {{#invoke:}} frame&lt;br /&gt;
	str = str:gsub (&#039;%b&amp;lt;&amp;gt;&#039;, &#039;&#039;);												-- strip any html and html-like tags&lt;br /&gt;
	return p.is_rtl (str);														-- return if whatever remains rtl; false else&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
local function get_codepoint(args, arg)&lt;br /&gt;
	local codepoint_string = args[arg]&lt;br /&gt;
		or errorf(2, &amp;quot;Parameter %s is required&amp;quot;, tostring(arg))&lt;br /&gt;
	local codepoint = tonumber(codepoint_string, 16)&lt;br /&gt;
		or errorf(2, &amp;quot;Parameter %s is not a code point in hexadecimal base&amp;quot;,&lt;br /&gt;
			tostring(arg))&lt;br /&gt;
	if not (0 &amp;lt;= codepoint and codepoint &amp;lt;= 0x10FFFF) then&lt;br /&gt;
		errorf(2, &amp;quot;code point in parameter %s out of range&amp;quot;, tostring(arg))&lt;br /&gt;
	end&lt;br /&gt;
	return codepoint&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
local function get_func(args, arg, prefix)&lt;br /&gt;
	local suffix = args[arg]&lt;br /&gt;
		or errorf(2, &amp;quot;Parameter %s is required&amp;quot;, tostring(arg))&lt;br /&gt;
	suffix = mw.text.trim(suffix)&lt;br /&gt;
	local func_name = prefix .. suffix&lt;br /&gt;
	local func = p[func_name]&lt;br /&gt;
		or errorf(2, &amp;quot;There is no function &#039;%s&#039;&amp;quot;, func_name)&lt;br /&gt;
	return func&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
-- This function allows any of the &amp;quot;lookup&amp;quot; functions to be invoked. The first&lt;br /&gt;
-- parameter is the word after &amp;quot;lookup_&amp;quot;; the second parameter is the code point&lt;br /&gt;
-- in hexadecimal base.&lt;br /&gt;
function p.lookup(frame)&lt;br /&gt;
	local func = get_func(frame.args, 1, &amp;quot;lookup_&amp;quot;)&lt;br /&gt;
	local codepoint = get_codepoint(frame.args, 2)&lt;br /&gt;
	local result = func(codepoint)&lt;br /&gt;
	if func == p.lookup_name then&lt;br /&gt;
		-- Prevent code point labels such as &amp;lt;control-0000&amp;gt; from being&lt;br /&gt;
		-- interpreted as HTML tags.&lt;br /&gt;
		result = result:gsub(&amp;quot;&amp;lt;&amp;quot;, &amp;quot;&amp;amp;lt;&amp;quot;)&lt;br /&gt;
	end&lt;br /&gt;
	return result&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
function p.is(frame)&lt;br /&gt;
	local func = get_func(frame.args, 1, &amp;quot;is_&amp;quot;)&lt;br /&gt;
	&lt;br /&gt;
	-- is_Latin and is_valid_pagename take strings.&lt;br /&gt;
	if func == p.is_Latin or func == p.is_valid_pagename or func == p.is_rtl then&lt;br /&gt;
		return (func(frame.args[2]))&lt;br /&gt;
	else -- The rest take code points.&lt;br /&gt;
		local codepoint = get_codepoint(frame.args, 2)&lt;br /&gt;
		return (func(codepoint)) -- Adjust to one result.&lt;br /&gt;
	end&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
return p&lt;/div&gt;</summary>
		<author><name>DoubleCircle</name></author>
	</entry>
	<entry>
		<id>https://9on0wiki.gunmu.dns.navy/index.php?title=Module:Lang&amp;diff=710</id>
		<title>Module:Lang</title>
		<link rel="alternate" type="text/html" href="https://9on0wiki.gunmu.dns.navy/index.php?title=Module:Lang&amp;diff=710"/>
		<updated>2026-08-26T10:58:53Z</updated>

		<summary type="html">&lt;p&gt;DoubleCircle：​导入1个版本&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;--[=[&lt;br /&gt;
&lt;br /&gt;
Lua support for the {{lang}}, {{langx}}, {{lang-??}}, and {{transliteration}} templates and replacement of various supporting templates.&lt;br /&gt;
&lt;br /&gt;
-- 中文維基百科：加入了error_msgs，用於將所有報錯情形修改爲試圖顯示正常內容並附加預設不可見的錯誤報告。&lt;br /&gt;
&lt;br /&gt;
]=]&lt;br /&gt;
&lt;br /&gt;
require(&#039;strict&#039;);&lt;br /&gt;
&lt;br /&gt;
local getArgs = require (&#039;Module:Arguments&#039;).getArgs;&lt;br /&gt;
local unicode = require (&amp;quot;Module:Unicode data&amp;quot;);								-- for is_Latin() and is_rtl()&lt;br /&gt;
local yesno = require (&#039;Module:Yesno&#039;);&lt;br /&gt;
&lt;br /&gt;
local sandbox = (mw.getCurrentFrame():getTitle():match (&#039;/sandbox&#039;) or &#039;&#039;);		-- when called from a sandbox template or module load sandbox data and sandbox configuration&lt;br /&gt;
&lt;br /&gt;
local lang_data =  mw.loadData (&#039;Module:Lang/data&#039; .. sandbox);					-- language name override and transliteration tool-tip tables&lt;br /&gt;
local lang_name_table = lang_data.lang_name_table;								-- language codes, names, regions, scripts, suppressed scripts&lt;br /&gt;
local lang_table = lang_data.lang_name_table.lang;&lt;br /&gt;
local lang_dep_table = lang_data.lang_name_table.lang_dep;&lt;br /&gt;
local script_table = lang_data.lang_name_table.script;&lt;br /&gt;
local region_table = lang_data.lang_name_table.region;&lt;br /&gt;
local variant_table = lang_data.lang_name_table.variant;&lt;br /&gt;
local suppressed_table = lang_data.lang_name_table.suppressed;&lt;br /&gt;
local override_table = lang_data.override;&lt;br /&gt;
&lt;br /&gt;
local synonym_table = mw.loadData (&#039;Module:Lang/ISO 639 synonyms&#039;);				-- ISO 639-2/639-2T code translation to 639-1 code&lt;br /&gt;
&lt;br /&gt;
local cfg = mw.loadData (&#039;Module:Lang/configuration&#039; .. sandbox);				-- for internationalization&lt;br /&gt;
&lt;br /&gt;
local is_latn_data = mw.loadData (&#039;Module:Lang/data/is latn data&#039;);&lt;br /&gt;
local sizeof_ranges_t = is_latn_data.sizeof_ranges_t;&lt;br /&gt;
&lt;br /&gt;
local namespace = mw.title.getCurrentTitle().namespace;							-- used for categorization&lt;br /&gt;
&lt;br /&gt;
local content_lang = mw.language.getContentLanguage();&lt;br /&gt;
local this_wiki_lang_tag = content_lang.code;									-- get this wiki&#039;s language tag&lt;br /&gt;
local this_wiki_lang_dir = content_lang:getDir();								-- get this wiki&#039;s language direction&lt;br /&gt;
&lt;br /&gt;
local initial_style_state;														-- set by lang_xx_normal() and lang_xx_italic()&lt;br /&gt;
&lt;br /&gt;
local maint_cats = {};															-- maintenance categories go here&lt;br /&gt;
local maint_msgs = {};															-- and their messages go here&lt;br /&gt;
&lt;br /&gt;
local error_msgs = {}&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
--[[--------------------------&amp;lt; M A K E _ E R R O R _ S P A N &amp;gt;--------------------------------------------------&lt;br /&gt;
&lt;br /&gt;
]]&lt;br /&gt;
&lt;br /&gt;
local function make_error_span (template, msg)&lt;br /&gt;
	return table.concat ({&#039;&amp;lt;span class=&amp;quot;error&amp;quot; style=&amp;quot;font-size: 1em;&amp;quot;&amp;gt;&#039;, cfg.misc_text_t.error, &#039;：&#039;, template, msg, &#039;&amp;lt;/span&amp;gt;&#039;})&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
local function make_lang_error_span (msg)&lt;br /&gt;
	return table.concat ({&#039;&amp;lt;span class=&amp;quot;lang-comment lang-comment-error&amp;quot; style=&amp;quot;font-style: normal; display: none; margin-left: 0.3em; color: #33aa33;&amp;quot;&amp;gt;&#039;, msg, &#039;&amp;lt;/span&amp;gt;&#039;})&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
--[[--------------------------&amp;lt; S U B S T I T U T E &amp;gt;----------------------------------------------------------&lt;br /&gt;
&lt;br /&gt;
Substitutes $1, $2, etc in &amp;lt;message&amp;gt; with data from &amp;lt;data_t&amp;gt;. Returns plain-text substituted string when&lt;br /&gt;
&amp;lt;data_t&amp;gt; not nil; returns &amp;lt;message&amp;gt; else.&lt;br /&gt;
&lt;br /&gt;
]]&lt;br /&gt;
&lt;br /&gt;
local function substitute (message, data_t)&lt;br /&gt;
	return data_t and mw.message.newRawMessage (message, data_t):plain() or message;&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
--[[--------------------------&amp;lt; M A K E _ E R R O R _ M S G &amp;gt;--------------------------------------------------&lt;br /&gt;
&lt;br /&gt;
Assembles an error message from template name, message text, help link, and error category.&lt;br /&gt;
&lt;br /&gt;
]]&lt;br /&gt;
&lt;br /&gt;
local function make_error_msg (msg, args_t, template)&lt;br /&gt;
	local category;&lt;br /&gt;
	local text;																	-- handle the oddity that is {{langx}}&lt;br /&gt;
	if cfg.templates_t.langxx == template then&lt;br /&gt;
		text = args_t.text or args_t[1];										-- for {{lang-xx}}&lt;br /&gt;
	else&lt;br /&gt;
		text = args_t.text or args_t[2];										-- for {{lang}}, {{langx}}, and {{transliteration}}&lt;br /&gt;
	end&lt;br /&gt;
&lt;br /&gt;
	if cfg.templates_t.transliteration == template then&lt;br /&gt;
		category = cfg.make_error_msg_t.xlit_err_cat;&lt;br /&gt;
	else&lt;br /&gt;
		category = cfg.make_error_msg_t.lang_err_cat;&lt;br /&gt;
	end&lt;br /&gt;
&lt;br /&gt;
	local category_link = ((0 == namespace or 10 == namespace) and not args_t.nocat) and substitute (&#039;[[Category:$1]]&#039;, {category}) or &#039;&#039;;&lt;br /&gt;
&lt;br /&gt;
	text = text or cfg.make_error_msg_t.undefined&lt;br /&gt;
	if text == &#039;&#039; then&lt;br /&gt;
		text = cfg.make_error_msg_t.empty&lt;br /&gt;
	end&lt;br /&gt;
&lt;br /&gt;
	-- &amp;amp;#123;&amp;amp;#123;$3&amp;amp;#125;&amp;amp;#125; = {{$3}}&lt;br /&gt;
	-- 防止特定情況下作爲模板展開&lt;br /&gt;
	table.insert(error_msgs, substitute (&#039;-{[$1]}-&amp;lt;span class=&amp;quot;error&amp;quot; style=&amp;quot;font-size: 1em; margin-left: 0.3em;&amp;quot;&amp;gt;$2：&amp;amp;#123;&amp;amp;#123;$3&amp;amp;#125;&amp;amp;#125;：$4（[[:Category:$5|$6]]）&amp;lt;/span&amp;gt;$7&#039;,&lt;br /&gt;
		{&lt;br /&gt;
		text,&lt;br /&gt;
		cfg.misc_text_t.error,&lt;br /&gt;
		template,&lt;br /&gt;
		msg,&lt;br /&gt;
		category,&lt;br /&gt;
		cfg.misc_text_t.help,&lt;br /&gt;
		category_link&lt;br /&gt;
		})&lt;br /&gt;
	)&lt;br /&gt;
	return error_msgs[#error_msgs]&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
--[[--------------------------&amp;lt; P A R A M E T E R _ V A L I D A T E &amp;gt;------------------------------------------&lt;br /&gt;
&lt;br /&gt;
]]&lt;br /&gt;
&lt;br /&gt;
local function parameter_validate (args_t, template)&lt;br /&gt;
	local err_msg = cfg.parameter_validate_t.invalid_param;&lt;br /&gt;
&lt;br /&gt;
	local ret = {}&lt;br /&gt;
&lt;br /&gt;
	if cfg.templates_t.lang == template then									-- for {{lang}}&lt;br /&gt;
		for param, _ in pairs (args_t) do&lt;br /&gt;
			if not cfg.known_params_t.params_lang_t[param] and					-- unique {{lang}} parameters&lt;br /&gt;
				 not cfg.known_params_t.common_params_all_t[param] then			-- common to all&lt;br /&gt;
					table.insert(ret, substitute (err_msg, {param}))&lt;br /&gt;
			end&lt;br /&gt;
		end&lt;br /&gt;
	elseif cfg.templates_t.langx == template then								-- for {{langx}}&lt;br /&gt;
		for param, _ in pairs (args_t) do&lt;br /&gt;
			if not cfg.known_params_t.params_langx_t[param] and					-- unique {{langx}} parameters&lt;br /&gt;
				not cfg.known_params_t.params_x_t[param] and					-- common to {{langx}} and {{lang-xx}}&lt;br /&gt;
				not cfg.known_params_t.common_params_all_t[param] then			-- common to all&lt;br /&gt;
					table.insert(ret, substitute (err_msg, {param}))&lt;br /&gt;
			end&lt;br /&gt;
		end&lt;br /&gt;
	elseif cfg.templates_t.langxx == template then								-- for {{lang-xx}}&lt;br /&gt;
		for param, _ in pairs (args_t) do&lt;br /&gt;
			if not cfg.known_params_t.params_lang_xx_t[param] and				-- unique {{lang-xx}} parameters&lt;br /&gt;
				not cfg.known_params_t.params_x_t[param] and					-- common to {{langx}} and {{lang-xx}}&lt;br /&gt;
				not cfg.known_params_t.common_params_all_t[param] then			-- common to all&lt;br /&gt;
					table.insert(ret, substitute (err_msg, {param}))&lt;br /&gt;
			end&lt;br /&gt;
		end&lt;br /&gt;
	end&lt;br /&gt;
&lt;br /&gt;
	if ret[1] then&lt;br /&gt;
		return table.concat(ret, &#039;、&#039;)&lt;br /&gt;
	end&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
--[[--------------------------&amp;lt; I S _ S E T &amp;gt;------------------------------------------------------------------&lt;br /&gt;
&lt;br /&gt;
Returns true if argument is set; false otherwise. Argument is &#039;set&#039; when it exists (not nil) or when it is not&lt;br /&gt;
an empty string.&lt;br /&gt;
&lt;br /&gt;
]]&lt;br /&gt;
&lt;br /&gt;
local function is_set (var)&lt;br /&gt;
	return not (var == nil or var == &#039;&#039;);&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
--[[--------------------------&amp;lt; I N V E R T  _ I T A L I C S &amp;gt;-------------------------------------------------&lt;br /&gt;
&lt;br /&gt;
This function attempts to invert the italic markup a args.text by adding/removing leading/trailing italic markup&lt;br /&gt;
in args.text.  Like |italic=unset, |italic=invert disables automatic italic markup.  Individual leading/trailing&lt;br /&gt;
apostrophes are converted to their HTML numeric entity equivalent so that the new italic markup doesn&#039;t become&lt;br /&gt;
bold markup inadvertently.&lt;br /&gt;
&lt;br /&gt;
Leading and trailing wiki markup is extracted from args.text into separate table elements.  Addition, removal,&lt;br /&gt;
replacement of wiki markup is handled by a string.gsub() replacement table operating only on these separate elements.&lt;br /&gt;
In the string.gsub() matching pattern, &#039;.*&#039; matches empty string as well as the three expected wiki markup patterns.&lt;br /&gt;
&lt;br /&gt;
This function expects that markup in args.text is complete and correct; if it is not, oddness may result.&lt;br /&gt;
&lt;br /&gt;
]]&lt;br /&gt;
&lt;br /&gt;
local function invert_italics (source)&lt;br /&gt;
	local invert_pattern_table = {												-- leading/trailing markup add/remove/replace patterns&lt;br /&gt;
		[&amp;quot;&amp;quot;]=&amp;quot;\&#039;\&#039;&amp;quot;,															-- empty string becomes italic markup&lt;br /&gt;
		[&amp;quot;\&#039;\&#039;&amp;quot;]=&amp;quot;&amp;quot;,															-- italic markup becomes empty string&lt;br /&gt;
		[&amp;quot;\&#039;\&#039;\&#039;&amp;quot;]=&amp;quot;\&#039;\&#039;\&#039;\&#039;\&#039;&amp;quot;,												-- bold becomes bold italic&lt;br /&gt;
		[&amp;quot;\&#039;\&#039;\&#039;\&#039;\&#039;&amp;quot;]=&amp;quot;\&#039;\&#039;\&#039;&amp;quot;,												-- bold italic become bold&lt;br /&gt;
		};&lt;br /&gt;
	local seg = {};&lt;br /&gt;
&lt;br /&gt;
	source = source:gsub (&amp;quot;%f[\&#039;]\&#039;%f[^\&#039;]&amp;quot;, &#039;&amp;amp;#39;&#039;);							-- protect single quote marks from being interpreted as bold markup&lt;br /&gt;
&lt;br /&gt;
	seg[1] = source:match (&#039;^(\&#039;\&#039;+%f[^\&#039;]).+&#039;) or &#039;&#039;;							-- get leading markup, if any; ignore single quote&lt;br /&gt;
	seg[3] = source:match (&#039;.+(%f[\&#039;]\&#039;\&#039;+)$&#039;) or &#039;&#039;;							-- get trailing markup, if any; ignore single quote&lt;br /&gt;
&lt;br /&gt;
	if &#039;&#039; ~= seg[1] and &#039;&#039; ~= seg[3] then										-- extract the &#039;text&#039;&lt;br /&gt;
		seg[2] = source:match (&#039;^\&#039;\&#039;+%f[^\&#039;](.+)%f[\&#039;]\&#039;\&#039;+$&#039;)					-- from between leading and trailing markup&lt;br /&gt;
	elseif &#039;&#039; ~= seg[1] then&lt;br /&gt;
		seg[2] = source:match (&#039;^\&#039;\&#039;+%f[^\&#039;](.+)&#039;)								-- following leading markup&lt;br /&gt;
	elseif &#039;&#039; ~= seg[3] then&lt;br /&gt;
		seg[2] = source:match (&#039;(.+)%f[\&#039;]\&#039;\&#039;+$&#039;)								-- preceding trailing markup&lt;br /&gt;
	else&lt;br /&gt;
		seg[2] = source															-- when there is no markup&lt;br /&gt;
	end&lt;br /&gt;
&lt;br /&gt;
	seg[1] = invert_pattern_table[seg[1]] or seg[1];							-- replace leading markup according to pattern table&lt;br /&gt;
	seg[3] = invert_pattern_table[seg[3]] or seg[3];							-- replace leading markup according to pattern table&lt;br /&gt;
&lt;br /&gt;
	return table.concat (seg);													-- put it all back together and done&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
--[[--------------------------&amp;lt; V A L I D A T E _ I T A L I C &amp;gt;------------------------------------------------&lt;br /&gt;
&lt;br /&gt;
Validates |italic= or |italics= assigned values.&lt;br /&gt;
&lt;br /&gt;
When |italic= is set and has an acceptable assigned value, return the matching CSS font-style property value or,&lt;br /&gt;
for the special case &#039;default&#039;, return nil.&lt;br /&gt;
&lt;br /&gt;
When |italic= is not set, or has an unacceptable assigned value, return nil and a nil error message.&lt;br /&gt;
&lt;br /&gt;
When both |italic= and |italics= are set, returns nil and a &#039;conflicting&#039; error message.&lt;br /&gt;
&lt;br /&gt;
The return value nil causes the calling lang, lang_xx, or transl function to set args.italic according to the template&#039;s&lt;br /&gt;
defined default (&#039;inherit&#039; for {{lang}}, &#039;inherit&#039; or &#039;italic&#039; for {{lang-??}} depending on&lt;br /&gt;
the individual template&#039;s requirements, &#039;italic&#039; for {{transliteration}}) or to the value appropriate to |script=, if set ({{lang}}&lt;br /&gt;
and {{lang-??}} only).&lt;br /&gt;
&lt;br /&gt;
Accepted values and the values that this function returns are are:&lt;br /&gt;
	nil		-	when |italic= absent or not set; returns nil&lt;br /&gt;
	default	-	for completeness, should rarely if ever be used; returns nil&lt;br /&gt;
	yes		-	force args.text to be rendered in italic font; returns &#039;italic&#039;&lt;br /&gt;
	no		-	force args.text to be rendered in normal font; returns &#039;normal&#039;&lt;br /&gt;
	unset	-	disables font control so that font-style applied to text is dictated by markup inside or outside the template; returns &#039;inherit&#039;&lt;br /&gt;
	invert	-	disables font control so that font-style applied to text is dictated by markup outside or inverted inside the template; returns &#039;invert&#039;&lt;br /&gt;
&lt;br /&gt;
]]&lt;br /&gt;
&lt;br /&gt;
local function validate_italic (args)&lt;br /&gt;
	local properties = {[cfg.keywords_t.affirmative] = &#039;italic&#039;, [cfg.keywords_t.negative] = &#039;normal&#039;, [cfg.keywords_t.unset] = &#039;inherit&#039;, [cfg.keywords_t.invert] = &#039;invert&#039;, [cfg.keywords_t.default] = nil};&lt;br /&gt;
&lt;br /&gt;
	local count = 0&lt;br /&gt;
	for _, arg in pairs {&#039;italic&#039;, &#039;italics&#039;, &#039;i&#039;} do&lt;br /&gt;
		if args[arg] then&lt;br /&gt;
			count = count + 1&lt;br /&gt;
		end&lt;br /&gt;
	end&lt;br /&gt;
&lt;br /&gt;
	return properties[args.italic or args.italics or args.i], count &amp;gt; 1 and cfg.validate_italic_t.multi_italic or nil&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
--[=[--------------------------&amp;lt; V A L I D A T E _ C A T _ A R G S &amp;gt;----------------------------------------------------------&lt;br /&gt;
&lt;br /&gt;
Default behavior of the {{lang}} and {{lang-??}} templates is to add categorization when the templates are used in main space.&lt;br /&gt;
This default functionality may be suppressed by setting |nocat=yes or |cat=no.  This function selects one of these two parameters&lt;br /&gt;
to control categorization.&lt;br /&gt;
&lt;br /&gt;
Because having two parameters with &#039;opposite&#039; names and &#039;opposite&#039; values is confusing, this function accepts only affirmative&lt;br /&gt;
values for |nocat= and only negative values for |cat=; in both cases the &#039;other&#039; sense (and non-sense) is not accepted and the&lt;br /&gt;
parameter is treated as if it were not set in the template.&lt;br /&gt;
&lt;br /&gt;
Sets args.nocat to true if categorization is to be turned off; to nil if the default behavior should apply.&lt;br /&gt;
&lt;br /&gt;
Accepted values for |nocat= are the text strings:&lt;br /&gt;
	&#039;yes&#039;, &#039;y&#039;, &#039;true&#039;, &#039;t&#039;, on, &#039;1&#039;		-- [[Module:Yesno]] returns logical true for all of these; false or nil else&lt;br /&gt;
for |cat=&lt;br /&gt;
	&#039;no&#039;, &#039;n&#039;, &#039;false&#039;, &#039;f&#039;, &#039;off&#039;, &#039;0&#039;		-- [[Module:Yesno]] returns logical false for all of these; true or nil else&lt;br /&gt;
&lt;br /&gt;
]=]&lt;br /&gt;
&lt;br /&gt;
local function validate_cat_args (args)&lt;br /&gt;
	if not (args.nocat or args.cat) then										-- both are nil, so categorize&lt;br /&gt;
		return;&lt;br /&gt;
	end&lt;br /&gt;
&lt;br /&gt;
	if false == yesno (args.cat) or true == yesno (args.nocat) then&lt;br /&gt;
		args.nocat = true;														-- set to true when args.nocat is affirmative; nil else (as if the parameter were not set in the template)&lt;br /&gt;
	else																		-- args.nocat is the parameter actually used.&lt;br /&gt;
		args.nocat = nil;&lt;br /&gt;
	end&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
--[[--------------------------&amp;lt; I N _ A R R A Y &amp;gt;--------------------------------------------------------------&lt;br /&gt;
&lt;br /&gt;
Whether needle is in haystack.&lt;br /&gt;
&lt;br /&gt;
]]&lt;br /&gt;
&lt;br /&gt;
local function in_array (needle, haystack)&lt;br /&gt;
	if needle == nil then&lt;br /&gt;
		return false;&lt;br /&gt;
	end&lt;br /&gt;
	for n,v in ipairs (haystack) do&lt;br /&gt;
		if v == needle then&lt;br /&gt;
			return n;&lt;br /&gt;
		end&lt;br /&gt;
	end&lt;br /&gt;
	return false;&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
--[[--------------------------&amp;lt; F O R M A T _ I E T F _ T A G &amp;gt;------------------------------------------------&lt;br /&gt;
&lt;br /&gt;
Prettify IETF tags to use recommended subtag formats:&lt;br /&gt;
	code: lower case&lt;br /&gt;
	script: sentence case&lt;br /&gt;
	region: upper case&lt;br /&gt;
	variant: lower case&lt;br /&gt;
	private: lower case prefixed with -x-&lt;br /&gt;
&lt;br /&gt;
]]&lt;br /&gt;
&lt;br /&gt;
local function format_ietf_tag (code, script, region, variant, private)&lt;br /&gt;
	local out = {};&lt;br /&gt;
&lt;br /&gt;
	if is_set (private) then&lt;br /&gt;
		return table.concat ({code:lower(), &#039;x&#039;, private:lower()}, &#039;-&#039;);		-- if private, all other tags ignored&lt;br /&gt;
	end&lt;br /&gt;
&lt;br /&gt;
	table.insert (out, code:lower());&lt;br /&gt;
	if is_set (script) then&lt;br /&gt;
		script = script:lower():gsub (&#039;^%a&#039;, string.upper);&lt;br /&gt;
		table.insert (out, script);&lt;br /&gt;
	end&lt;br /&gt;
&lt;br /&gt;
	if is_set (region) then&lt;br /&gt;
		table.insert (out, region:upper());&lt;br /&gt;
	end&lt;br /&gt;
&lt;br /&gt;
	if is_set (variant) then&lt;br /&gt;
		table.insert (out, variant:lower());&lt;br /&gt;
	end&lt;br /&gt;
&lt;br /&gt;
	return table.concat (out, &#039;-&#039;);&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
--[[--------------------------&amp;lt; G E T _ I E T F _ P A R T S &amp;gt;--------------------------------------------------&lt;br /&gt;
&lt;br /&gt;
Extracts and returns IETF language tag parts:&lt;br /&gt;
	primary language subtag (required) - 2 or 3 character IANA language code&lt;br /&gt;
	script subtag - four character IANA script code&lt;br /&gt;
	region subtag - two-letter or three digit IANA region code&lt;br /&gt;
	variant subtag - four digit or 5-8 alnum variant code; only one variant subtag supported&lt;br /&gt;
	private subtag - x- followed by 1-8 alnum private code; only supported with the primary language tag&lt;br /&gt;
&lt;br /&gt;
in any one of these forms&lt;br /&gt;
	lang					lang-variant&lt;br /&gt;
	lang-script				lang-script-variant&lt;br /&gt;
	lang-region				lang-region-variant&lt;br /&gt;
	lang-script-region		lang-script-region-variant&lt;br /&gt;
	lang-x-private&lt;br /&gt;
&lt;br /&gt;
each of lang, script, region, variant, and private, when used, must be valid.&lt;br /&gt;
&lt;br /&gt;
Languages with both two- and three-character code synonyms are promoted to the two-character synonym because&lt;br /&gt;
the IANA registry file omits the synonymous three-character code; we cannot depend on browsers understanding&lt;br /&gt;
the synonymous three-character codes in the lang= attribute.&lt;br /&gt;
&lt;br /&gt;
For {{lang-??}} templates, the parameters |script=, |region=, and |variant= are supported (not supported in {{lang}}&lt;br /&gt;
because those parameters are superfluous to the IETF subtags in |code=).&lt;br /&gt;
&lt;br /&gt;
Returns six  values; all lower case.  Valid parts are returned as themselves; omitted parts are returned as empty strings, invalid&lt;br /&gt;
parts are returned as nil; the sixth returned item is an error message (if an error detected) or nil.&lt;br /&gt;
&lt;br /&gt;
See http://www.rfc-editor.org/rfc/bcp/bcp47.txt section 2.1.&lt;br /&gt;
&lt;br /&gt;
]]&lt;br /&gt;
&lt;br /&gt;
local function get_ietf_parts (source, args_script, args_region, args_variant)&lt;br /&gt;
	local code, script, region, variant, private;								-- IETF tag parts&lt;br /&gt;
&lt;br /&gt;
	if not is_set (source) then&lt;br /&gt;
		return nil, nil, nil, nil, nil, cfg.get_ietf_parts_t.missing_lang_tag;&lt;br /&gt;
	end&lt;br /&gt;
&lt;br /&gt;
	local override = {															-- 簡寫轉換爲正確的語言標籤&lt;br /&gt;
		[&#039;pinyin&#039;] = &#039;zh-Latn-pinyin&#039;,											-- 漢語拼音&lt;br /&gt;
		[&#039;zhuyin&#039;] = &#039;zh-Bopo&#039;,													-- 注音符號&lt;br /&gt;
	}&lt;br /&gt;
&lt;br /&gt;
	source = override[source] or source&lt;br /&gt;
&lt;br /&gt;
	local pattern = {															-- table of tables holding acceptable IETF tag patterns and short names of the IETF part captured by the pattern&lt;br /&gt;
		{&#039;^(%a%a%a?)%-(%a%a%a%a)%-(%a%a)%-(%d%d%d%d)$&#039;, &#039;s&#039;, &#039;r&#039;, &#039;v&#039;}, 				-- 1 -  ll-Ssss-RR-variant (where variant is 4 digits)&lt;br /&gt;
		{&#039;^(%a%a%a?)%-(%a%a%a%a)%-(%d%d%d)%-(%d%d%d%d)$&#039;, &#039;s&#039;, &#039;r&#039;, &#039;v&#039;},				-- 2 -  ll-Ssss-DDD-variant (where region is 3 digits; variant is 4 digits)&lt;br /&gt;
		{&#039;^(%a%a%a?)%-(%a%a%a%a)%-(%a%a)%-(%w%w%w%w%w%w?%w?%w?)$&#039;, &#039;s&#039;, &#039;r&#039;, &#039;v&#039;},		-- 3 -  ll-Ssss-RR-variant (where variant is 5-8 alnum characters)&lt;br /&gt;
		{&#039;^(%a%a%a?)%-(%a%a%a%a)%-(%d%d%d)%-(%w%w%w%w%w%w?%w?%w?)$&#039;, &#039;s&#039;, &#039;r&#039;, &#039;v&#039;},	-- 4 -  ll-Ssss-DDD-variant (where region is 3 digits; variant is 5-8 alnum characters)&lt;br /&gt;
&lt;br /&gt;
		{&#039;^(%a%a%a?)%-(%a%a%a%a)%-(%d%d%d%d)$&#039;, &#039;s&#039;, &#039;v&#039;},						-- 5 -  ll-Ssss-variant (where variant is 4 digits)&lt;br /&gt;
		{&#039;^(%a%a%a?)%-(%a%a%a%a)%-(%w%w%w%w%w%w?%w?%w?)$&#039;, &#039;s&#039;, &#039;v&#039;},			-- 6 -  ll-Ssss-variant (where variant is 5-8 alnum characters)&lt;br /&gt;
&lt;br /&gt;
		{&#039;^(%a%a%a?)%-(%a%a)%-(%d%d%d%d)$&#039;, &#039;r&#039;, &#039;v&#039;},							-- 7 -  ll-RR-variant (where variant is 4 digits)&lt;br /&gt;
		{&#039;^(%a%a%a?)%-(%d%d%d)%-(%d%d%d%d)$&#039;, &#039;r&#039;, &#039;v&#039;},						-- 8 -  ll-DDD-variant (where region is 3 digits; variant is 4 digits)&lt;br /&gt;
		{&#039;^(%a%a%a?)%-(%a%a)%-(%w%w%w%w%w%w?%w?%w?)$&#039;, &#039;r&#039;, &#039;v&#039;},				-- 9 -  ll-RR-variant (where variant is 5-8 alnum characters)&lt;br /&gt;
		{&#039;^(%a%a%a?)%-(%d%d%d)%-(%w%w%w%w%w%w?%w?%w?)$&#039;, &#039;r&#039;, &#039;v&#039;},				-- 10 - ll-DDD-variant (where region is 3 digits; variant is 5-8 alnum characters)&lt;br /&gt;
&lt;br /&gt;
		{&#039;^(%a%a%a?)%-(%d%d%d%d)$&#039;, &#039;v&#039;},										-- 11 - ll-variant (where variant is 4 digits)&lt;br /&gt;
		{&#039;^(%a%a%a?)%-(%w%w%w%w%w%w?%w?%w?)$&#039;, &#039;v&#039;},							-- 12 - ll-variant (where variant is 5-8 alnum characters)&lt;br /&gt;
&lt;br /&gt;
		{&#039;^(%a%a%a?)%-(%a%a%a%a)%-(%a%a)$&#039;, &#039;s&#039;, &#039;r&#039;},							-- 13 - ll-Ssss-RR&lt;br /&gt;
		{&#039;^(%a%a%a?)%-(%a%a%a%a)%-(%d%d%d)$&#039;, &#039;s&#039;, &#039;r&#039;},						-- 14 - ll-Ssss-DDD (region is 3 digits)&lt;br /&gt;
&lt;br /&gt;
		{&#039;^(%a%a%a?)%-(%a%a%a%a)$&#039;, &#039;s&#039;},										-- 15 - ll-Ssss&lt;br /&gt;
&lt;br /&gt;
		{&#039;^(%a%a%a?)%-(%a%a)$&#039;, &#039;r&#039;},											-- 16 - ll-RR&lt;br /&gt;
		{&#039;^(%a%a%a?)%-(%d%d%d)$&#039;, &#039;r&#039;},											-- 17 - ll-DDD (region is 3 digits)&lt;br /&gt;
&lt;br /&gt;
		{&#039;^(%a%a%a?)$&#039;},														-- 18 - ll&lt;br /&gt;
&lt;br /&gt;
		{&#039;^(%a%a%a?)%-x%-(%w%w?%w?%w?%w?%w?%w?%w?)$&#039;, &#039;p&#039;},						-- 19 - ll-x-pppppppp (private is 1-8 alnum characters)&lt;br /&gt;
&lt;br /&gt;
		}&lt;br /&gt;
&lt;br /&gt;
	local t = {};																-- table of captures; serves as a translator between captured IETF tag parts and named variables&lt;br /&gt;
&lt;br /&gt;
	for i, v in ipairs (pattern) do												-- spin through the pattern table looking for a match&lt;br /&gt;
		local c1, c2, c3, c4;													-- captures in the &#039;pattern&#039; from the pattern table go here&lt;br /&gt;
&lt;br /&gt;
		c1, c2, c3, c4 = source:match (pattern[i][1]);							-- one or more captures set if source matches pattern[i])&lt;br /&gt;
			if c1 then															-- c1 always set on match&lt;br /&gt;
				code = c1;														-- first capture is always code&lt;br /&gt;
				t = {&lt;br /&gt;
					[pattern[i][2] or &#039;x&#039;] = c2,								-- fill the table of captures with the rest of the captures&lt;br /&gt;
					[pattern[i][3] or &#039;x&#039;] = c3,								-- take index names from pattern table and assign sequential captures&lt;br /&gt;
					[pattern[i][4] or &#039;x&#039;] = c4,								-- index name may be nil in pattern[i] table so &amp;quot;or &#039;x&#039;&amp;quot; spoofs a name for this index in this table&lt;br /&gt;
					};&lt;br /&gt;
				script = t.s or &#039;&#039;;												-- translate table contents to named variables;&lt;br /&gt;
				region = t.r or &#039;&#039;;												-- absent table entries are nil so set named IETF parts to empty string for concatenation&lt;br /&gt;
				variant= t.v or &#039;&#039;;&lt;br /&gt;
				private = t.p or &#039;&#039;;&lt;br /&gt;
				break;															-- and done&lt;br /&gt;
			end&lt;br /&gt;
	end&lt;br /&gt;
&lt;br /&gt;
	if not code then&lt;br /&gt;
		return nil, nil, nil, nil, nil, substitute (cfg.get_ietf_parts_t.unrecog_tag, {source});	-- don&#039;t know what we got but it is malformed&lt;br /&gt;
	end&lt;br /&gt;
&lt;br /&gt;
	code = code:lower();														-- ensure that we use and return lower case version of this&lt;br /&gt;
&lt;br /&gt;
	if not (override_table[code] or lang_table[code] or synonym_table[code] or lang_dep_table[code]) then&lt;br /&gt;
		return nil, nil, nil, nil, nil, substitute (cfg.get_ietf_parts_t.unrecog_code, {code});	-- invalid language code, don&#039;t know about the others (don&#039;t care?)&lt;br /&gt;
	end&lt;br /&gt;
&lt;br /&gt;
	if synonym_table[code] then													-- if 639-2/639-2T code has a 639-1 synonym&lt;br /&gt;
		table.insert (maint_cats, substitute (cfg.get_ietf_parts_t.maint_promo_cat, {code}));&lt;br /&gt;
		table.insert (maint_msgs, substitute (cfg.get_ietf_parts_t.maint_promo_msg, {code, synonym_table[code]}));&lt;br /&gt;
		code = synonym_table[code];												-- use the synonym&lt;br /&gt;
	end&lt;br /&gt;
&lt;br /&gt;
	if is_set (script) then&lt;br /&gt;
		if is_set (args_script) then&lt;br /&gt;
			return code, nil, nil, nil, nil, cfg.get_ietf_parts_t.redundant_scr;	-- both code with script and |script= not allowed&lt;br /&gt;
		end&lt;br /&gt;
	else&lt;br /&gt;
		script = args_script or &#039;&#039;;												-- use args.script if provided&lt;br /&gt;
	end&lt;br /&gt;
&lt;br /&gt;
	if is_set (script) then&lt;br /&gt;
		script = script:lower();												-- ensure that we use and return lower case version of this&lt;br /&gt;
		if not script_table[script] then&lt;br /&gt;
			return code, nil, nil, nil, nil, substitute (cfg.get_ietf_parts_t.unrecog_scr_code, {script, code});	-- language code OK, invalid script, don&#039;t know about the others (don&#039;t care?)&lt;br /&gt;
		end&lt;br /&gt;
	end&lt;br /&gt;
	if suppressed_table[script] then											-- ensure that code-script does not use a suppressed script&lt;br /&gt;
		if in_array (code, suppressed_table[script]) then&lt;br /&gt;
			return code, nil, nil, nil, nil, substitute (cfg.get_ietf_parts_t.script_code, {script, code});	-- language code OK, script is suppressed for this code&lt;br /&gt;
		end&lt;br /&gt;
	end&lt;br /&gt;
&lt;br /&gt;
	if is_set (region) then&lt;br /&gt;
		if is_set (args_region) then&lt;br /&gt;
			return code, nil, nil, nil, nil, cfg.get_ietf_parts_t.redundant_reg;	-- both code with region and |region= not allowed&lt;br /&gt;
		end&lt;br /&gt;
	else&lt;br /&gt;
		region = args_region or &#039;&#039;;												-- use args.region if provided&lt;br /&gt;
	end&lt;br /&gt;
&lt;br /&gt;
	if is_set (region) then&lt;br /&gt;
		region = region:lower();												-- ensure that we use and return lower case version of this&lt;br /&gt;
		if not region_table[region] then&lt;br /&gt;
			return code, script, nil, nil, nil, substitute (cfg.get_ietf_parts_t.unrecog_reg_code, {region, code});&lt;br /&gt;
		end&lt;br /&gt;
	end&lt;br /&gt;
&lt;br /&gt;
	if is_set (variant) then&lt;br /&gt;
		if is_set (args_variant) then&lt;br /&gt;
			return code, nil, nil, nil, nil, cfg.get_ietf_parts_t.redundant_var;	-- both code with variant and |variant= not allowed&lt;br /&gt;
		end&lt;br /&gt;
	else&lt;br /&gt;
		variant = args_variant or &#039;&#039;;											-- use args.variant if provided&lt;br /&gt;
	end&lt;br /&gt;
&lt;br /&gt;
	if is_set (variant) then&lt;br /&gt;
		variant = variant:lower();												-- ensure that we use and return lower case version of this&lt;br /&gt;
		if not variant_table[variant] then										-- make sure variant is valid&lt;br /&gt;
			return code, script, region, nil, nil, substitute (cfg.get_ietf_parts_t.unrecog_var, {variant});&lt;br /&gt;
		end																		-- does this duplicate/replace tests in lang() and lang_xx()?&lt;br /&gt;
		if is_set (script) then													-- if script set it must be part of the &#039;prefix&#039;&lt;br /&gt;
			if not in_array (table.concat ({code, &#039;-&#039;, script}), variant_table[variant][&#039;prefixes&#039;]) then&lt;br /&gt;
				return code, script, region, nil, nil, substitute (cfg.get_ietf_parts_t.unrecog_var_code_scr, {variant, code, script});&lt;br /&gt;
			end&lt;br /&gt;
		elseif is_set (region) then												-- if region set, there are some prefixes that require lang code and region (en-CA-newfound)&lt;br /&gt;
			if not in_array (code, variant_table[variant][&#039;prefixes&#039;]) then		-- first see if lang code is all that&#039;s required (en-oxendict though en-GB-oxendict is preferred)&lt;br /&gt;
				if not in_array (table.concat ({code, &#039;-&#039;, region}), variant_table[variant][&#039;prefixes&#039;]) then	-- now try for lang code and region (en-CA-newfound)&lt;br /&gt;
					return code, script, region, nil, nil, substitute (cfg.get_ietf_parts_t.unrecog_var_code_reg, {variant, code, region});&lt;br /&gt;
				end&lt;br /&gt;
			end&lt;br /&gt;
		else																	-- cheap way to determine if there are prefixes; fonipa and others don&#039;t have prefixes; # operator always returns 0&lt;br /&gt;
			if variant_table[variant][&#039;prefixes&#039;][1] and not in_array (code, variant_table[variant][&#039;prefixes&#039;]) then&lt;br /&gt;
				return code, script, region, nil, nil, substitute (cfg.get_ietf_parts_t.unrecog_var_code, {variant, code});&lt;br /&gt;
			end&lt;br /&gt;
		end&lt;br /&gt;
	end&lt;br /&gt;
&lt;br /&gt;
	if is_set (private) then&lt;br /&gt;
		private = private:lower();												-- ensure that we use and return lower case version of this&lt;br /&gt;
		if not override_table[table.concat ({code, &#039;-x-&#039;, private})] then		-- make sure private tag is valid; note that index&lt;br /&gt;
			return code, script, region, nil, nil, substitute (cfg.get_ietf_parts_t.unrecog_pri, {private});&lt;br /&gt;
		end&lt;br /&gt;
	end&lt;br /&gt;
	return code, script, region, variant, private, nil;							-- return the good bits; make sure that msg is nil&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
--[=[-------------------------&amp;lt; M A K E _ W I K I L I N K &amp;gt;----------------------------------------------------&lt;br /&gt;
&lt;br /&gt;
Makes a wikilink; when both link and display text is provided, returns a wikilink in the form [[L|D]]; if only&lt;br /&gt;
link is provided, returns a wikilink in the form [[L]]; if neither are provided or link is omitted, returns an&lt;br /&gt;
empty string.&lt;br /&gt;
&lt;br /&gt;
]=]&lt;br /&gt;
&lt;br /&gt;
local function make_wikilink (link, display)&lt;br /&gt;
	if is_set (link) then&lt;br /&gt;
		if is_set (display) then&lt;br /&gt;
			return table.concat ({&#039;[[&#039;, link, &#039;|&#039;, display, &#039;]]&#039;});&lt;br /&gt;
		else&lt;br /&gt;
			return table.concat ({&#039;[[&#039;, link, &#039;]]&#039;});&lt;br /&gt;
		end&lt;br /&gt;
	else&lt;br /&gt;
		return &#039;&#039;;&lt;br /&gt;
	end&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
--[[--------------------------&amp;lt; D I V _ M A R K U P _ A D D &amp;gt;--------------------------------------------------&lt;br /&gt;
&lt;br /&gt;
Adds &amp;lt;i&amp;gt; and &amp;lt;/i&amp;gt; tags to list-item text or to implied &amp;lt;p&amp;gt;..&amp;lt;/p&amp;gt; text. Mixed not supported.&lt;br /&gt;
&lt;br /&gt;
]]&lt;br /&gt;
&lt;br /&gt;
local function div_markup_add (text, style)&lt;br /&gt;
	if text:find (&#039;^\n[%*:;#]&#039;) then											-- look for list markup; list markup must begin at start of text&lt;br /&gt;
		if &#039;italic&#039; == style then&lt;br /&gt;
			return text:gsub (&#039;(\n[%*:;#]+)([^\n]+)&#039;, &#039;%1&amp;lt;i&amp;gt;%2&amp;lt;/i&amp;gt;&#039;);			-- insert italic markup at each list item&lt;br /&gt;
		else&lt;br /&gt;
			return text;&lt;br /&gt;
		end&lt;br /&gt;
	end&lt;br /&gt;
&lt;br /&gt;
	if text:find (&#039;\n+&#039;) then													-- look for any number of \n characters in text&lt;br /&gt;
		text = text:gsub (&#039;([^\n])\n([^\n])&#039;, &#039;%1 %2&#039;);							-- replace single newline characters with a space character which mimics MediaWiki&lt;br /&gt;
&lt;br /&gt;
		if &#039;italic&#039; == style then&lt;br /&gt;
			text = text:gsub(&#039;[^\n]+&#039;, &#039;&amp;lt;p&amp;gt;&amp;lt;i&amp;gt;%1&amp;lt;/i&amp;gt;&amp;lt;/p&amp;gt;&#039;);						-- insert p and italic markup tags at each implied p (two or more consecutive &#039;\n\n&#039; sequences)&lt;br /&gt;
		else&lt;br /&gt;
			text = text:gsub (&#039;[^\n]+&#039;, &#039;&amp;lt;p&amp;gt;%1&amp;lt;/p&amp;gt;&#039;);							-- insert p markup at each implied p&lt;br /&gt;
			text = text:gsub (&#039;\n&#039;, &#039;&#039;);										-- strip newline characters&lt;br /&gt;
		end&lt;br /&gt;
	end&lt;br /&gt;
&lt;br /&gt;
	return text;&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
--[[--------------------------&amp;lt; T I T L E _ W R A P P E R _ M A K E &amp;gt;------------------------------------------&lt;br /&gt;
&lt;br /&gt;
Makes a &amp;lt;span title=&amp;quot;&amp;lt;title text&amp;gt;&amp;quot;&amp;gt;&amp;lt;content_text&amp;gt;&amp;lt;/span&amp;gt; or &amp;lt;div title=&amp;quot;&amp;lt;title text&amp;gt;&amp;quot;&amp;gt;&amp;lt;content_text&amp;gt;&amp;lt;/div&amp;gt; where&lt;br /&gt;
&amp;lt;title text&amp;gt; is in the tool-tip in the wiki&#039;s local language and &amp;lt;content_text&amp;gt; is non-local-language text in&lt;br /&gt;
HTML markup.  This because the lang= attribute applies to the content of its enclosing tag.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;tag&amp;gt; holds a string &#039;div&#039; or &#039;span&#039; used to choose the correct wrapping tag.&lt;br /&gt;
&lt;br /&gt;
]]&lt;br /&gt;
&lt;br /&gt;
local function title_wrapper_make (title_text, content_text, tag)&lt;br /&gt;
	local wrapper_t = {};&lt;br /&gt;
&lt;br /&gt;
	table.insert (wrapper_t, table.concat ({&#039;&amp;lt;&#039;, tag}));						-- open opening wrapper tag&lt;br /&gt;
	table.insert (wrapper_t, &#039; title=\&amp;quot;&#039;);										-- begin title attribute&lt;br /&gt;
	table.insert (wrapper_t, title_text);										-- add &amp;lt;title_text&amp;gt;&lt;br /&gt;
	table.insert (wrapper_t, &#039;\&amp;quot;&amp;gt;&#039;);											-- end title attribute and close opening wrapper tag&lt;br /&gt;
	table.insert (wrapper_t, content_text);										-- add &amp;lt;content_text&amp;gt;&lt;br /&gt;
	table.insert (wrapper_t, table.concat ({&#039;&amp;lt;/&#039;, tag, &#039;&amp;gt;&#039;}));					-- add closing wrapper tag&lt;br /&gt;
&lt;br /&gt;
	return table.concat (wrapper_t);											-- make a big string and done&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
--[[--------------------------&amp;lt; M A K E _ T E X T _ H T M L &amp;gt;--------------------------------------------------&lt;br /&gt;
&lt;br /&gt;
Add the HTML markup to text according to the type of content that it is: &amp;lt;span&amp;gt; or &amp;lt;i&amp;gt; tags for inline content or&lt;br /&gt;
&amp;lt;div&amp;gt; tags for block content&lt;br /&gt;
&lt;br /&gt;
The lang= attribute also applies to the content of the tag where it is placed so this is wrong because &#039;Spanish&lt;br /&gt;
language text&#039; is English:&lt;br /&gt;
	&amp;lt;i lang=&amp;quot;es&amp;quot; title=&amp;quot;Spanish language text&amp;quot;&amp;gt;casa&amp;lt;/i&amp;gt;&lt;br /&gt;
should be:&lt;br /&gt;
	&amp;lt;span title=&amp;quot;Spanish language text&amp;quot;&amp;gt;&amp;lt;i lang=&amp;quot;es&amp;quot;&amp;gt;casa&amp;lt;/i&amp;gt;&amp;lt;/span&amp;gt;&lt;br /&gt;
or for &amp;lt;div&amp;gt;...&amp;lt;/div&amp;gt;:&lt;br /&gt;
	&amp;lt;div title=&amp;quot;Spanish language text&amp;quot;&amp;gt;&amp;lt;div lang=&amp;quot;es&amp;quot;&amp;gt;&amp;lt;spanish-language-text&amp;gt;&amp;lt;/div&amp;gt;&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
]]&lt;br /&gt;
&lt;br /&gt;
local function make_text_html (code, text, tag, rtl, style, size, language)&lt;br /&gt;
	local html_t = {};&lt;br /&gt;
	local style_added = &#039;&#039;;&lt;br /&gt;
	local wrapper_tag = tag;													-- &amp;lt;tag&amp;gt; gets modified so save a copy for use when/if we create a wrapper span or div&lt;br /&gt;
&lt;br /&gt;
	if text:match (&#039;^%*&#039;) then&lt;br /&gt;
		table.insert (html_t, &#039;&amp;amp;#42;&#039;);											-- move proto language text prefix outside of italic markup if any; use numeric entity because plain splat confuses MediaWiki&lt;br /&gt;
		text = text:gsub (&#039;^%*&#039;, &#039;&#039;);											-- remove the splat from the text&lt;br /&gt;
	end&lt;br /&gt;
&lt;br /&gt;
	if &#039;span&#039; == tag then														-- default HTML tag for inline content&lt;br /&gt;
		if &#039;italic&#039; == style then												-- but if italic&lt;br /&gt;
			tag = &#039;i&#039;;															-- change to &amp;lt;i&amp;gt; tags&lt;br /&gt;
		end&lt;br /&gt;
	else																		-- must be div so go&lt;br /&gt;
		text = div_markup_add (text, style);									-- handle implied &amp;lt;p&amp;gt;, implied &amp;lt;p&amp;gt; with &amp;lt;i&amp;gt;, and list markup (*;:#) with &amp;lt;i&amp;gt;&lt;br /&gt;
	end&lt;br /&gt;
&lt;br /&gt;
	table.insert (html_t, table.concat ({&#039;&amp;lt;&#039;, tag}));							-- open the &amp;lt;i&amp;gt;, &amp;lt;span&amp;gt;, or &amp;lt;div&amp;gt; HTML tag&lt;br /&gt;
	code = code:gsub (&#039;%-x%-.*&#039;, &#039;&#039;);											-- strip private use subtag from code tag because meaningless outside of Wikipedia&lt;br /&gt;
	table.insert (html_t, table.concat ({&#039; lang=&amp;quot;&#039;, code, &#039;\&amp;quot;&#039;}));				-- add language attribute&lt;br /&gt;
&lt;br /&gt;
	if (rtl or unicode.is_rtl(text)) and (&#039;ltr&#039; == this_wiki_lang_dir) then		-- text is right-to-left on a left-to-right wiki&lt;br /&gt;
		table.insert (html_t, &#039; dir=&amp;quot;rtl&amp;quot;&#039;);									-- add direction attribute for right-to-left languages&lt;br /&gt;
	elseif not (rtl or unicode.is_rtl(text)) and (&#039;rtl&#039; == this_wiki_lang_dir) then	-- text is left-to-right on a right-to-left wiki&lt;br /&gt;
		table.insert (html_t, &#039; dir=&amp;quot;ltr&amp;quot;&#039;);									-- add direction attribute for left-to-right languages&lt;br /&gt;
	end&lt;br /&gt;
&lt;br /&gt;
	if &#039;normal&#039; == style then													-- when |italic=no&lt;br /&gt;
		table.insert (html_t, &#039; style=\&amp;quot;font-style: normal;&#039;);					-- override external markup, if any&lt;br /&gt;
		style_added = &#039;\&amp;quot;&#039;;														-- remember that style attribute added and is not yet closed&lt;br /&gt;
	end&lt;br /&gt;
&lt;br /&gt;
	if is_set (size) then														-- when |size=&amp;lt;something&amp;gt;&lt;br /&gt;
		if is_set (style_added) then&lt;br /&gt;
			table.insert (html_t, table.concat ({&#039; font-size: &#039;, size, &#039;;&#039;}));	-- add when style attribute already inserted&lt;br /&gt;
		else&lt;br /&gt;
			table.insert (html_t, table.concat ({&#039; style=\&amp;quot;font-size: &#039;, size, &#039;;&#039;}));	-- create style attribute&lt;br /&gt;
			style_added = &#039;\&amp;quot;&#039;;													-- remember that style attribute added and is not yet closed&lt;br /&gt;
		end&lt;br /&gt;
	end&lt;br /&gt;
&lt;br /&gt;
	table.insert (html_t, table.concat ({style_added, &#039;&amp;gt;&#039;}));					-- close the opening HTML tag&lt;br /&gt;
	table.insert (html_t, text);												-- insert the text&lt;br /&gt;
&lt;br /&gt;
	table.insert (html_t, table.concat ({&#039;&amp;lt;/&#039;, tag, &#039;&amp;gt;&#039;}));						-- close the &#039;text&#039; &amp;lt;i&amp;gt;, &amp;lt;span&amp;gt;, or &amp;lt;div&amp;gt; HTML tag&lt;br /&gt;
&lt;br /&gt;
	if is_set (language) then													-- create a &amp;lt;title_text&amp;gt; string for the title= attribute in a wrapper span or div&lt;br /&gt;
		local title_text;&lt;br /&gt;
			if &#039;zxx&#039; == code then												-- special case for this tag &#039;no linguistic content&#039;&lt;br /&gt;
				title_text = substitute (&#039;$1$2&#039;, {language, cfg.make_text_html_t.zxx});	-- not a language so don&#039;t use &#039;language&#039; in title text&lt;br /&gt;
			elseif mw.ustring.find (language, &#039;语系&#039;, 1, true) then&lt;br /&gt;
				title_text = substitute (&#039;$1$2&#039;, {language, cfg.make_text_html_t.collective});	-- for collective languages&lt;br /&gt;
			else&lt;br /&gt;
				title_text = substitute (&#039;$1$2&#039;, {language, cfg.make_text_html_t.individual});	-- for individual languages&lt;br /&gt;
			end&lt;br /&gt;
&lt;br /&gt;
		return title_wrapper_make (title_text, table.concat (html_t), wrapper_tag);&lt;br /&gt;
	else&lt;br /&gt;
		return table.concat (html_t);&lt;br /&gt;
	end&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
-- 中文版添加，实现#ifexist&lt;br /&gt;
local function page_exists (title)&lt;br /&gt;
	local noError, titleObject = pcall (mw.title.new, title)&lt;br /&gt;
	if not noError then&lt;br /&gt;
		return false&lt;br /&gt;
	else&lt;br /&gt;
		if titleObject then&lt;br /&gt;
			return titleObject.exists&lt;br /&gt;
		else&lt;br /&gt;
			return false&lt;br /&gt;
		end&lt;br /&gt;
	end&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
--[=[-------------------------&amp;lt; M A K E _ C A T E G O R Y &amp;gt;----------------------------------------------------&lt;br /&gt;
&lt;br /&gt;
For individual language, &amp;lt;language&amp;gt;, returns:&lt;br /&gt;
	[[Category:Articles containing &amp;lt;language&amp;gt;-language text]]&lt;br /&gt;
&lt;br /&gt;
For English:&lt;br /&gt;
	[[Category:Articles containing explicitly cited English-language text]]&lt;br /&gt;
&lt;br /&gt;
For ISO 639-2 collective languages (and for 639-1 bh):&lt;br /&gt;
	[[Category:Articles with text in &amp;lt;language&amp;gt; languages]]&lt;br /&gt;
&lt;br /&gt;
注意：此处有修改&lt;br /&gt;
&lt;br /&gt;
对于中文（zh、zh-*）：&lt;br /&gt;
&lt;br /&gt;
	如果[[Module:Lang/data]]没有额外定义变体名称（即取得的语言名称是「中文」），则返回以下分类：&lt;br /&gt;
		[[Category:含有明确引用中文的条目]]&lt;br /&gt;
&lt;br /&gt;
	反之，则返回以下分类：&lt;br /&gt;
		[[Category:含有&amp;lt;变体&amp;gt;的条目]]&lt;br /&gt;
&lt;br /&gt;
对于非中文内容：&lt;br /&gt;
&lt;br /&gt;
	如果存在对应语言的分类，则返回以下分类：&lt;br /&gt;
		[[Category:含有&amp;lt;语言&amp;gt;的条目]]&lt;br /&gt;
&lt;br /&gt;
	反之，则返回以下分类：&lt;br /&gt;
		[[Category:含有非中文内容的条目]]&lt;br /&gt;
&lt;br /&gt;
]=]&lt;br /&gt;
&lt;br /&gt;
local function make_category (code, language_name, nocat, name_get)&lt;br /&gt;
	if ((0 ~= namespace) or nocat) and not name_get then						-- only categorize in article space&lt;br /&gt;
		return &#039;&#039;;																-- return empty string for concatenation&lt;br /&gt;
	end&lt;br /&gt;
&lt;br /&gt;
--	中文版无&lt;br /&gt;
--	if mw.ustring.find (language_name, &#039;语系&#039;, 1, true) then&lt;br /&gt;
--		return substitute (&#039;[[$1 $2]]&#039;, {cfg.make_category_t.collective_cat, language_name});&lt;br /&gt;
--	end&lt;br /&gt;
&lt;br /&gt;
	if this_wiki_lang_tag == code and language_name == &#039;中文&#039; then				-- 名稱必須是「中文」&lt;br /&gt;
		return substitute (&#039;[[$1$2$3$4]]&#039;, {									-- unique category name for the local language&lt;br /&gt;
			cfg.make_category_t.cat_prefix,&lt;br /&gt;
			cfg.make_category_t.explicit_cat,&lt;br /&gt;
			language_name,&lt;br /&gt;
			cfg.make_category_t.cat_postfix,&lt;br /&gt;
			});&lt;br /&gt;
	elseif (page_exists (substitute (&#039;$1$2$3&#039;, {&lt;br /&gt;
		cfg.make_category_t.cat_prefix,&lt;br /&gt;
		language_name,&lt;br /&gt;
		cfg.make_category_t.cat_postfix,&lt;br /&gt;
	}))) then&lt;br /&gt;
		return substitute (&#039;[[$1$2$3]]&#039;, {										-- category for individual languages&lt;br /&gt;
			cfg.make_category_t.cat_prefix,&lt;br /&gt;
			language_name,&lt;br /&gt;
			cfg.make_category_t.cat_postfix,&lt;br /&gt;
			});&lt;br /&gt;
	else&lt;br /&gt;
		return substitute (&#039;[[$1$2$3]]&#039;, {										-- 非中文内容&lt;br /&gt;
			cfg.make_category_t.cat_prefix,&lt;br /&gt;
			cfg.make_category_t.cat_nonezh,&lt;br /&gt;
			cfg.make_category_t.cat_postfix,&lt;br /&gt;
			});&lt;br /&gt;
	end&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
--[[--------------------------&amp;lt; M A K E _ T R A N S L I T &amp;gt;----------------------------------------------------&lt;br /&gt;
&lt;br /&gt;
Return translit &amp;lt;i lang=xx-Latn&amp;gt;...&amp;lt;/i&amp;gt; where xx is the language code; else return empty string.&lt;br /&gt;
&lt;br /&gt;
The value |script= is not used in {{transliteration}} for this purpose; instead it uses |code.  Because language scripts&lt;br /&gt;
are listed in the {{transliteration}} switches they are included in the data tables.  The script parameter is introduced&lt;br /&gt;
at {{Language with name and transliteration}}.  If |script= is set, this function uses it in preference to code.&lt;br /&gt;
&lt;br /&gt;
To avoid confusion, in this module and the templates that use it, the transliteration script parameter is renamed&lt;br /&gt;
to be |translit-script= (in this function, tscript).&lt;br /&gt;
&lt;br /&gt;
This function is used by both lang_xx() and transl()&lt;br /&gt;
	lang_xx() always provides code, language_name, and translit; may provide tscript; never provides style&lt;br /&gt;
	transl() always provides language_name, translit, and one of code or tscript, never both; always provides style&lt;br /&gt;
&lt;br /&gt;
For {{transliteration}}, style only applies when a language code is provided.&lt;br /&gt;
&lt;br /&gt;
]]&lt;br /&gt;
&lt;br /&gt;
local function make_translit (code, language_name, translit, std, tscript, style)&lt;br /&gt;
	local title_t = lang_data.translit_title_table;								-- table of transliteration standards and the language codes and scripts that apply to those standards&lt;br /&gt;
	local title_text = &#039;&#039;;														-- tool tip text for title= attribute&lt;br /&gt;
&lt;br /&gt;
	std = std and std:lower();													-- lower case for table indexing&lt;br /&gt;
&lt;br /&gt;
	if not is_set (std) and not is_set (tscript) then							-- when neither standard nor script specified&lt;br /&gt;
		title_text = language_name;												-- write a generic tool tip&lt;br /&gt;
		title_text = substitute (&#039;$1$2&#039;, {title_text, cfg.lang_xx_t.romanization});	-- 中文版添加&lt;br /&gt;
--		中文版不需要&lt;br /&gt;
--		if not mw.ustring.find (language_name, &#039;languages&#039;, 1, true) then		-- collective language names (plural &#039;languages&#039; is part of the name)&lt;br /&gt;
--			title_text = substitute (&#039;$1-$2&#039;, {title_text, cfg.misc_text_t.language});	-- skip this text (individual and macro languages only)&lt;br /&gt;
--		end&lt;br /&gt;
--		title_text = substitute (&#039;$1 $2&#039;, {title_text, mw.ustring.lower (cfg.engvar_t[engvar][&#039;romanisz_lc&#039;])});	-- finish the tool tip; use romanization when neither script nor standard supplied&lt;br /&gt;
&lt;br /&gt;
	elseif is_set (std) and is_set (tscript) then								-- when both are specified&lt;br /&gt;
		if title_t[std] then													-- and if standard is legitimate&lt;br /&gt;
			if title_t[std][tscript] then										-- and if script for that standard is legitimate&lt;br /&gt;
				if script_table[tscript] then&lt;br /&gt;
					title_text = substitute (&#039;$1$2（$3）$4&#039;, {					-- add the appropriate text to the tool tip&lt;br /&gt;
						title_text,&lt;br /&gt;
						title_t[std][tscript:lower()],&lt;br /&gt;
						script_table[tscript],&lt;br /&gt;
						cfg.make_translit_t.transliteration,&lt;br /&gt;
						});&lt;br /&gt;
				else&lt;br /&gt;
					title_text = title_text .. title_t[std][&#039;default&#039;];			-- use the default if script not in std table; TODO: maint cat? error message because script not found for this standard?&lt;br /&gt;
				end&lt;br /&gt;
			else&lt;br /&gt;
				title_text = title_text .. title_t[std][&#039;default&#039;];				-- use the default if script not in std table; TODO: maint cat? error message because script not found for this standard?&lt;br /&gt;
			end&lt;br /&gt;
		else&lt;br /&gt;
			return translit&lt;br /&gt;
		end&lt;br /&gt;
&lt;br /&gt;
	elseif is_set (std) then													-- translit-script not set, use language code&lt;br /&gt;
		if not title_t[std] then&lt;br /&gt;
			return translit&lt;br /&gt;
		end&lt;br /&gt;
&lt;br /&gt;
		if title_t[std][code] then												-- if language code is in the table (transl may not provide a language code)&lt;br /&gt;
			title_text = substitute (&#039;$1$2（$3）$4&#039;, {							-- add the appropriate text to the tool tip&lt;br /&gt;
				title_text,&lt;br /&gt;
				title_t[std][code:lower()],&lt;br /&gt;
				language_name,&lt;br /&gt;
				cfg.make_translit_t.transliteration,&lt;br /&gt;
				});&lt;br /&gt;
		else																	-- code doesn&#039;t match&lt;br /&gt;
			title_text = title_text .. title_t[std][&#039;default&#039;];					-- so use the standard&#039;s default&lt;br /&gt;
		end&lt;br /&gt;
&lt;br /&gt;
	else																		-- here if translit-script set but translit-std not set&lt;br /&gt;
		if title_t[&#039;no_std&#039;][tscript] then&lt;br /&gt;
			title_text = title_text .. title_t[&#039;no_std&#039;][tscript];				-- use translit-script if set&lt;br /&gt;
		elseif title_t[&#039;no_std&#039;][code] then&lt;br /&gt;
			title_text = title_text .. title_t[&#039;no_std&#039;][code];					-- use language code&lt;br /&gt;
		else&lt;br /&gt;
			if is_set (tscript) then&lt;br /&gt;
				title_text = substitute (&#039;$1$2-$3$4&#039;, {							-- write a script tool tip&lt;br /&gt;
					title_text,&lt;br /&gt;
					language_name,&lt;br /&gt;
					cfg.make_translit_t.script,&lt;br /&gt;
					cfg.make_translit_t.transliteration,&lt;br /&gt;
					});&lt;br /&gt;
--			中文版不需要&lt;br /&gt;
--			elseif is_set (code) then&lt;br /&gt;
--				if not mw.ustring.find (language_name, &#039;languages&#039;, 1, true) then	-- collective language names (plural &#039;languages&#039; is part of the name)&lt;br /&gt;
--					title_text = substitute (&#039;$1-$2&#039;, {							-- skip this text (individual and macro languages only)&lt;br /&gt;
--						title_text,&lt;br /&gt;
--						cfg.misc_text_t.language,&lt;br /&gt;
--						});&lt;br /&gt;
--				end&lt;br /&gt;
--					title_text = substitute (&#039;$1 $2&#039;, {							-- finish the tool tip&lt;br /&gt;
--						title_text,&lt;br /&gt;
--						cfg.make_translit_t.transliteration,&lt;br /&gt;
--						});&lt;br /&gt;
			else&lt;br /&gt;
					title_text = substitute (&#039;$1$2&#039;, {							-- generic tool tip (can we ever get here?)&lt;br /&gt;
						title_text,&lt;br /&gt;
						cfg.make_translit_t.transliteration,&lt;br /&gt;
						});&lt;br /&gt;
			end&lt;br /&gt;
		end&lt;br /&gt;
	end&lt;br /&gt;
&lt;br /&gt;
	local tag&lt;br /&gt;
	if is_set (code) then														-- when a language code is provided (always with {{lang-??}} templates, not always with {{transliteration}})&lt;br /&gt;
		code = code:match (&#039;^(%a%a%a?)&#039;);										-- strip all subtags leaving only the language subtag&lt;br /&gt;
		if not style then														-- 中文版默认不应用斜体&lt;br /&gt;
			tag = &#039;&amp;lt;span lang=&amp;quot;%s-Latn&amp;quot;&amp;gt;%s&amp;lt;/span&amp;gt;&#039;&lt;br /&gt;
		else&lt;br /&gt;
			tag = &#039;&amp;lt;span style=&amp;quot;font-style: %s&amp;quot; lang=&amp;quot;%s-Latn&amp;quot;&amp;gt;%s&amp;lt;/span&amp;gt;&#039;		-- non-standard style, construct a span tag for it&lt;br /&gt;
			tag = string.format(tag, style, &amp;quot;%s&amp;quot;, &amp;quot;%s&amp;quot;)&lt;br /&gt;
		end&lt;br /&gt;
		tag = string.format(tag, code, &amp;quot;%s&amp;quot;)&lt;br /&gt;
	else&lt;br /&gt;
		tag = &#039;&amp;lt;span&amp;gt;%s&amp;lt;/span&amp;gt;&#039;													-- when no language code: no lang= attribute, not italic ({{transliteration}} only)&lt;br /&gt;
	end&lt;br /&gt;
&lt;br /&gt;
	tag = string.format(tag, translit)											-- add the translit text&lt;br /&gt;
	if &#039;&#039; == title_text then													-- when there is no need for a tool-tip&lt;br /&gt;
		return tag;																-- done&lt;br /&gt;
	else&lt;br /&gt;
--		中文版不需要&lt;br /&gt;
--		title_text = cfg.engvar_sel_t.gb == engvar and title_text:gsub (&#039;([Rr]omani)z&#039;, &#039;%1s&#039;) or title_text;	-- gb eng when engvar specifies gb eng; us eng else&lt;br /&gt;
		return title_wrapper_make (title_text, tag, &#039;span&#039;);					-- wrap with a tool-tip span and done&lt;br /&gt;
	end&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
--[[--------------------------&amp;lt; V A L I D A T E _ T E X T &amp;gt;----------------------------------------------------&lt;br /&gt;
&lt;br /&gt;
This function checks the content of args.text and returns empty string if nothing is amiss else it returns an&lt;br /&gt;
error message. The tests are for empty or missing text and for improper or disallowed use of apostrophe markup.&lt;br /&gt;
&lt;br /&gt;
Italic rendering is controlled by the |italic= template parameter so italic markup should never appear in args.text&lt;br /&gt;
either as &#039;&#039;itself&#039;&#039; or as &#039;&#039;&#039;&#039;&#039;bold italic&#039;&#039;&#039;&#039;&#039; unless |italic=unset or |italic=invert.&lt;br /&gt;
&lt;br /&gt;
]]&lt;br /&gt;
&lt;br /&gt;
local function validate_text (template, args)&lt;br /&gt;
	if not is_set (args.text) then&lt;br /&gt;
		make_error_msg (cfg.validate_text_t.no_text, args, template)&lt;br /&gt;
		args.text = &#039;&#039;&lt;br /&gt;
		return&lt;br /&gt;
	end&lt;br /&gt;
&lt;br /&gt;
	if args.text:find (&amp;quot;%f[\&#039;]\&#039;\&#039;\&#039;\&#039;%f[^\&#039;]&amp;quot;) or args.text:find (&amp;quot;\&#039;\&#039;\&#039;\&#039;\&#039;[\&#039;]+&amp;quot;) then	-- because we&#039;re looking, look for 4 appostrophes or 6+ appostrophes&lt;br /&gt;
		make_error_msg (cfg.validate_text_t.malformed_markup, args, template)&lt;br /&gt;
		return&lt;br /&gt;
	end&lt;br /&gt;
&lt;br /&gt;
	local style = args.italic or args.italics or args.i;&lt;br /&gt;
&lt;br /&gt;
	-- 中文版修改：|italic=no 和未指定 |italic= 時不檢查斜體標記&lt;br /&gt;
	if style and (cfg.keywords_t.unset ~= style) and (cfg.keywords_t.negative ~= style) and (cfg.keywords_t.invert ~= style) then&lt;br /&gt;
		if args.text:find (&amp;quot;%f[\&#039;]\&#039;\&#039;%f[^\&#039;]&amp;quot;) or args.text:find (&amp;quot;%f[\&#039;]\&#039;\&#039;\&#039;\&#039;\&#039;%f[^\&#039;]&amp;quot;) then	-- italic but not bold, or bold italic&lt;br /&gt;
			make_error_msg (cfg.validate_text_t.italic_markup, args, template)&lt;br /&gt;
			return&lt;br /&gt;
		end&lt;br /&gt;
	end&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
--[[--------------------------&amp;lt; R E N D E R _ M A I N T &amp;gt;------------------------------------------------------&lt;br /&gt;
&lt;br /&gt;
Render mainenance messages and categories.&lt;br /&gt;
&lt;br /&gt;
]]&lt;br /&gt;
&lt;br /&gt;
local function render_maint (nocat)&lt;br /&gt;
	local maint = {};&lt;br /&gt;
&lt;br /&gt;
	if 0 &amp;lt; #maint_msgs then														-- when there are maintenance messages&lt;br /&gt;
		table.insert (maint, table.concat ({&#039;&amp;lt;span class=&amp;quot;lang-comment&amp;quot; style=&amp;quot;font-style: normal; display: none; color: #33aa33; margin-left: 0.3em;&amp;quot;&amp;gt;&#039;}));	-- opening &amp;lt;span&amp;gt; tag&lt;br /&gt;
		for _, msg in ipairs (maint_msgs) do&lt;br /&gt;
			table.insert (maint, table.concat ({msg, &#039;&#039;}));						-- add message strings&lt;br /&gt;
		end&lt;br /&gt;
		table.insert (maint, &#039;&amp;lt;/span&amp;gt;&#039;);										-- close the span&lt;br /&gt;
	end&lt;br /&gt;
&lt;br /&gt;
	if (0 &amp;lt; #maint_cats) and (0 == namespace) and not nocat then				-- when there are maintenance categories; article namespace only&lt;br /&gt;
		for _, cat in ipairs (maint_cats) do&lt;br /&gt;
			table.insert (maint, table.concat ({&#039;[[Category:&#039;, cat, &#039;]]&#039;}));	-- format and add the categories&lt;br /&gt;
		end&lt;br /&gt;
	end&lt;br /&gt;
&lt;br /&gt;
	return table.concat (maint);&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
--[[--------------------------&amp;lt; P R O T O _ P R E F I X &amp;gt;------------------------------------------------------&lt;br /&gt;
&lt;br /&gt;
For proto languages, text is prefixed with a splat. We do that here as a flag for make_text_html() so that a splat&lt;br /&gt;
will be rendered outside of italic markup (if used). If the first character in text here is already a splat, we&lt;br /&gt;
do nothing.&lt;br /&gt;
&lt;br /&gt;
proto_param is boolean or nil; true adds splat prefix regardless of language name; false removes and inhibits&lt;br /&gt;
regardless of language name; nil does nothing; presumes that the value in text is correct but removes extra splac.&lt;br /&gt;
&lt;br /&gt;
]]&lt;br /&gt;
&lt;br /&gt;
local function proto_prefix (text, language_name, proto_param)&lt;br /&gt;
	if false == proto_param then												-- when forced by |proto=no&lt;br /&gt;
		return text:gsub (&#039;^%**&#039;, &#039;&#039;);											-- return text without splat prefix regardless of language name or existing splat prefix in text&lt;br /&gt;
	elseif (language_name:find (&#039;^原始&#039;) or (true == proto_param)) then			-- language is a proto or forced by |proto=yes&lt;br /&gt;
		return text:gsub (&#039;^%**&#039;, &#039;*&#039;);											-- prefix proto-language text with a splat; also removes duplicate prefixing splats&lt;br /&gt;
	end&lt;br /&gt;
&lt;br /&gt;
	return text:gsub (&#039;^%*+&#039;, &#039;*&#039;);												-- return text unmolested except multiple splats reduced to one splat&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
--[[--------------------------&amp;lt; H A S _ P O E M _ T A G &amp;gt;------------------------------------------------------&lt;br /&gt;
&lt;br /&gt;
Looks for a poem strip marker in text; returns true when found; false else.&lt;br /&gt;
&lt;br /&gt;
Auto-italic detection disabled when text has poem stripmarker because it is not possible for this code to know&lt;br /&gt;
the content that will replace the stripmarker.&lt;br /&gt;
&lt;br /&gt;
]]&lt;br /&gt;
&lt;br /&gt;
local function has_poem_tag (text)&lt;br /&gt;
	return text:find (&#039;\127[^\127]*UNIQ%-%-poem%-[%a%d]+%-QINU[^\127]*\127&#039;) and true or false;&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
--[[--------------------------&amp;lt; H T M L _ T A G _ S E L E C T &amp;gt;------------------------------------------------&lt;br /&gt;
&lt;br /&gt;
Inspects content of and selectively trims text.  Returns text and the name of an appropriate HTML tag for text.&lt;br /&gt;
&lt;br /&gt;
If text contains:&lt;br /&gt;
	\n\n	text has implied &amp;lt;p&amp;gt;..&amp;lt;/p&amp;gt; tags - trim leading and trailing whitespace and return&lt;br /&gt;
If text begins with list markup:&lt;br /&gt;
	\n*		unordered&lt;br /&gt;
	\n;		definition&lt;br /&gt;
	\n:		definition&lt;br /&gt;
	\n#		ordered&lt;br /&gt;
trim all leading whitespace except  \n and trim all trailing whitespace&lt;br /&gt;
&lt;br /&gt;
If text contains &amp;lt;poem&amp;gt;...&amp;lt;/poem&amp;gt; stripmarker, return text unmodified and choose &amp;lt;div&amp;gt;..&amp;lt;/div&amp;gt; tags because&lt;br /&gt;
the stripmarker is replaced with text wrapped in &amp;lt;div&amp;gt;..&amp;lt;/div&amp;gt; tags.&lt;br /&gt;
&lt;br /&gt;
If the text contains any actual &amp;lt;div&amp;gt;...&amp;lt;/div&amp;gt; tags, then it&#039;s again returned unmodified and &amp;lt;div&amp;gt;...&amp;lt;/div&amp;gt;&lt;br /&gt;
tags are used to wrap it, to prevent div/span inversion.&lt;br /&gt;
&lt;br /&gt;
]]&lt;br /&gt;
&lt;br /&gt;
local function html_tag_select (text)&lt;br /&gt;
	local tag;&lt;br /&gt;
&lt;br /&gt;
	if has_poem_tag (text) then													-- contains poem stripmarker (we can&#039;t know the content of that)&lt;br /&gt;
		tag = &#039;div&#039;;															-- poem replacement is in div tags so lang must use div tags&lt;br /&gt;
	elseif text:find (&#039;&amp;lt;div&#039;) then												-- reductive; if the text contains a div tag, we must use div tags&lt;br /&gt;
		tag = &#039;div&#039;;&lt;br /&gt;
	elseif mw.text.trim (text):find (&#039;\n\n+&#039;) then								-- contains implied p tags&lt;br /&gt;
		text = mw.text.trim (text);												-- trim leading and trailing whitespace characters&lt;br /&gt;
		tag = &#039;div&#039;;															-- must be div because span may not contain p tags (added later by MediaWiki); poem replacement is in div tags&lt;br /&gt;
	elseif text:find (&#039;\n[%*:;%#]&#039;) then										-- if text has list markup&lt;br /&gt;
		text = text:gsub (&#039;^[\t\r\f ]*&#039;, &#039;&#039;):gsub (&#039;%s*$&#039;, &#039;&#039;);					-- trim all whitespace except leading newline character &#039;\n&#039;&lt;br /&gt;
		tag = &#039;div&#039;;															-- must be div because span may not contain ul, dd, dl, ol tags (added later by MediaWiki)&lt;br /&gt;
	else&lt;br /&gt;
		text = mw.text.trim (text);												-- plain text&lt;br /&gt;
		tag = &#039;span&#039;;															-- so span is fine&lt;br /&gt;
	end&lt;br /&gt;
&lt;br /&gt;
	return text, tag;&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
--[[--------------------------&amp;lt; V A L I D A T E _ P R O T O &amp;gt;--------------------------------------------------&lt;br /&gt;
&lt;br /&gt;
Validates value assigned to |proto=; permitted values are yes and no; yes returns as true, no returns as false,&lt;br /&gt;
empty string (or parameter omitted) returns as nil; any other value returns nil with &amp;lt;proto_param&amp;gt; as second&lt;br /&gt;
return value for use in error message.&lt;br /&gt;
&lt;br /&gt;
]]&lt;br /&gt;
&lt;br /&gt;
local function validate_proto (proto_param)&lt;br /&gt;
	if cfg.keywords_t.affirmative == proto_param then&lt;br /&gt;
		return true;&lt;br /&gt;
	elseif cfg.keywords_t.negative == proto_param then&lt;br /&gt;
		return false;&lt;br /&gt;
	elseif is_set (proto_param) then&lt;br /&gt;
		return nil, proto_param;												-- |proto= something other than &#039;yes&#039; or &#039;no&#039;&lt;br /&gt;
	else&lt;br /&gt;
		return nil;																-- missing or empty&lt;br /&gt;
	end&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
--[[--------------------------&amp;lt; L A N G U A G E _ N A M E _ G E T &amp;gt;--------------------------------------------&lt;br /&gt;
&lt;br /&gt;
Common function to return language name from the data set according to IETF tag.&lt;br /&gt;
&lt;br /&gt;
Returns language name if found in data tables; nil else.&lt;br /&gt;
&lt;br /&gt;
]]&lt;br /&gt;
&lt;br /&gt;
local function language_name_get (ietf, code, cat)&lt;br /&gt;
	ietf = ietf:lower();														-- ietf:lower() because format_ietf_tag() returns mixed case&lt;br /&gt;
&lt;br /&gt;
	local name;																	-- remains nil if not found&lt;br /&gt;
&lt;br /&gt;
	if override_table[ietf] then												-- look for whole IETF tag in override table&lt;br /&gt;
		name = override_table[ietf];&lt;br /&gt;
	elseif override_table[code] then											-- not there so try basic language tag&lt;br /&gt;
		name = override_table[code];&lt;br /&gt;
	elseif lang_table[code] then												-- shift to IANA active tag/name table&lt;br /&gt;
		name = lang_table[code];&lt;br /&gt;
	elseif lang_dep_table[code] then											-- try the IANA deprecated tag/name table&lt;br /&gt;
		name = lang_dep_table[code];&lt;br /&gt;
	end&lt;br /&gt;
&lt;br /&gt;
	if lang_dep_table[code] and cat then										-- because deprecated code may have been overridden to en.wiki preferred name&lt;br /&gt;
		table.insert (maint_cats, substitute (cfg.language_name_get_t.deprecated_cat, {code}));&lt;br /&gt;
		table.insert (maint_msgs, substitute (cfg.language_name_get_t.deprecated_msg, {code}));&lt;br /&gt;
	end&lt;br /&gt;
&lt;br /&gt;
	return name;																-- name from data tables or nil&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
--[[--------------------------&amp;lt; T E X T _ S C R I P T _ M A T C H _ T E S T &amp;gt;----------------------------------&lt;br /&gt;
&lt;br /&gt;
IETF script subtag should match the script of the &amp;lt;text&amp;gt;.  This module does not attempt to know all scripts and&lt;br /&gt;
what they look like.  It does know what Latn script looks like so when &amp;lt;text&amp;gt; is written using other than the Latn&lt;br /&gt;
script, the IETF script subtag, if present, should not be Latn.&lt;br /&gt;
&lt;br /&gt;
Conversely, when &amp;lt;text&amp;gt; is written using the Latn script, the IETF script subtag, if present, should be Latn.&lt;br /&gt;
&lt;br /&gt;
For the purposes of this test, Latf (Fraktur) and Latg (Gaelic) are considered to be equivalent to Latn because&lt;br /&gt;
unicode treats these two scripts as font-specific variants of Latn.&lt;br /&gt;
&lt;br /&gt;
Returns an error message when mismatch detected; nil else.&lt;br /&gt;
&lt;br /&gt;
]]&lt;br /&gt;
&lt;br /&gt;
local function text_script_match_test (script, is_latn_text, pos, char)&lt;br /&gt;
	local scripts_t = {[&#039;latf&#039;] = true, [&#039;latg&#039;] = true, [&#039;latn&#039;] = true};		-- unicode &#039;latn&#039; scripts; &#039;latf&#039; and &#039;latg&#039; are font variants so there are no Fraktur or Gaelic codepoints&lt;br /&gt;
	if is_set (script) then														-- don&#039;t bother with the rest of this if &amp;lt;script&amp;gt; is nil or empty string&lt;br /&gt;
		script = script:lower();												-- lower case to index into &amp;lt;scripts_t&amp;gt;&lt;br /&gt;
		if is_latn_text then													-- when text is wholly Latn script&lt;br /&gt;
			if not scripts_t[script] then										-- but a non-Latn script is specified&lt;br /&gt;
				return cfg.text_script_match_test_t.latn_txt_mismatch;			-- emit an error message&lt;br /&gt;
			end&lt;br /&gt;
		else																	-- when text is not wholly Latn script&lt;br /&gt;
			if scripts_t[script] then											-- but a Latn script is specified&lt;br /&gt;
				return substitute (cfg.text_script_match_test_t.latn_scr_mismatch, {pos, char});	-- emit an error message with position of first offending character&lt;br /&gt;
			end&lt;br /&gt;
		end&lt;br /&gt;
	end&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
--[[--------------------------&amp;lt; B I N A R Y _ S E A R C H &amp;gt;---------------------------------------------------&lt;br /&gt;
&lt;br /&gt;
conducts a binary search of &amp;lt;ranges_t&amp;gt; for a sub-range that holds &amp;lt;target&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
returns boolean true if a sub-range holding &amp;lt;target&amp;gt; is found; boolean false else.&lt;br /&gt;
&lt;br /&gt;
]]&lt;br /&gt;
&lt;br /&gt;
local function binary_search (target, ranges_t)&lt;br /&gt;
	local idx_bot = 1;															-- initialize to index of first key&lt;br /&gt;
	local idx_top = sizeof_ranges_t;											-- initialize to index of last key (number of keys)&lt;br /&gt;
&lt;br /&gt;
	if (target &amp;lt; ranges_t[idx_bot][1]) or (target &amp;gt; ranges_t[idx_top][2]) then	-- invalid; target out of range&lt;br /&gt;
		return;																	-- abandon&lt;br /&gt;
	end&lt;br /&gt;
&lt;br /&gt;
	local idx_mid;																-- calculated index of range midway between top index and bottom index&lt;br /&gt;
	local flag = false;															-- flag to tell us when we&#039;ve evaluated last (highest) range in &amp;lt;ranges_t&amp;gt;&lt;br /&gt;
&lt;br /&gt;
	while 1 do&lt;br /&gt;
		idx_mid = math.ceil ((idx_bot + idx_top) / 2);							-- get the mid-point in the &amp;lt;ranges_t&amp;gt; sequence&lt;br /&gt;
		if (target &amp;gt;= ranges_t[idx_mid][1]) and (target &amp;lt;= ranges_t[idx_mid][2]) then	-- indexed range low value &amp;lt;= target &amp;lt;= indexed range high value&lt;br /&gt;
			return true;														-- we found the range that holds the &amp;lt;target&amp;gt; character; return true&lt;br /&gt;
&lt;br /&gt;
		elseif (target &amp;gt; ranges_t[idx_mid][2]) then								-- is &amp;lt;target&amp;gt; &amp;gt; indexed range high value?&lt;br /&gt;
			idx_bot = idx_mid;													-- adjust &amp;lt;idx_bot&amp;gt; up&lt;br /&gt;
&lt;br /&gt;
		else																	-- here when &amp;lt;target&amp;gt; less than indexed range low value&lt;br /&gt;
			idx_top = idx_mid - 1;												-- adjust &amp;lt;idx_top&amp;gt; down&lt;br /&gt;
		end&lt;br /&gt;
&lt;br /&gt;
		if flag then&lt;br /&gt;
			break;																-- here when we just evaluated the last range and &amp;lt;target&amp;gt; not found&lt;br /&gt;
		end&lt;br /&gt;
&lt;br /&gt;
		if not flag and (idx_bot == idx_top) then								-- set true just before we evaluate the last (highest) range in &amp;lt;ranges_t&amp;gt;&lt;br /&gt;
			flag = true;&lt;br /&gt;
		end&lt;br /&gt;
	end&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
--[[--------------------------&amp;lt; I S _ L A T I N &amp;gt;--------------------------------------------------------------&lt;br /&gt;
&lt;br /&gt;
compare &amp;lt;text&amp;gt; as codepoints to lists of known codepoints accepted as Latn script&lt;br /&gt;
&lt;br /&gt;
returns boolean true and modified &amp;lt;text&amp;gt; when &amp;lt;text&amp;gt; is wrapped in accept-as-written markup&lt;br /&gt;
&lt;br /&gt;
returns boolean true and &amp;lt;text&amp;gt; when codepoint is known&lt;br /&gt;
&lt;br /&gt;
returns boolean false, &amp;lt;text&amp;gt;, non-Latn codepoint position in &amp;lt;text&amp;gt; (left to right), and the codepoint character&lt;br /&gt;
	when codepoint is not known&lt;br /&gt;
&lt;br /&gt;
TODO: when text has accept-as-written markup, return a non-boolean value to indicate that &amp;lt;text&amp;gt; is not wholly&lt;br /&gt;
	latn script?  Use that return value to create non-Latn HTML lang= attribute because &amp;lt;text&amp;gt; isn&#039;t really&lt;br /&gt;
	latn so lang=und (undetermined)? or instead, omit the -Latn subtag? (without -Latn need to force |italic=yes)&lt;br /&gt;
&lt;br /&gt;
]]&lt;br /&gt;
&lt;br /&gt;
local function is_latin (text, tag)&lt;br /&gt;
	local count;&lt;br /&gt;
	text, count = text:gsub (&#039;^%(%((.+)%)%)$&#039;, &#039;%1&#039;);							-- remove accept-as-written markup if present&lt;br /&gt;
	if 0 ~= count then&lt;br /&gt;
		return true, text;														-- markup present so assume that &amp;lt;text&amp;gt; is Latn-script&lt;br /&gt;
	end&lt;br /&gt;
&lt;br /&gt;
	local pos = 0;																-- position counter for error messaging&lt;br /&gt;
	for codepoint in mw.ustring.gcodepoint (text) do							-- fetch each code point&lt;br /&gt;
		pos = pos + 1;															-- bump the position counter&lt;br /&gt;
&lt;br /&gt;
		if not is_latn_data.singles_t[codepoint] and							-- codepoint not found in the singles list?&lt;br /&gt;
			not binary_search (codepoint, is_latn_data.ranges_t) and			-- codepoint not a member of a listed range?&lt;br /&gt;
			not (tag and is_latn_data.specials_t[codepoint] and is_latn_data.specials_t[codepoint][tag]) then	-- not a language-specific codepoint?&lt;br /&gt;
				return false, text, pos, mw.ustring.char (codepoint);			-- codepoint not known; return false with codepoint position and character representation&lt;br /&gt;
		end&lt;br /&gt;
	end&lt;br /&gt;
	return true, text;															-- is known; return &amp;lt;text&amp;gt;&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
--[[--------------------------&amp;lt; 处 理 中 文 文 本 转 换 &amp;gt;--------------------------------------------------------------&lt;br /&gt;
&lt;br /&gt;
该函数用于判断输入的语言代码是否属于中文（包括汉语方言），并决定是否需要禁用繁简转换。&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
功能：&lt;br /&gt;
- 如果语言代码指定为无变体的中文代码 `zh-` 和其他以汉字作为书写系统的汉语方言文字（如粤语、吴语、赣语、文言文等），则返回原文本，不做任何修改。&lt;br /&gt;
- 如果语言代码不属于中文或为中文变体（以 `zh-` 开头），则在文本外添加 `-{}-`，以阻止繁简转换。&lt;br /&gt;
&lt;br /&gt;
参数：&lt;br /&gt;
- `code` (string): 语言代码（如 `&amp;quot;zh&amp;quot;`、`&amp;quot;gan&amp;quot;`、`&amp;quot;yue&amp;quot;`、`&amp;quot;en&amp;quot;`）。&lt;br /&gt;
- `text` (string): 需要处理的文本。&lt;br /&gt;
&lt;br /&gt;
返回值：&lt;br /&gt;
- (string) 处理后的文本。&lt;br /&gt;
&lt;br /&gt;
]]&lt;br /&gt;
&lt;br /&gt;
local function chinese_conversion(code, text)&lt;br /&gt;
	-- 定义属于中文及相关方言的语言代码&lt;br /&gt;
	local chinese_codes = { zh = true, gan = true, wuu = true, yue = true, lzh = true, hsn = true }&lt;br /&gt;
&lt;br /&gt;
	if chinese_codes[code] then&lt;br /&gt;
		return text&lt;br /&gt;
	else&lt;br /&gt;
		return &#039;-{&#039; .. text .. &#039;}-&#039;&lt;br /&gt;
	end&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
--[[--------------------------&amp;lt; _ L A N G &amp;gt;--------------------------------------------------------------------&lt;br /&gt;
&lt;br /&gt;
Entry point for {{lang}}.&lt;br /&gt;
&lt;br /&gt;
There should be no reason to set parameters in the {{lang}} {{#invoke:}}&lt;br /&gt;
	&amp;lt;includeonly&amp;gt;{{#invoke:lang|lang}}&amp;lt;/includeonly&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Parameters are received from the template&#039;s frame (parent frame).&lt;br /&gt;
&lt;br /&gt;
]]&lt;br /&gt;
&lt;br /&gt;
local function _lang (args)&lt;br /&gt;
	local out = {};&lt;br /&gt;
	local language_name;														-- used to make category names&lt;br /&gt;
	local category_name;														-- same as language_name except that it retains any parenthetical disambiguators (if any) from the data set&lt;br /&gt;
	local subtags = {};															-- IETF subtags script, region, variant, and private&lt;br /&gt;
	local code;																	-- the language code&lt;br /&gt;
	local msg;																	-- for error messages&lt;br /&gt;
	local tag = &#039;span&#039;;															-- initial value for make_text_html()&lt;br /&gt;
	local template = args.template or cfg.templates_t.lang;&lt;br /&gt;
&lt;br /&gt;
	maint_cats = {};															-- initialize because when this module required into another module, these only declared once so only initialzed once&lt;br /&gt;
	maint_msgs = {};&lt;br /&gt;
&lt;br /&gt;
	error_msgs = {}&lt;br /&gt;
&lt;br /&gt;
	validate_cat_args (args);													-- determine if categorization should be suppressed&lt;br /&gt;
&lt;br /&gt;
	if args[1] and args.code then&lt;br /&gt;
		make_error_msg (substitute (cfg.lang_t.conflict_n_param, {&#039;1&#039;, cfg.lang_t.conflict_n_param_types.code}), args, template)&lt;br /&gt;
	end&lt;br /&gt;
	args.code = args[1] or args.code;											-- prefer args.code&lt;br /&gt;
&lt;br /&gt;
	if args[2] and args.text then&lt;br /&gt;
		make_error_msg (substitute (cfg.lang_t.conflict_n_param, {&#039;2&#039;, cfg.lang_t.conflict_n_param_types.text}), args, template)&lt;br /&gt;
	end&lt;br /&gt;
	args.text = args[2] or args.text;											-- prefer args.text&lt;br /&gt;
&lt;br /&gt;
	validate_text (template, args)&lt;br /&gt;
&lt;br /&gt;
	args.text, tag = html_tag_select (args.text);								-- inspects text; returns appropriate HTML tag with text trimmed accordingly&lt;br /&gt;
&lt;br /&gt;
	args.rtl = args.rtl == cfg.keywords_t.affirmative;							-- convert to boolean: &#039;yes&#039; -&amp;gt; true, other values -&amp;gt; false&lt;br /&gt;
&lt;br /&gt;
	args.proto, msg = validate_proto (args.proto);								-- return boolean, or nil, or nil and error message flag&lt;br /&gt;
	if msg then&lt;br /&gt;
		return make_error_msg (substitute (cfg.lang_t.invalid_proto, {msg}), args, template);&lt;br /&gt;
	end&lt;br /&gt;
&lt;br /&gt;
	code, subtags.script, subtags.region, subtags.variant, subtags.private, msg = get_ietf_parts (args.code);	-- |script=, |region=, |variant= not supported because they should be part of args.code ({{{1}}} in {{lang}})&lt;br /&gt;
&lt;br /&gt;
	if msg then&lt;br /&gt;
		make_error_msg (msg, args, template)&lt;br /&gt;
		msg = nil&lt;br /&gt;
		code = code or &#039;&#039;&lt;br /&gt;
	end&lt;br /&gt;
&lt;br /&gt;
	local is_latn_text, pos, char;&lt;br /&gt;
	is_latn_text, args.text, pos, char= is_latin (args.text, code);				-- make a boolean&lt;br /&gt;
&lt;br /&gt;
	msg = text_script_match_test (subtags.script, is_latn_text, pos, char)&lt;br /&gt;
	if msg then																	-- if an error detected then there is an error message&lt;br /&gt;
		make_error_msg (msg, args, template)&lt;br /&gt;
		msg = nil&lt;br /&gt;
	end&lt;br /&gt;
&lt;br /&gt;
	args.italic, msg = validate_italic (args);&lt;br /&gt;
	if msg then&lt;br /&gt;
		make_error_msg (msg, args, template)&lt;br /&gt;
		msg = nil&lt;br /&gt;
	end&lt;br /&gt;
&lt;br /&gt;
	if nil == args.italic then													-- nil when |italic= absent or not set or |italic=default; args.italic controls&lt;br /&gt;
		if (&#039;latn&#039; == subtags.script) or										-- script is latn&lt;br /&gt;
			(this_wiki_lang_tag ~= code and not is_set (subtags.script) and not has_poem_tag (args.text) and is_latn_text) then	-- text not this wiki&#039;s language, no script specified and not in poem markup but is wholly latn script (auto-italics)&lt;br /&gt;
				-- 中文版默认不应用斜体&lt;br /&gt;
				args.italic = &#039;unset&#039;;											-- DEFAULT for {{lang}} templates is upright; but if latn script set for font-style:italic&lt;br /&gt;
		else&lt;br /&gt;
			args.italic = &#039;inherit&#039;;											-- italic not set; script not latn; inherit current style&lt;br /&gt;
		end&lt;br /&gt;
	end&lt;br /&gt;
&lt;br /&gt;
	if is_set (subtags.script) then												-- if script set, override rtl setting&lt;br /&gt;
		if in_array (subtags.script, lang_data.rtl_scripts) then&lt;br /&gt;
			args.rtl = true;													-- script is an rtl script&lt;br /&gt;
		else&lt;br /&gt;
			args.rtl = false;													-- script is not an rtl script&lt;br /&gt;
		end&lt;br /&gt;
	end&lt;br /&gt;
&lt;br /&gt;
	args.code = format_ietf_tag (code, subtags.script, subtags.region, subtags.variant, subtags.private);	-- format to recommended subtag styles&lt;br /&gt;
	language_name = language_name_get (args.code, code, true) or &#039;&#039;;			-- get language name; try IETF tag first, then code w/o variant then code w/ variant&lt;br /&gt;
&lt;br /&gt;
	if cfg.keywords_t.invert == args.italic and &#039;span&#039; == tag then				-- invert only supported for in-line content&lt;br /&gt;
		args.text = invert_italics (args.text)&lt;br /&gt;
	end&lt;br /&gt;
&lt;br /&gt;
	args.text = chinese_conversion (args.code, args.text) -- 中文版特化部分&lt;br /&gt;
&lt;br /&gt;
	args.text = proto_prefix (args.text, language_name, args.proto);			-- prefix proto-language text with a splat&lt;br /&gt;
&lt;br /&gt;
	table.insert (out, make_text_html (args.code, args.text, tag, args.rtl, args.italic, args.size, language_name));&lt;br /&gt;
	table.insert (out, make_category (code, language_name, args.nocat));&lt;br /&gt;
	table.insert (out, render_maint (args.nocat));								-- maintenance messages and categories&lt;br /&gt;
&lt;br /&gt;
	if not args.noerror and error_msgs[1] then&lt;br /&gt;
		table.insert(out, make_lang_error_span(table.concat(error_msgs)))&lt;br /&gt;
	end&lt;br /&gt;
&lt;br /&gt;
	return table.concat (out);													-- put it all together and done&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
--[[--------------------------&amp;lt; L A N G &amp;gt;----------------------------------------------------------------------&lt;br /&gt;
&lt;br /&gt;
Entry point for {{lang}}.&lt;br /&gt;
&lt;br /&gt;
There should be no reason to set parameters in the {{lang}} {{#invoke:}}&lt;br /&gt;
	&amp;lt;includeonly&amp;gt;{{#invoke:lang|lang}}&amp;lt;/includeonly&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Parameters are received from the template&#039;s frame (parent frame).&lt;br /&gt;
&lt;br /&gt;
]]&lt;br /&gt;
&lt;br /&gt;
local function lang (frame)&lt;br /&gt;
	local args_t = getArgs (frame, {											-- this code so that we can detect and handle wiki list markup in text&lt;br /&gt;
		valueFunc = function (key, value)&lt;br /&gt;
			if 2 == key or &#039;text&#039; == key then									-- the &#039;text&#039; parameter; do not trim wite space&lt;br /&gt;
				return value;													-- return untrimmed &#039;text&#039;&lt;br /&gt;
			elseif value then													-- all other values: if the value is not nil&lt;br /&gt;
				value = mw.text.trim (value);									-- trim whitespace&lt;br /&gt;
				if &#039;&#039; ~= value then												-- empty string when value was only whitespace&lt;br /&gt;
					return value;&lt;br /&gt;
				end&lt;br /&gt;
			end&lt;br /&gt;
			return nil;															-- value was empty or contained only whitespace&lt;br /&gt;
		end																		-- end of valueFunc&lt;br /&gt;
		});&lt;br /&gt;
&lt;br /&gt;
	args_t.fn = nil;															-- unset because not supported but this function might have been called by {{lang|fn=lang|...}}&lt;br /&gt;
&lt;br /&gt;
	local msg = parameter_validate (args_t, cfg.templates_t.lang);				-- verify that all supplied parameters are supported by {{lang-??}}&lt;br /&gt;
	if args_t.noerror then&lt;br /&gt;
		msg = &#039;&#039;&lt;br /&gt;
	else&lt;br /&gt;
		msg = msg and make_lang_error_span(make_error_msg(msg, args_t, cfg.templates_t.lang)) or &#039;&#039;&lt;br /&gt;
	end&lt;br /&gt;
&lt;br /&gt;
	return _lang (args_t) .. msg&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
--[[--------------------------&amp;lt; T R A N S L A T I O N _ M A K E &amp;gt;----------------------------------------------&lt;br /&gt;
&lt;br /&gt;
Stand-alone function to create literal translation of main text.&lt;br /&gt;
&lt;br /&gt;
Also used by {{lang-x2}}.&lt;br /&gt;
&lt;br /&gt;
]]&lt;br /&gt;
&lt;br /&gt;
local function translation_make (args_t)&lt;br /&gt;
	local translation_t = {&#039;，&#039;};												-- initialize output&lt;br /&gt;
&lt;br /&gt;
	if &#039;none&#039; ~= args_t.label then												-- if we want a label&lt;br /&gt;
		table.insert (translation_t, &#039;&amp;lt;small&amp;gt;&#039;);								-- open the &amp;lt;small&amp;gt; HTML tag&lt;br /&gt;
		if cfg.keywords_t.negative == args_t.link then&lt;br /&gt;
			table.insert (translation_t, cfg.translation_make_t.lit_xlation);	-- unlinked form&lt;br /&gt;
		else&lt;br /&gt;
			table.insert (translation_t, make_wikilink (cfg.translation_make_t.lit_xlation));	-- linked form&lt;br /&gt;
		end&lt;br /&gt;
		table.insert (translation_t, &amp;quot;：&amp;lt;/small&amp;gt;&amp;quot;);								-- close the &amp;lt;small&amp;gt; HTML tag&lt;br /&gt;
	end&lt;br /&gt;
	table.insert (translation_t, table.concat ({&#039;「&#039;, args_t.translation, &#039;」&#039;}));&lt;br /&gt;
	return table.concat (translation_t);										-- make a big string and done&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
--[[--------------------------&amp;lt; _ L A N G _ X X &amp;gt;--------------------------------------------------------------&lt;br /&gt;
&lt;br /&gt;
For the {{lang-??}} templates, the only parameter required to be set in the template is the language code.  All&lt;br /&gt;
other parameters can, usually should, be written in the template call.  For {{lang-??}} templates for languages&lt;br /&gt;
that can have multiple writing systems, it may be appropriate to set |script= as well.&lt;br /&gt;
&lt;br /&gt;
For each {{lang-??}} template choose the appropriate entry-point function so that this function knows the default&lt;br /&gt;
styling that should be applied to text.&lt;br /&gt;
&lt;br /&gt;
For normal, upright style:&lt;br /&gt;
	&amp;lt;includeonly&amp;gt;{{#invoke:lang|lang_xx_inherit|code=xx}}&amp;lt;/includeonly&amp;gt;&lt;br /&gt;
For italic style:&lt;br /&gt;
	&amp;lt;includeonly&amp;gt;{{#invoke:lang|lang_xx_italic|code=xx}}&amp;lt;/includeonly&amp;gt;&lt;br /&gt;
&lt;br /&gt;
All other parameters should be received from the template&#039;s frame (parent frame)&lt;br /&gt;
&lt;br /&gt;
Supported parameters are:&lt;br /&gt;
	|code = (required) the IANA language code&lt;br /&gt;
	|script = IANA script code; especially for use with languages that use multiple writing systems&lt;br /&gt;
	|region = IANA region code&lt;br /&gt;
	|variant = IANA variant code&lt;br /&gt;
	|text = (required) the displayed text in language specified by code&lt;br /&gt;
	|link = boolean false (&#039;no&#039;) does not link code-spcified language name to associated language article&lt;br /&gt;
	|rtl = boolean true (&#039;yes&#039;) identifies the language specified by code as a right-to-left language&lt;br /&gt;
	|nocat = boolean true (&#039;yes&#039;) inhibits normal categorization; error categories are not affected&lt;br /&gt;
	|cat = boolian false (&#039;no&#039;) opposite form of |nocat=&lt;br /&gt;
	|italic = boolean true (&#039;yes&#039;) renders displayed text in italic font; boolean false (&#039;no&#039;) renders displayed text in normal font; not set renders according to initial_style_state&lt;br /&gt;
	|lit = text that is a literal translation of text&lt;br /&gt;
	|label = &#039;none&#039; to suppress all labeling (language name, &#039;translit.&#039;, &#039;lit.&#039;)&lt;br /&gt;
				any other text replaces language-name label - automatic wikilinking disabled&lt;br /&gt;
&lt;br /&gt;
	for those {{lang-??}} templates that support transliteration (those templates where |text= is not entirely latn script):&lt;br /&gt;
	|translit = text that is a transliteration of text&lt;br /&gt;
	|translit-std = the standard that applies to the transliteration&lt;br /&gt;
	|translit-script = ISO 15924 script name; falls back to code&lt;br /&gt;
&lt;br /&gt;
For {{lang-??}}, the positional parameters are:&lt;br /&gt;
	{{{1}}}	text&lt;br /&gt;
	{{{2}}}	transliterated text&lt;br /&gt;
	{{{3}}}	literal translation text&lt;br /&gt;
no other positional parameters are allowed&lt;br /&gt;
&lt;br /&gt;
]]&lt;br /&gt;
&lt;br /&gt;
local function _lang_xx (args, base_template)									-- base_template will be either of &#039;Langx&#039; or &#039;Lang-xx&#039;&lt;br /&gt;
	local out = {};&lt;br /&gt;
	local language_name;														-- used to make display text, article links&lt;br /&gt;
	local category_name;														-- same as language_name except that it retains any parenthetical disambiguators (if any) from the data set&lt;br /&gt;
	local subtags = {};															-- IETF subtags script, region, and variant&lt;br /&gt;
	local code;																	-- the language code&lt;br /&gt;
&lt;br /&gt;
	local translit_script_name;													-- name associated with IANA (ISO 15924) script code&lt;br /&gt;
	local translit;&lt;br /&gt;
	local msg;																	-- for error messages&lt;br /&gt;
	local tag = &#039;span&#039;;															-- initial value for make_text_html()&lt;br /&gt;
	local template = args.template or base_template;&lt;br /&gt;
&lt;br /&gt;
	maint_cats = {};															-- initialize because when this module required into another module, these only declared once so only initialzed once&lt;br /&gt;
	maint_msgs = {};&lt;br /&gt;
&lt;br /&gt;
	error_msgs = {}&lt;br /&gt;
&lt;br /&gt;
	local text_idx = (cfg.templates_t.langx == base_template) and 2 or 1;		-- for {{langx}} &#039;text&#039; positional parameter is &#039;2&#039;&lt;br /&gt;
	local translit_idx = (cfg.templates_t.langx == base_template) and 3 or 2;&lt;br /&gt;
	local xlate_idx = (cfg.templates_t.langx == base_template) and 4 or 3;&lt;br /&gt;
&lt;br /&gt;
	if args[text_idx] and args.text then&lt;br /&gt;
		make_error_msg (substitute (cfg.lang_t.conflict_n_param, {text_idx, cfg.lang_t.conflict_n_param_types.text}), args, template)&lt;br /&gt;
	end&lt;br /&gt;
	args.text = args[text_idx] or args.text;									-- prefer positional &#039;text&#039; parameter&lt;br /&gt;
&lt;br /&gt;
	validate_text (template, args)&lt;br /&gt;
&lt;br /&gt;
	args.text, tag = html_tag_select (args.text);								-- inspects text; returns appropriate HTML tag with text trimmed accordingly&lt;br /&gt;
&lt;br /&gt;
	if args[translit_idx] and args.translit then&lt;br /&gt;
		make_error_msg (substitute (cfg.lang_t.conflict_n_param, {translit_idx, cfg.lang_t.conflict_n_param_types.translit}), args, template)&lt;br /&gt;
	end&lt;br /&gt;
	args.translit = args[translit_idx] or args.translit;						-- prefer positional &#039;translit&#039; parameter&lt;br /&gt;
&lt;br /&gt;
	if args[xlate_idx] and (args.translation or args.lit) then&lt;br /&gt;
		make_error_msg (substitute (cfg.lang_xx_t.conflict_n_lit, {xlate_idx}), args, template)&lt;br /&gt;
	elseif args.translation and args.lit then&lt;br /&gt;
		make_error_msg (cfg.lang_xx_t.conflict_lit, args, template)&lt;br /&gt;
	end&lt;br /&gt;
	args.translation = args[xlate_idx] or args.translation or args.lit;			-- prefer positional &#039;translation&#039; parameter&lt;br /&gt;
&lt;br /&gt;
	if args.links and args.link then&lt;br /&gt;
		make_error_msg (cfg.lang_xx_t.conflict_link, args, template)&lt;br /&gt;
	end&lt;br /&gt;
	args.link = args.link or args.links;										-- prefer args.link&lt;br /&gt;
&lt;br /&gt;
	validate_cat_args (args);													-- determine if categorization should be suppressed&lt;br /&gt;
&lt;br /&gt;
	args.rtl = args.rtl == cfg.keywords_t.affirmative;							-- convert to boolean: &#039;yes&#039; -&amp;gt; true, other values -&amp;gt; false&lt;br /&gt;
&lt;br /&gt;
	code, subtags.script, subtags.region, subtags.variant, subtags.private, msg = get_ietf_parts (args.code, args.script, args.region, args.variant);	-- private omitted because private&lt;br /&gt;
&lt;br /&gt;
	if msg then																	-- if an error detected then there is an error message&lt;br /&gt;
		make_error_msg (msg, args, template)&lt;br /&gt;
		msg = nil&lt;br /&gt;
		code = code or &#039;&#039;&lt;br /&gt;
	end&lt;br /&gt;
&lt;br /&gt;
	if args.translit then&lt;br /&gt;
		local latn, pos, char;&lt;br /&gt;
		latn, args.translit, pos, char = is_latin (args.translit, ((&#039;&#039; ~= subtags.private) and (code .. &#039;-x-&#039; .. subtags.private)) or code);&lt;br /&gt;
		if not latn then&lt;br /&gt;
			make_error_msg (substitute (cfg.lang_xx_t.translit_nonlatn, {pos, char}), args, template)&lt;br /&gt;
		end&lt;br /&gt;
	end&lt;br /&gt;
&lt;br /&gt;
	local is_latn_text, text, pos, char = is_latin (args.text, code);			-- make a boolean&lt;br /&gt;
	args.text = text;															-- may have been modified (accept-as-written markup removed)&lt;br /&gt;
&lt;br /&gt;
	msg = text_script_match_test (subtags.script, is_latn_text, pos, char)&lt;br /&gt;
	if msg then																	-- if an error detected then there is an error message&lt;br /&gt;
		make_error_msg (msg, args, template)&lt;br /&gt;
		msg = nil&lt;br /&gt;
	end&lt;br /&gt;
&lt;br /&gt;
	args.italic, msg = validate_italic (args);&lt;br /&gt;
	if msg then&lt;br /&gt;
		make_error_msg (msg, args, template)&lt;br /&gt;
		msg = nil&lt;br /&gt;
	end&lt;br /&gt;
&lt;br /&gt;
	if cfg.templates_t.langx == base_template then								-- auto-italics  for {{langx}} templates; adapted from {{lang}} (no support for poem tag)&lt;br /&gt;
		if nil == args.italic then												-- nil when |italic= absent or not set or |italic=default; args.italic controls&lt;br /&gt;
			args.italic = &#039;inherit&#039;;											-- italic not set; script not latn; inherit current style&lt;br /&gt;
		end&lt;br /&gt;
&lt;br /&gt;
	else																		-- {{lang-xx}} does not do auto italics; retained for those wikis that don&#039;t support {{langx}}&lt;br /&gt;
		if nil == args.italic then												-- args.italic controls&lt;br /&gt;
			args.italic = initial_style_state;									-- here when |italic= and |script= not set; set for font-style:&amp;lt;initial_style_state&amp;gt;&lt;br /&gt;
		end&lt;br /&gt;
	end&lt;br /&gt;
&lt;br /&gt;
	if is_set (subtags.script) then												-- if script set override rtl setting&lt;br /&gt;
		if in_array (subtags.script, lang_data.rtl_scripts) then&lt;br /&gt;
			args.rtl = true;													-- script is an rtl script&lt;br /&gt;
		else&lt;br /&gt;
			args.rtl = false;													-- script is not an rtl script&lt;br /&gt;
		end&lt;br /&gt;
	end&lt;br /&gt;
&lt;br /&gt;
	args.proto, msg = validate_proto (args.proto);								-- return boolean, or nil, or nil and error message flag&lt;br /&gt;
	if msg then&lt;br /&gt;
		return make_error_msg (substitute (cfg.lang_t.invalid_proto, {args.proto}), args, template);&lt;br /&gt;
	end&lt;br /&gt;
&lt;br /&gt;
	args.code = format_ietf_tag (code, subtags.script, subtags.region, subtags.variant, subtags.private);	-- format to recommended subtag styles&lt;br /&gt;
	language_name = language_name_get (args.code, code, true) or &#039;&#039;;			-- get language name; try IETF tag first, then code w/o variant then code w/ variant&lt;br /&gt;
&lt;br /&gt;
	category_name = language_name;												-- category names retain IANA parenthetical diambiguators (if any)&lt;br /&gt;
	language_name = language_name:gsub (&#039;%s+%b()&#039;, &#039;&#039;);							-- remove IANA parenthetical disambiguators or qualifiers from names that have them&lt;br /&gt;
&lt;br /&gt;
	if args.label then&lt;br /&gt;
		if &#039;none&#039; ~= args.label then&lt;br /&gt;
			table.insert (out, table.concat ({args.label, &#039;：&#039;}));				-- custom label&lt;br /&gt;
		end&lt;br /&gt;
	else&lt;br /&gt;
		if cfg.keywords_t.negative == args.link then&lt;br /&gt;
			table.insert (out, language_name);									-- language name without wikilink&lt;br /&gt;
		else&lt;br /&gt;
--			中文版不需要&lt;br /&gt;
--			if mw.ustring.find (language_name, &#039;languages&#039;, 1, true) then&lt;br /&gt;
--				table.insert (out, make_wikilink (language_name));				-- collective language name uses simple wikilink&lt;br /&gt;
--			elseif lang_data.article_name[args.code:lower()] then				-- is IETF tag in article name over ride?&lt;br /&gt;
--				table.insert (out, make_wikilink (lang_data.article_name[args.code:lower()], language_name));	-- language name with wikilink from override data&lt;br /&gt;
			if lang_data.article_name[code] then							-- is language tag in article override&lt;br /&gt;
				table.insert (out, make_wikilink (lang_data.article_name[code], language_name));	-- language name with wikilink from override data&lt;br /&gt;
			else&lt;br /&gt;
				table.insert (out, make_wikilink (language_name));				-- language name with wikilink&lt;br /&gt;
			end&lt;br /&gt;
		end&lt;br /&gt;
		table.insert (out, &#039;：&#039;);												-- separator&lt;br /&gt;
	end&lt;br /&gt;
&lt;br /&gt;
	if cfg.keywords_t.invert == args.italic then&lt;br /&gt;
		args.text = invert_italics (args.text)&lt;br /&gt;
	end&lt;br /&gt;
&lt;br /&gt;
	args.text = chinese_conversion (args.code, args.text) -- 中文版特化部分&lt;br /&gt;
&lt;br /&gt;
	args.text = proto_prefix (args.text, language_name, args.proto);			-- prefix proto-language text with a splat&lt;br /&gt;
&lt;br /&gt;
	table.insert (out, make_text_html (args.code, args.text, tag, args.rtl, args.italic, args.size, (&#039;none&#039; == args.label) and language_name or nil))&lt;br /&gt;
&lt;br /&gt;
	if is_set (args.translit) and not is_latn_text then							-- transliteration; not supported when args.text is wholly latn text (this is an imperfect test)&lt;br /&gt;
		table.insert (out, &#039;，&#039;);												-- comma to separate text from translit&lt;br /&gt;
		if &#039;none&#039; ~= args.label then&lt;br /&gt;
			table.insert (out, &#039;&amp;lt;small&amp;gt;&#039;);&lt;br /&gt;
			if script_table[args[&#039;translit-script&#039;]] then						-- when |translit-script= is set, try to use the script&#039;s name&lt;br /&gt;
				translit_script_name = script_table[args[&#039;translit-script&#039;]];&lt;br /&gt;
			else&lt;br /&gt;
				translit_script_name = language_name;							-- fall back on language name&lt;br /&gt;
			end&lt;br /&gt;
&lt;br /&gt;
			local translit_title_obj = mw.title.makeTitle (0, substitute (&#039;$2$1&#039;,{cfg.lang_xx_t.romanization, translit_script_name}));	-- make a title object; no engvar, article titles use US spelling&lt;br /&gt;
			if translit_title_obj.exists and (cfg.keywords_t.negative ~= args.link) then&lt;br /&gt;
				table.insert (out, make_wikilink (substitute (&#039;$2$1&#039;, {cfg.lang_xx_t.romanization, translit_script_name or language_name}),&lt;br /&gt;
					substitute (&#039;$1&#039;, {cfg.lang_xx_t.romanization})) .. &#039;：&#039;);	-- make a wikilink if there is an article to link to; engvar the display text&lt;br /&gt;
&lt;br /&gt;
			else&lt;br /&gt;
				table.insert (out, substitute (&#039;$1：&#039;, {cfg.lang_xx_t.romanization}));	-- else plain text per engvar&lt;br /&gt;
&lt;br /&gt;
			end&lt;br /&gt;
			table.insert (out, &#039;&amp;lt;/small&amp;gt;&#039;);										-- close the small tag&lt;br /&gt;
		end&lt;br /&gt;
&lt;br /&gt;
		translit = make_translit (args.code, language_name, args.translit, args[&#039;translit-std&#039;], args[&#039;translit-script&#039;], nil)&lt;br /&gt;
		if is_set (translit) then&lt;br /&gt;
			table.insert (out, translit);&lt;br /&gt;
		else&lt;br /&gt;
			make_error_msg (substitute (&#039;$1：$2&#039;, {cfg.lang_xx_t.invalid_xlit_std, args[&#039;translit-std&#039;] or &#039;[missing]&#039;}), args, template)&lt;br /&gt;
		end&lt;br /&gt;
&lt;br /&gt;
	elseif is_set (args.translit) and is_latn_text then							-- when creating a transliteration of Latn script &amp;lt;text&amp;gt;&lt;br /&gt;
		make_error_msg (cfg.lang_xx_t.xlit_of_latn, args, template)&lt;br /&gt;
	end&lt;br /&gt;
&lt;br /&gt;
	if is_set (args.translation) then											-- translation (not supported in {{lang}})&lt;br /&gt;
		table.insert (out, translation_make (args));&lt;br /&gt;
	end&lt;br /&gt;
&lt;br /&gt;
	table.insert (out, make_category (code, category_name, args.nocat));&lt;br /&gt;
	table.insert (out, render_maint(args.nocat));								-- maintenance messages and categories&lt;br /&gt;
&lt;br /&gt;
	if not args.noerror and error_msgs[1] then&lt;br /&gt;
		table.insert(out, make_lang_error_span(table.concat(error_msgs)))&lt;br /&gt;
	end&lt;br /&gt;
&lt;br /&gt;
	return table.concat (out);													-- put it all together and done&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
--[[--------------------------&amp;lt; L A N G _ X X _ A R G S _ G E T &amp;gt;----------------------------------------------&lt;br /&gt;
&lt;br /&gt;
Common function to get args table from {{lang-??}} templates.&lt;br /&gt;
&lt;br /&gt;
Returns table of args.&lt;br /&gt;
&lt;br /&gt;
Text positional parameters are not trimmed here but are selectively trimmed at html_tag_select().&lt;br /&gt;
&lt;br /&gt;
]]&lt;br /&gt;
&lt;br /&gt;
local function lang_xx_args_get (frame, base_template)&lt;br /&gt;
	local args_t = getArgs(frame,&lt;br /&gt;
		{&lt;br /&gt;
		parentFirst= true,														-- parameters in the template override parameters set in the {{#invoke:}}&lt;br /&gt;
		valueFunc = function (key, value)&lt;br /&gt;
			if ((cfg.templates_t.langx == base_template) and 2 or 1) == key then	-- the &#039;text&#039; positional parameter; 1 for {{lang-??}}, 2 for {{langx}}; do not trim wite space&lt;br /&gt;
				return value;													-- return untrimmed &#039;text&#039; positional parameter&lt;br /&gt;
			elseif value then													-- all other values: if the value is not nil&lt;br /&gt;
				value = mw.text.trim (value);									-- trim whitespace&lt;br /&gt;
				if &#039;&#039; ~= value then												-- empty string when value was only whitespace&lt;br /&gt;
					return value;&lt;br /&gt;
				end&lt;br /&gt;
			end&lt;br /&gt;
			return nil;															-- value was empty or contained only whitespace&lt;br /&gt;
		end																		-- end of valueFunc&lt;br /&gt;
	});&lt;br /&gt;
&lt;br /&gt;
	return args_t;&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
--[[--------------------------&amp;lt; L A N G _ X X _ I T A L I C &amp;gt;--------------------------------------------------&lt;br /&gt;
&lt;br /&gt;
Entry point for those {{lang-??}} templates that call lang_xx_italic(). Sets the initial style state to italic.&lt;br /&gt;
&lt;br /&gt;
]]&lt;br /&gt;
&lt;br /&gt;
local function lang_xx_italic (frame)&lt;br /&gt;
	local args = lang_xx_args_get (frame, cfg.templates_t.langxx);&lt;br /&gt;
	args.fn = nil;																-- unset because not supported but this function might have been called by {{lang|fn=lang_xx_italic|...}}&lt;br /&gt;
&lt;br /&gt;
	local msg = parameter_validate (args, cfg.templates_t.langxx);				-- verify that all supplied parameters are supported by {{lang-??}}&lt;br /&gt;
&lt;br /&gt;
	if args.noerror then&lt;br /&gt;
		msg = &#039;&#039;&lt;br /&gt;
	else&lt;br /&gt;
		msg = msg and make_lang_error_span(make_error_msg(msg, args, cfg.templates_t.langxx)) or &#039;&#039;&lt;br /&gt;
	end&lt;br /&gt;
&lt;br /&gt;
	initial_style_state = args.italic_important and &#039;italic&#039; or &#039;inherit&#039;; -- 中文維基百科：忽略斜體（除非指定italic_important）&lt;br /&gt;
	return _lang_xx (args, cfg.templates_t.langxx) .. msg .. &#039;[[Category:使用Lang-xx模板的页面]]&#039;&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
--[[--------------------------&amp;lt; _ L A N G _ X X _ I T A L I C &amp;gt;------------------------------------------------&lt;br /&gt;
&lt;br /&gt;
Entry point from another module. Sets the initial style state to italic.&lt;br /&gt;
&lt;br /&gt;
]]&lt;br /&gt;
&lt;br /&gt;
local function _lang_xx_italic (args)&lt;br /&gt;
	initial_style_state = args.italic_important and &#039;italic&#039; or &#039;inherit&#039;; -- 中文維基百科：忽略斜體（除非指定italic_important）&lt;br /&gt;
	return _lang_xx (args, cfg.templates_t.langxx);&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
--[[--------------------------&amp;lt; L A N G _ X X _ I N H E R I T &amp;gt;------------------------------------------------&lt;br /&gt;
&lt;br /&gt;
Entry point for those {{lang-??}} templates that call lang_xx_inherit(). Sets the initial style state to inherit.&lt;br /&gt;
&lt;br /&gt;
]]&lt;br /&gt;
&lt;br /&gt;
local function lang_xx_inherit (frame)&lt;br /&gt;
	local args = lang_xx_args_get (frame, cfg.templates_t.langxx);&lt;br /&gt;
	args.fn = nil;																-- unset because not supported but this function might have been called by {{lang|fn=lang_xx_inherit|...}}&lt;br /&gt;
&lt;br /&gt;
	local msg = parameter_validate (args, cfg.templates_t.langxx);				-- verify that all supplied parameters are supported by {{lang-??}}&lt;br /&gt;
&lt;br /&gt;
	if args.noerror then&lt;br /&gt;
		msg = &#039;&#039;&lt;br /&gt;
	else&lt;br /&gt;
		msg = msg and make_lang_error_span(make_error_msg(msg, args, cfg.templates_t.langxx)) or &#039;&#039;&lt;br /&gt;
	end&lt;br /&gt;
&lt;br /&gt;
	initial_style_state = &#039;inherit&#039;;&lt;br /&gt;
	return _lang_xx (args, cfg.templates_t.langxx) .. msg .. &#039;[[Category:使用Lang-xx模板的页面]]&#039;&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
--[[--------------------------&amp;lt; _ L A N G _ X X _ I N H E R I T &amp;gt;----------------------------------------------&lt;br /&gt;
&lt;br /&gt;
Entry point from another module. Sets the initial style state to inherit.&lt;br /&gt;
&lt;br /&gt;
]]&lt;br /&gt;
&lt;br /&gt;
local function _lang_xx_inherit (args)&lt;br /&gt;
	initial_style_state = &#039;inherit&#039;;&lt;br /&gt;
	return _lang_xx (args, cfg.templates_t.langxx);&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
--[[--------------------------&amp;lt; _ L A N G X &amp;gt;------------------------------------------------------------------&lt;br /&gt;
&lt;br /&gt;
Entry point from another module.&lt;br /&gt;
&lt;br /&gt;
]]&lt;br /&gt;
&lt;br /&gt;
local function _langx (args_t)&lt;br /&gt;
	local langx_data = mw.loadData (&#039;Module:Lang/langx&#039;);						-- get necessary data&lt;br /&gt;
	local rtl_t = langx_data.rtl_t;												-- get list of language tags for languages that are rendered right-to-left&lt;br /&gt;
	local link_t = langx_data.link_t;											-- get list of language tags for {{lang-??}} templates that set |link=&amp;lt;something&amp;gt;&lt;br /&gt;
	local size_t = langx_data.size_t;											-- get list of language tags for {{lang-??}} templates that set |size=&amp;lt;something&amp;gt;&lt;br /&gt;
&lt;br /&gt;
	error_msgs = {}&lt;br /&gt;
&lt;br /&gt;
	local msg = parameter_validate (args_t, cfg.templates_t.langx);&lt;br /&gt;
	if msg then&lt;br /&gt;
		make_error_msg (msg, args_t, cfg.templates_t.langx)&lt;br /&gt;
		msg = nil&lt;br /&gt;
	end&lt;br /&gt;
&lt;br /&gt;
	args_t.code = args_t[1] or args_t.code;										-- get the language tag; must be {{{1}}} or |code=&lt;br /&gt;
	if not args_t.code then&lt;br /&gt;
		make_error_msg (cfg.get_ietf_parts_t.missing_lang_tag, args_t, cfg.templates_t.langx)&lt;br /&gt;
	end&lt;br /&gt;
&lt;br /&gt;
	args_t.rtl = args_t.rtl or (rtl_t[args_t.code] and cfg.keywords_t.affirmative);	-- prefer |rtl= in template call, use rtl_t else&lt;br /&gt;
	args_t.link = args_t.link or link_t[args_t.code];							-- prefer |link= in template call, use link_t felse&lt;br /&gt;
	args_t.size = args_t.size or size_t[args_t.code];							-- prefer |size= in template call, use size_t else&lt;br /&gt;
&lt;br /&gt;
	args_t[1] = nil;															-- unset to mimic {{lang-??}} templates which set |code=xx&lt;br /&gt;
&lt;br /&gt;
	if not args_t.noerror and error_msgs[1] then&lt;br /&gt;
		msg = make_lang_error_span(table.concat(error_msgs))&lt;br /&gt;
	end&lt;br /&gt;
&lt;br /&gt;
	local lang_subtag = args_t.code;											-- use only the base language subtag for unsupported tag test; some args_t.code are modified by |script= etc&lt;br /&gt;
	return _lang_xx (args_t, cfg.templates_t.langx) .. (msg or &#039;&#039;)&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
--[[--------------------------&amp;lt; L A N G X &amp;gt;--------------------------------------------------------------------&lt;br /&gt;
&lt;br /&gt;
Entry point for {{langx}}.&lt;br /&gt;
&lt;br /&gt;
this function calls _lang_xx() to render non-English text. The {{lang-??}} templates have three positional paramters&lt;br /&gt;
but {{langx}} has four:&lt;br /&gt;
&lt;br /&gt;
				|  1	|  2		|  3		|  4&lt;br /&gt;
	{{lang-xx	|&amp;lt;text&amp;gt;	|&amp;lt;transl&amp;gt;	|&amp;lt;xlate&amp;gt;	}}&lt;br /&gt;
	{{langx		|&amp;lt;tag&amp;gt;	|&amp;lt;text&amp;gt;		|&amp;lt;transl&amp;gt;	|&amp;lt;xlate&amp;gt;	}}&lt;br /&gt;
&lt;br /&gt;
The calls to lang_xx_args_get() and _lang_xx() use &#039;Langx&#039; as a flag for those functions to select the proper&lt;br /&gt;
positional parameters.&lt;br /&gt;
&lt;br /&gt;
{{lang-??}} depends on the calling template to select &#039;inherit&#039; or &#039;italic&#039; to establish the default rendering.&lt;br /&gt;
&lt;br /&gt;
{{langx}} can&#039;t do that.  The initial version of {{langx}} relied on a list of language tags (inherit_t in ~/langx)&lt;br /&gt;
scraped from those {{lang-??}} templates that call lang_xx_inherit() to render text in upright font. langx() now&lt;br /&gt;
uses auto-italics code adapted from {{lang}} (doesn&#039;t support poem tags).&lt;br /&gt;
&lt;br /&gt;
]]&lt;br /&gt;
&lt;br /&gt;
local function langx (frame)&lt;br /&gt;
	local args_t = lang_xx_args_get (frame, cfg.templates_t.langx);				-- get the arguments; &#039;Langx&#039; is the &amp;lt;base_template&amp;gt; used to decide which positional param is &#039;text&#039;, &#039;translit&#039;, &#039;lit&#039;&lt;br /&gt;
&lt;br /&gt;
	return _langx (args_t);&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
--[[--------------------------&amp;lt; _ I S _ I E T F _ T A G &amp;gt;------------------------------------------------------&lt;br /&gt;
&lt;br /&gt;
Returns true when a language name associated with IETF language tag exists; nil else.  IETF language tag must be valid.&lt;br /&gt;
&lt;br /&gt;
All code combinations supported by {{lang}} and the {{lang-??}} templates are supported by this function.&lt;br /&gt;
&lt;br /&gt;
Module entry point from another module.&lt;br /&gt;
&lt;br /&gt;
]]&lt;br /&gt;
&lt;br /&gt;
local function _is_ietf_tag (tag)												-- entry point when this module is require()d into another&lt;br /&gt;
	local c, s, r, v, p, err;													-- code, script, region, variant, private, error message&lt;br /&gt;
	c, s, r, v, p, err = get_ietf_parts (tag);									-- disassemble tag into constituent part and validate&lt;br /&gt;
&lt;br /&gt;
	return ((c and not err) and true) or nil;									-- return true when code portion has a value without error message; nil else&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
--[[--------------------------&amp;lt; I S _ I E T F _ T A G &amp;gt;--------------------------------------------------------&lt;br /&gt;
&lt;br /&gt;
Module entry point from an {{#invoke:}}.&lt;br /&gt;
&lt;br /&gt;
]]&lt;br /&gt;
&lt;br /&gt;
local function is_ietf_tag (frame)&lt;br /&gt;
	return _is_ietf_tag (getArgs (frame)[1]);									-- args[1] is the IETF language tag to be tested; also get parent frame&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
--[[--------------------------&amp;lt; I S _ I E T F _ T A G _ F R A M E &amp;gt;--------------------------------------------&lt;br /&gt;
&lt;br /&gt;
Module entry point from an {{#invoke:}}; same as is_ietf_tag() except does not get parameters from the parent&lt;br /&gt;
(template) frame.  This function not useful when called by {{lang|fn=is_ietf_tag_frame|&amp;lt;tag&amp;gt;}} because &amp;lt;tag&amp;gt;&lt;br /&gt;
is in the parent frame.&lt;br /&gt;
&lt;br /&gt;
]]&lt;br /&gt;
&lt;br /&gt;
local function is_ietf_tag_frame (frame)&lt;br /&gt;
	return _is_ietf_tag (getArgs (frame, {frameOnly = true,})[1]);				-- args[1] is the IETF language tag to be tested; do not get parent frame&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
--[[--------------------------&amp;lt; _ N A M E _ F R O M _ T A G &amp;gt;--------------------------------------------------&lt;br /&gt;
&lt;br /&gt;
Returns language name associated with IETF language tag if valid; error message else.&lt;br /&gt;
&lt;br /&gt;
All code combinations supported by {{lang}} and the {{lang-??}} templates are supported by this function.&lt;br /&gt;
&lt;br /&gt;
Set invoke&#039;s |link= parameter to yes to get wikilinked version of the language name.&lt;br /&gt;
&lt;br /&gt;
Module entry point from another module.&lt;br /&gt;
&lt;br /&gt;
]]&lt;br /&gt;
&lt;br /&gt;
local function _name_from_tag (args)&lt;br /&gt;
	local subtags = {};															-- IETF subtags script, region, variant, and private&lt;br /&gt;
	local raw_code = args[1];													-- save a copy of the input IETF subtag&lt;br /&gt;
	local link = cfg.keywords_t.affirmative == args[&#039;link&#039;];					-- make a boolean&lt;br /&gt;
	local label = args.label;&lt;br /&gt;
	local code;																	-- the language code&lt;br /&gt;
	local msg;																	-- gets an error message if IETF language tag is malformed or invalid&lt;br /&gt;
	local language_name = &#039;&#039;;&lt;br /&gt;
&lt;br /&gt;
	code, subtags.script, subtags.region, subtags.variant, subtags.private, msg = get_ietf_parts (raw_code);&lt;br /&gt;
	if msg then&lt;br /&gt;
		local template = (args[&#039;template&#039;] and table.concat ({&#039;{{&#039;, args[&#039;template&#039;], &#039;}}：&#039;})) or &#039;&#039;;	-- make template name (if provided by the template)&lt;br /&gt;
		return make_error_span (template, msg);&lt;br /&gt;
	end&lt;br /&gt;
&lt;br /&gt;
	raw_code = format_ietf_tag (code, subtags.script, subtags.region, subtags.variant, subtags.private);	-- format to recommended subtag styles; private omitted because private&lt;br /&gt;
	language_name = language_name_get (raw_code, code);							-- get language name; try IETF tag first, then code w/o variant then code w/ variant&lt;br /&gt;
&lt;br /&gt;
	if &#039;yes&#039; ~= args.raw then&lt;br /&gt;
		language_name = language_name:gsub (&#039;%s+%b()&#039;, &#039;&#039;);						-- remove IANA parenthetical disambiguators or qualifiers from names that have them&lt;br /&gt;
	end&lt;br /&gt;
&lt;br /&gt;
	if link then																-- when |link=yes, wikilink the language name&lt;br /&gt;
		if mw.ustring.find (language_name, &#039;语系&#039;, 1, true) then&lt;br /&gt;
			language_name = make_wikilink (language_name, label);				-- collective language name uses simple wikilink&lt;br /&gt;
		elseif lang_data.article_name[raw_code:lower()] then					-- is IETF tag in article name override?&lt;br /&gt;
			language_name = make_wikilink (lang_data.article_name[raw_code:lower()], label or language_name);	-- language name with wikilink from override data&lt;br /&gt;
		elseif lang_data.article_name[code] then								-- is language tag in article name override?&lt;br /&gt;
			language_name = make_wikilink (lang_data.article_name[code], label or language_name);	-- language name with wikilink from override data&lt;br /&gt;
		else&lt;br /&gt;
			language_name = make_wikilink (language_name, label or language_name);	-- language name with wikilink&lt;br /&gt;
		end&lt;br /&gt;
	end&lt;br /&gt;
&lt;br /&gt;
	return language_name;&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
--[[--------------------------&amp;lt; N A M E _ F R O M _ T A G &amp;gt;----------------------------------------------------&lt;br /&gt;
&lt;br /&gt;
Module entry point from an {{#invoke:}}.&lt;br /&gt;
&lt;br /&gt;
]]&lt;br /&gt;
&lt;br /&gt;
local function name_from_tag (frame)											-- entry point from an {{#invoke:Lang|name_from_tag|&amp;lt;IETF tag&amp;gt;|link=&amp;lt;yes&amp;gt;|template=&amp;lt;template name&amp;gt;}}&lt;br /&gt;
	return _name_from_tag (getArgs(frame))										-- pass-on the args table, nothing else; getArgs() so we also get parent frame&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
--[[--------------------------&amp;lt; _ T A G _ F R O M _ N A M E &amp;gt;--------------------------------------------------&lt;br /&gt;
&lt;br /&gt;
Returns the IETF language tag associated with the language name.  Spelling of language name must be correct&lt;br /&gt;
according to the spelling in the source tables.  When a standard language name has a parenthetical disambiguator,&lt;br /&gt;
that disambiguator must be omitted (they are not present in the data name-to-tag tables).&lt;br /&gt;
&lt;br /&gt;
Module entry point from another module.&lt;br /&gt;
&lt;br /&gt;
]]&lt;br /&gt;
&lt;br /&gt;
local function _tag_from_name (args)											-- entry point from another module&lt;br /&gt;
	local msg;&lt;br /&gt;
&lt;br /&gt;
	if args[1] and &#039;&#039; ~= args[1] then&lt;br /&gt;
		local data = mw.loadData (&#039;Module:Lang/tag from name&#039; .. sandbox);		-- get the reversed data tables TODO: change when going live&lt;br /&gt;
		local lang = args[1]:lower();											-- allow any-case for the language name (speeling must till be correct)&lt;br /&gt;
		local tag = data.rev_override_table[lang] or data.rev_lang_table[lang] or data.rev_lang_dep_table[lang];	-- get the code; look first in the override then in the standard&lt;br /&gt;
&lt;br /&gt;
		if tag then&lt;br /&gt;
			return tag, true;													-- language name found so return tag and done; second return used by is_lang_name()&lt;br /&gt;
		else&lt;br /&gt;
			msg = substitute (cfg.tag_from_name_t.lang_not_found, {args[1]});	-- language name not found, error message&lt;br /&gt;
		end&lt;br /&gt;
	else&lt;br /&gt;
		msg = cfg.tag_from_name_t.missing_lang_name;							-- language name not found, error message&lt;br /&gt;
	end&lt;br /&gt;
&lt;br /&gt;
	local template = &#039;&#039;;&lt;br /&gt;
	if args.template and &#039;&#039; ~= args.template then&lt;br /&gt;
		template = table.concat ({&#039;{{&#039;, args[&#039;template&#039;], &#039;}}：&#039;});				-- make template name (if provided by the template)&lt;br /&gt;
	end&lt;br /&gt;
	return make_error_span (template, msg);&lt;br /&gt;
&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
--[[--------------------------&amp;lt; T A G _ F R O M _ N A M E &amp;gt;----------------------------------------------------&lt;br /&gt;
&lt;br /&gt;
Module entry point from an {{#invoke:}}.&lt;br /&gt;
&lt;br /&gt;
]]&lt;br /&gt;
&lt;br /&gt;
local function tag_from_name (frame)											-- entry point from an {{#invoke:Lang|tag_from_name|&amp;lt;language name&amp;gt;|link=&amp;lt;yes&amp;gt;|template=&amp;lt;template name&amp;gt;}}&lt;br /&gt;
	local result, _ = _tag_from_name (getArgs(frame))							-- pass-on the args table, nothing else; getArgs() so we also get parent frame; supress second return used by is_lang_name()&lt;br /&gt;
	return result;&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
--[[--------------------------&amp;lt; I S _ L A N G _ N A M E &amp;gt;------------------------------------------------------&lt;br /&gt;
&lt;br /&gt;
Module entry point from an {{#invoke:}}.&lt;br /&gt;
&lt;br /&gt;
]]&lt;br /&gt;
&lt;br /&gt;
local function is_lang_name (frame)&lt;br /&gt;
	local _, result = _tag_from_name (getArgs(frame))							-- pass-on the args table, nothing else; getArgs() so we also get parent frame; supress second return used by tag_from_name()&lt;br /&gt;
	return result and true or nil;&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
--[[--------------------------&amp;lt; _ T R A N S L &amp;gt;----------------------------------------------------------------&lt;br /&gt;
&lt;br /&gt;
Module entry point from another module.&lt;br /&gt;
&lt;br /&gt;
]]&lt;br /&gt;
&lt;br /&gt;
local function _transl (args)&lt;br /&gt;
	local title_table = lang_data.translit_title_table;							-- table of transliteration standards and the language codes and scripts that apply to those standards&lt;br /&gt;
	local language_name;														-- language name that matches language code; used for tool tip&lt;br /&gt;
	local translit;																-- transliterated text to display&lt;br /&gt;
	local script;																-- IANA script&lt;br /&gt;
	local msg;																	-- for when called functions return an error message&lt;br /&gt;
	local template = args.template or cfg.templates_t.transliteration;&lt;br /&gt;
&lt;br /&gt;
	maint_cats = {};															-- initialize because when this module required into another module, these only declared once so only initialzed once&lt;br /&gt;
	maint_msgs = {};&lt;br /&gt;
&lt;br /&gt;
	error_msgs = {}&lt;br /&gt;
&lt;br /&gt;
	if is_set (args[3]) then													-- [3] set when {{transliteration|code|standard|text}}&lt;br /&gt;
		args.text = args[3];													-- get the transliterated text&lt;br /&gt;
		args.translit_std = args[2] and args[2]:lower();						-- get the standard; lower case for table indexing&lt;br /&gt;
&lt;br /&gt;
		if not title_table[args.translit_std] then&lt;br /&gt;
			make_error_msg (substitute (cfg.transl_t.unrecog_xlit_std, {args.translit_std}), args, template)&lt;br /&gt;
			args.translit_std = nil&lt;br /&gt;
		end&lt;br /&gt;
	else&lt;br /&gt;
		if is_set (args[2]) then												-- [2] set when {{transliteration|code|text}}&lt;br /&gt;
			args.text = args[2];												-- get the transliterated text&lt;br /&gt;
		else&lt;br /&gt;
			if args[1] and (args[1]:match (&#039;^%a%a%a?%a?$&#039;) or					-- args[2] missing; is args[1] a language or script tag or is it the transliterated text?&lt;br /&gt;
				args[1]:match (&#039;^%a%a%a?%-x%-&#039;)) then							-- or is args[1] a private-use tag&lt;br /&gt;
					make_error_msg (cfg.transl_t.no_text, args, template)		-- args[1] is a code so we&#039;re missing text&lt;br /&gt;
					args.text = &#039;&#039;&lt;br /&gt;
			else&lt;br /&gt;
				make_error_msg (cfg.transl_t.missing_lang_scr, args, template)&lt;br /&gt;
				args.text = &#039;&#039;&lt;br /&gt;
			end&lt;br /&gt;
		end&lt;br /&gt;
	end&lt;br /&gt;
&lt;br /&gt;
	if is_set (args[1]) then													-- IANA language code used for HTML lang= attribute; or ISO 15924 script code&lt;br /&gt;
		if args[1]:match (&#039;^%a%a%a?%a?$&#039;) or args[1]:match (&#039;^%a%a%a?%-x%-&#039;) then	-- args[1] has correct form?&lt;br /&gt;
			args.code = args[1]:lower();										-- use the language/script code; only (2, 3, or 4 alpha characters) or private-use; lower case because table indexes are lower case&lt;br /&gt;
		else&lt;br /&gt;
			make_error_msg (substitute (cfg.transl_t.unrecog_lang_scr, {args[1]}), args, template)	-- invalid language / script code&lt;br /&gt;
			args.code = &#039;&#039;&lt;br /&gt;
		end&lt;br /&gt;
	else&lt;br /&gt;
		make_error_msg (cfg.transl_t.missing_lang_scr, args, template)			-- missing language / script code&lt;br /&gt;
		args.code = &#039;&#039;&lt;br /&gt;
	end&lt;br /&gt;
&lt;br /&gt;
	local is_latn_text, pos, char;&lt;br /&gt;
	is_latn_text, args.text, pos, char= is_latin (args.text, args.code);		-- is latn text? strip accept-as-written markup&lt;br /&gt;
	if not is_latn_text then													-- when text is not latn&lt;br /&gt;
		make_error_msg (substitute (cfg.lang_xx_t.translit_nonlatn, {pos, char}), args, template)&lt;br /&gt;
	end&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
	args.italic, msg = validate_italic (args);&lt;br /&gt;
	if msg then&lt;br /&gt;
		make_error_msg (msg, args, template)&lt;br /&gt;
		msg = nil&lt;br /&gt;
	end&lt;br /&gt;
&lt;br /&gt;
	if &#039;italic&#039; == args.italic then												-- &#039;italic&#039; when |italic=yes; because that is same as absent or not set and |italic=default&lt;br /&gt;
		args.italic = nil;														-- set to nil;&lt;br /&gt;
	end&lt;br /&gt;
&lt;br /&gt;
	if override_table[args.code] then											-- is code a language code defined in the override table?&lt;br /&gt;
		language_name = override_table[args.code];&lt;br /&gt;
		args.code = args.code:match (&#039;^%a%a%a?&#039;);								-- if private use, strip all but language subtag&lt;br /&gt;
	elseif lang_table[args.code] then											-- is code a language code defined in the standard language code tables?&lt;br /&gt;
		language_name = lang_table[args.code];&lt;br /&gt;
	elseif lang_dep_table[args.code] then										-- is code a language code defined in the deprecated language code tables?&lt;br /&gt;
		language_name = lang_dep_table[args.code];&lt;br /&gt;
	elseif script_table[args.code] then											-- if here, code is not a language code; is it a script code?&lt;br /&gt;
		language_name = script_table[args.code];&lt;br /&gt;
		script = args.code;														-- code was an ISO 15924 script so use that instead&lt;br /&gt;
		args.code = &#039;&#039;;															-- unset because not a language code&lt;br /&gt;
	else&lt;br /&gt;
		make_error_msg (substitute (cfg.transl_t.unrecog_lang_scr, {args.code}), args, template)	-- invalid language / script code&lt;br /&gt;
		language_name = args.code&lt;br /&gt;
	end&lt;br /&gt;
																				-- here only when all parameters passed to make_translit() are valid&lt;br /&gt;
&lt;br /&gt;
	if not args.noerror and error_msgs[1] then&lt;br /&gt;
		msg = make_lang_error_span(table.concat(error_msgs))&lt;br /&gt;
	end&lt;br /&gt;
&lt;br /&gt;
	return make_translit (args.code, language_name, args.text, args.translit_std, script, args.italic) .. (msg or &#039;&#039;)&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
--[[--------------------------&amp;lt; T R A N S L &amp;gt;------------------------------------------------------------------&lt;br /&gt;
&lt;br /&gt;
Module entry point from an {{#invoke:}}.&lt;br /&gt;
&lt;br /&gt;
]]&lt;br /&gt;
&lt;br /&gt;
local function transl (frame)&lt;br /&gt;
	return _transl (getArgs(frame));&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
--[[--------------------------&amp;lt; C A T E G O R Y _ F R O M _ T A G &amp;gt;--------------------------------------------&lt;br /&gt;
&lt;br /&gt;
Returns category name associated with IETF language tag if valid; error message else.&lt;br /&gt;
&lt;br /&gt;
All code combinations supported by {{lang}} and the {{lang-??}} templates are supported by this function.&lt;br /&gt;
&lt;br /&gt;
Module entry point from another module.&lt;br /&gt;
&lt;br /&gt;
]]&lt;br /&gt;
&lt;br /&gt;
local function _category_from_tag (args_t)&lt;br /&gt;
	local subtags = {};															-- IETF subtags script, region, variant, and private&lt;br /&gt;
	local raw_code = args_t[1];													-- save a copy of the input IETF subtag&lt;br /&gt;
	local link = cfg.keywords_t.affirmative == args_t.link;						-- make a boolean&lt;br /&gt;
	local label = args_t.label;&lt;br /&gt;
	local code;																	-- the language code&lt;br /&gt;
	local msg;																	-- gets an error message if IETF language tag is malformed or invalid&lt;br /&gt;
	local category_name = &#039;&#039;;&lt;br /&gt;
&lt;br /&gt;
	code, subtags.script, subtags.region, subtags.variant, subtags.private, msg = get_ietf_parts (raw_code);&lt;br /&gt;
	if msg then&lt;br /&gt;
		local template = (args_t.template and table.concat ({&#039;{{&#039;, args_t.template, &#039;}}：&#039;})) or &#039;&#039;;	-- make template name (if provided by the template)&lt;br /&gt;
		return make_error_span (template, msg);&lt;br /&gt;
	end&lt;br /&gt;
&lt;br /&gt;
	raw_code = format_ietf_tag (code, subtags.script, subtags.region, subtags.variant, subtags.private);	-- format to recommended subtag styles; private omitted because private&lt;br /&gt;
	category_name = language_name_get (raw_code, code);							-- get language name; try IETF tag first, then code w/o variant then code w/ variant&lt;br /&gt;
	category_name = make_category (code, category_name, nil, true):gsub (&#039;[%[%]]&#039;, &#039;&#039;);&lt;br /&gt;
&lt;br /&gt;
	if link then&lt;br /&gt;
		return table.concat ({&#039;[[:&#039;, category_name, &#039;]]&#039;});&lt;br /&gt;
	else&lt;br /&gt;
		return category_name;&lt;br /&gt;
	end&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
--[[--------------------------&amp;lt; C A T E G O R Y _ F R O M _ T A G &amp;gt;--------------------------------------------&lt;br /&gt;
&lt;br /&gt;
Module entry point from an {{#invoke:}}.&lt;br /&gt;
&lt;br /&gt;
]]&lt;br /&gt;
&lt;br /&gt;
local function category_from_tag (frame)										-- entry point from an {{#invoke:Lang|category_from_tag|&amp;lt;IETF tag&amp;gt;|template=&amp;lt;template name&amp;gt;}}&lt;br /&gt;
	return _category_from_tag (getArgs (frame));								-- pass-on the args table, nothing else; getArgs() so we also get parent frame&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
--[[--------------------------&amp;lt; E X P O R T E D   F U N C T I O N S &amp;gt;------------------------------------------&lt;br /&gt;
]]&lt;br /&gt;
&lt;br /&gt;
return {&lt;br /&gt;
	category_from_tag = category_from_tag,										-- frame entry points when this module is #invoke:ed into templates/wikitext&lt;br /&gt;
	lang = lang,																-- entry point for {{lang}}&lt;br /&gt;
	langx = langx,																-- entry point for {{langx}}&lt;br /&gt;
	lang_xx_inherit = lang_xx_inherit,											-- entry points for {{lang-??}}&lt;br /&gt;
	lang_xx_italic = lang_xx_italic,&lt;br /&gt;
	is_ietf_tag = is_ietf_tag,&lt;br /&gt;
	is_ietf_tag_frame = is_ietf_tag_frame,&lt;br /&gt;
	is_lang_name = is_lang_name,&lt;br /&gt;
	tag_from_name = tag_from_name,												-- returns IETF tag associated with language name&lt;br /&gt;
	name_from_tag = name_from_tag,												-- used for template documentation; possible use in ISO 639 name from code templates&lt;br /&gt;
	transl = transl,															-- entry point for {{transliteration}}&lt;br /&gt;
&lt;br /&gt;
	_category_from_tag = _category_from_tag,									-- API entry points when this module is require()d into other modules&lt;br /&gt;
	_lang = _lang,&lt;br /&gt;
	_langx = _langx,&lt;br /&gt;
	_lang_xx_inherit = _lang_xx_inherit,&lt;br /&gt;
	_lang_xx_italic = _lang_xx_italic,&lt;br /&gt;
	_is_ietf_tag = _is_ietf_tag,&lt;br /&gt;
	get_ietf_parts = get_ietf_parts,&lt;br /&gt;
	_tag_from_name = _tag_from_name,&lt;br /&gt;
	_name_from_tag = _name_from_tag,&lt;br /&gt;
	_transl = _transl,&lt;br /&gt;
	_translation_make = translation_make,&lt;br /&gt;
	};&lt;/div&gt;</summary>
		<author><name>DoubleCircle</name></author>
	</entry>
	<entry>
		<id>https://9on0wiki.gunmu.dns.navy/index.php?title=Module:Hatnote_list&amp;diff=708</id>
		<title>Module:Hatnote list</title>
		<link rel="alternate" type="text/html" href="https://9on0wiki.gunmu.dns.navy/index.php?title=Module:Hatnote_list&amp;diff=708"/>
		<updated>2026-08-26T10:58:53Z</updated>

		<summary type="html">&lt;p&gt;DoubleCircle：​导入1个版本&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;--------------------------------------------------------------------------------&lt;br /&gt;
--                           Module:Hatnote list                              --&lt;br /&gt;
--                                                                            --&lt;br /&gt;
-- This module produces and formats lists for use in hatnotes. In particular, --&lt;br /&gt;
-- it implements the for-see list, i.e. lists of &amp;quot;For X, see Y&amp;quot; statements,   --&lt;br /&gt;
-- as used in {{about}}, {{redirect}}, and their variants. Also introduced    --&lt;br /&gt;
-- are andList &amp;amp; orList helpers for formatting lists with those conjunctions. --&lt;br /&gt;
--------------------------------------------------------------------------------&lt;br /&gt;
&lt;br /&gt;
local mArguments --initialize lazily&lt;br /&gt;
local mFormatLink = require(&#039;Module:Format link&#039;)&lt;br /&gt;
local mHatnote = require(&#039;Module:Hatnote&#039;)&lt;br /&gt;
local libraryUtil = require(&#039;libraryUtil&#039;)&lt;br /&gt;
local checkType = libraryUtil.checkType&lt;br /&gt;
local p = {}&lt;br /&gt;
&lt;br /&gt;
--------------------------------------------------------------------------------&lt;br /&gt;
-- List stringification helper functions&lt;br /&gt;
--&lt;br /&gt;
-- These functions are used for stringifying lists, usually page lists inside&lt;br /&gt;
-- the &amp;quot;Y&amp;quot; portion of &amp;quot;For X, see Y&amp;quot; for-see items.&lt;br /&gt;
--------------------------------------------------------------------------------&lt;br /&gt;
&lt;br /&gt;
--default options table used across the list stringification functions&lt;br /&gt;
-- 本地化注意&lt;br /&gt;
local stringifyListDefaultOptions = {&lt;br /&gt;
	conjunction = &amp;quot;和&amp;quot;,&lt;br /&gt;
	separator = &amp;quot;、&amp;quot;,&lt;br /&gt;
	altSeparator = &amp;quot;；&amp;quot;,&lt;br /&gt;
	space = &amp;quot;&amp;quot;,&lt;br /&gt;
	formatted = false,&lt;br /&gt;
	boldfaced = false,&lt;br /&gt;
	quotes = false&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
--Searches display text only&lt;br /&gt;
local function searchDisp(haystack, needle)&lt;br /&gt;
	return string.find(&lt;br /&gt;
		string.sub(haystack, (string.find(haystack, &#039;|&#039;) or 0) + 1), needle&lt;br /&gt;
	)&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
-- Stringifies a list generically; probably shouldn&#039;t be used directly&lt;br /&gt;
local function stringifyList(list, options)&lt;br /&gt;
	-- Type-checks, defaults, and a shortcut&lt;br /&gt;
	checkType(&amp;quot;stringifyList&amp;quot;, 1, list, &amp;quot;table&amp;quot;)&lt;br /&gt;
	if #list == 0 then return nil end&lt;br /&gt;
	checkType(&amp;quot;stringifyList&amp;quot;, 2, options, &amp;quot;table&amp;quot;, true)&lt;br /&gt;
	options = options or {}&lt;br /&gt;
	for k, v in pairs(stringifyListDefaultOptions) do&lt;br /&gt;
		if options[k] == nil then options[k] = v end&lt;br /&gt;
	end&lt;br /&gt;
	local s = options.space&lt;br /&gt;
	-- Format the list if requested&lt;br /&gt;
	if options.formatted then&lt;br /&gt;
		list = mFormatLink.formatPages(&lt;br /&gt;
			{}, list&lt;br /&gt;
		)&lt;br /&gt;
	end&lt;br /&gt;
	-- Set the separator; if any item contains it, use the alternate separator&lt;br /&gt;
	local separator = options.separator&lt;br /&gt;
	for k, v in pairs(list) do&lt;br /&gt;
		-- 本地化注意&lt;br /&gt;
		if options.boldfaced then&lt;br /&gt;
			list[k] = &#039;\&#039;\&#039;\&#039;&#039; .. list[k] .. &#039;\&#039;\&#039;\&#039;&#039;&lt;br /&gt;
		end&lt;br /&gt;
		if options.quotes then&lt;br /&gt;
			list[k] = &#039;「&#039; .. list[k] .. &#039;」&#039;&lt;br /&gt;
		end&lt;br /&gt;
		if searchDisp(v, separator) then&lt;br /&gt;
			separator = options.altSeparator&lt;br /&gt;
			break&lt;br /&gt;
		end&lt;br /&gt;
	end&lt;br /&gt;
	-- Set the conjunction, apply Oxford comma, and force a comma if #1 has &amp;quot;§&amp;quot;&lt;br /&gt;
	local conjunction = s .. options.conjunction .. s&lt;br /&gt;
	-- 本地化注意&lt;br /&gt;
	-- separator .. conjunction的结果是“、和”&lt;br /&gt;
	-- if #list == 2 and searchDisp(list[1], &amp;quot;§&amp;quot;) or #list &amp;gt; 2 then&lt;br /&gt;
	--	conjunction = separator .. conjunction&lt;br /&gt;
	-- end&lt;br /&gt;
	-- Return the formatted string&lt;br /&gt;
	return mw.text.listToText(list, separator .. s, conjunction)&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
--DRY function&lt;br /&gt;
-- 本地化注意&lt;br /&gt;
function conjList (conj, list, fmt, bold, quo)&lt;br /&gt;
	return stringifyList(list, {conjunction = conj, formatted = fmt, boldfaced = bold, quotes=quo})&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
-- Stringifies lists with &amp;quot;and&amp;quot; or &amp;quot;or&amp;quot;&lt;br /&gt;
-- 本地化注意&lt;br /&gt;
function p.andList (...) return conjList(&amp;quot;和&amp;quot;, ...) end&lt;br /&gt;
function p.orList (...) return conjList(&amp;quot;或&amp;quot;, ...) end&lt;br /&gt;
&lt;br /&gt;
--------------------------------------------------------------------------------&lt;br /&gt;
-- For see&lt;br /&gt;
--&lt;br /&gt;
-- Makes a &amp;quot;For X, see [[Y]].&amp;quot; list from raw parameters. Intended for the&lt;br /&gt;
-- {{about}} and {{redirect}} templates and their variants.&lt;br /&gt;
--------------------------------------------------------------------------------&lt;br /&gt;
&lt;br /&gt;
--default options table used across the forSee family of functions&lt;br /&gt;
-- 本地化注意&lt;br /&gt;
local forSeeDefaultOptions = {&lt;br /&gt;
	andKeyword = &#039;和&#039;,&lt;br /&gt;
	title = mw.title.getCurrentTitle().text,&lt;br /&gt;
	otherText = &#039;其他用法&#039;,&lt;br /&gt;
	forSeeForm = &#039;关于%s，请见%s。&#039;,&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
--Collapses duplicate punctuation&lt;br /&gt;
-- 本地化注意&lt;br /&gt;
function punctuationCollapse (text)&lt;br /&gt;
	local replacements = {&lt;br /&gt;
		[&amp;quot;%.%.$&amp;quot;] = &amp;quot;.&amp;quot;,&lt;br /&gt;
		[&amp;quot;%?%.$&amp;quot;] = &amp;quot;?&amp;quot;,&lt;br /&gt;
		[&amp;quot;%!%.$&amp;quot;] = &amp;quot;!&amp;quot;,&lt;br /&gt;
		[&amp;quot;%.%]%]%.$&amp;quot;] = &amp;quot;.]]&amp;quot;,&lt;br /&gt;
		[&amp;quot;%?%]%]%.$&amp;quot;] = &amp;quot;?]]&amp;quot;,&lt;br /&gt;
		[&amp;quot;%!%]%]%.$&amp;quot;] = &amp;quot;!]]&amp;quot;,&lt;br /&gt;
		[&amp;quot;%。%。$&amp;quot;] = &amp;quot;。&amp;quot;,&lt;br /&gt;
		[&amp;quot;%？%。$&amp;quot;] = &amp;quot;?&amp;quot;,&lt;br /&gt;
		[&amp;quot;%！%。$&amp;quot;] = &amp;quot;！&amp;quot;,&lt;br /&gt;
		[&amp;quot;%。%]%]%。$&amp;quot;] = &amp;quot;。]]&amp;quot;,&lt;br /&gt;
		[&amp;quot;%？%]%]%。$&amp;quot;] = &amp;quot;？]]&amp;quot;,&lt;br /&gt;
		[&amp;quot;%！%]%]%。$&amp;quot;] = &amp;quot;！]]&amp;quot;&lt;br /&gt;
	}&lt;br /&gt;
	for k, v in pairs(replacements) do text = string.gsub(text, k, v) end&lt;br /&gt;
	return text&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
-- Structures arguments into a table for stringification, &amp;amp; options&lt;br /&gt;
function p.forSeeArgsToTable (args, from, options)&lt;br /&gt;
	-- Type-checks and defaults&lt;br /&gt;
	checkType(&amp;quot;forSeeArgsToTable&amp;quot;, 1, args, &#039;table&#039;)&lt;br /&gt;
	checkType(&amp;quot;forSeeArgsToTable&amp;quot;, 2, from, &#039;number&#039;, true)&lt;br /&gt;
	from = from or 1&lt;br /&gt;
	checkType(&amp;quot;forSeeArgsToTable&amp;quot;, 3, options, &#039;table&#039;, true)&lt;br /&gt;
	options = options or {}&lt;br /&gt;
	for k, v in pairs(forSeeDefaultOptions) do&lt;br /&gt;
		if options[k] == nil then options[k] = v end&lt;br /&gt;
	end&lt;br /&gt;
	-- maxArg&#039;s gotten manually because getArgs() and table.maxn aren&#039;t friends&lt;br /&gt;
	local maxArg = 0&lt;br /&gt;
	for k, v in pairs(args) do&lt;br /&gt;
		if type(k) == &#039;number&#039; and k &amp;gt; maxArg then maxArg = k end&lt;br /&gt;
	end&lt;br /&gt;
	-- Structure the data out from the parameter list:&lt;br /&gt;
	-- * forTable is the wrapper table, with forRow rows&lt;br /&gt;
	-- * Rows are tables of a &amp;quot;use&amp;quot; string &amp;amp; a &amp;quot;pages&amp;quot; table of pagename strings&lt;br /&gt;
	-- * Blanks are left empty for defaulting elsewhere, but can terminate list&lt;br /&gt;
	local forTable = {}&lt;br /&gt;
	local i = from&lt;br /&gt;
	local terminated = false&lt;br /&gt;
	-- If there is extra text, and no arguments are given, give nil value&lt;br /&gt;
	-- to not produce default of &amp;quot;For other uses, see foo (disambiguation)&amp;quot;&lt;br /&gt;
	if options.extratext and i &amp;gt; maxArg then return nil end&lt;br /&gt;
	-- Loop to generate rows&lt;br /&gt;
	repeat&lt;br /&gt;
		-- New empty row&lt;br /&gt;
		local forRow = {}&lt;br /&gt;
		-- On blank use, assume list&#039;s ended &amp;amp; break at end of this loop&lt;br /&gt;
		forRow.use = args[i]&lt;br /&gt;
		if not args[i] then terminated = true end&lt;br /&gt;
		-- New empty list of pages&lt;br /&gt;
		forRow.pages = {}&lt;br /&gt;
		-- Insert first pages item if present&lt;br /&gt;
		table.insert(forRow.pages, args[i + 1])&lt;br /&gt;
		-- If the param after next is &amp;quot;and&amp;quot;, do inner loop to collect params&lt;br /&gt;
		-- until the &amp;quot;and&amp;quot;&#039;s stop. Blanks are ignored: &amp;quot;1|and||and|3&amp;quot; → {1, 3}&lt;br /&gt;
		while args[i + 2] == options.andKeyword do&lt;br /&gt;
			if args[i + 3] then&lt;br /&gt;
				table.insert(forRow.pages, args[i + 3])&lt;br /&gt;
			end&lt;br /&gt;
			-- Increment to next &amp;quot;and&amp;quot;&lt;br /&gt;
			i = i + 2&lt;br /&gt;
		end&lt;br /&gt;
		-- Increment to next use&lt;br /&gt;
		i = i + 2&lt;br /&gt;
		-- Append the row&lt;br /&gt;
		table.insert(forTable, forRow)&lt;br /&gt;
	until terminated or i &amp;gt; maxArg&lt;br /&gt;
&lt;br /&gt;
	return forTable&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
-- Stringifies a table as formatted by forSeeArgsToTable&lt;br /&gt;
function p.forSeeTableToString (forSeeTable, options)&lt;br /&gt;
	-- Type-checks and defaults&lt;br /&gt;
	checkType(&amp;quot;forSeeTableToString&amp;quot;, 1, forSeeTable, &amp;quot;table&amp;quot;, true)&lt;br /&gt;
	checkType(&amp;quot;forSeeTableToString&amp;quot;, 2, options, &amp;quot;table&amp;quot;, true)&lt;br /&gt;
	options = options or {}&lt;br /&gt;
	for k, v in pairs(forSeeDefaultOptions) do&lt;br /&gt;
		if options[k] == nil then options[k] = v end&lt;br /&gt;
	end&lt;br /&gt;
	-- Stringify each for-see item into a list&lt;br /&gt;
	local strList = {}&lt;br /&gt;
	if forSeeTable then&lt;br /&gt;
		for k, v in pairs(forSeeTable) do&lt;br /&gt;
			local useStr = v.use or options.otherText&lt;br /&gt;
			-- 本地化注意&lt;br /&gt;
			local pagesStr = p.andList(v.pages, true, true, true) or &#039;「\&#039;\&#039;\&#039;&#039; .. mFormatLink._formatLink{link = mHatnote.disambiguate(options.title)} .. &#039;\&#039;\&#039;\&#039;」&#039;&lt;br /&gt;
			local forSeeStr = string.format(options.forSeeForm, useStr, pagesStr)&lt;br /&gt;
			forSeeStr = punctuationCollapse(forSeeStr)&lt;br /&gt;
			table.insert(strList, forSeeStr)&lt;br /&gt;
		end&lt;br /&gt;
	end&lt;br /&gt;
	if options.extratext then table.insert(strList, punctuationCollapse(options.extratext..&#039;。&#039;)) end&lt;br /&gt;
	-- Return the concatenated list&lt;br /&gt;
	return table.concat(strList)&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
-- Produces a &amp;quot;For X, see [[Y]]&amp;quot; string from arguments. Expects index gaps&lt;br /&gt;
-- but not blank/whitespace values. Ignores named args and args &amp;lt; &amp;quot;from&amp;quot;.&lt;br /&gt;
function p._forSee (args, from, options)&lt;br /&gt;
	local forSeeTable = p.forSeeArgsToTable(args, from, options)&lt;br /&gt;
	return p.forSeeTableToString(forSeeTable, options)&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
-- As _forSee, but uses the frame.&lt;br /&gt;
function p.forSee (frame, from, options)&lt;br /&gt;
	mArguments = require(&#039;Module:Arguments&#039;)&lt;br /&gt;
	return p._forSee(mArguments.getArgs(frame), from, options)&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
return p&lt;/div&gt;</summary>
		<author><name>DoubleCircle</name></author>
	</entry>
	<entry>
		<id>https://9on0wiki.gunmu.dns.navy/index.php?title=Module:Labelled_list_hatnote&amp;diff=706</id>
		<title>Module:Labelled list hatnote</title>
		<link rel="alternate" type="text/html" href="https://9on0wiki.gunmu.dns.navy/index.php?title=Module:Labelled_list_hatnote&amp;diff=706"/>
		<updated>2026-08-26T10:58:53Z</updated>

		<summary type="html">&lt;p&gt;DoubleCircle：​导入1个版本&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;--------------------------------------------------------------------------------&lt;br /&gt;
--                               Labelled list                                --&lt;br /&gt;
--                                                                            --&lt;br /&gt;
-- This module does the core work of creating a hatnote composed of a list    --&lt;br /&gt;
-- prefixed by a colon-terminated label, i.e. &amp;quot;LABEL: [andList of pages]&amp;quot;,    --&lt;br /&gt;
-- for {{see also}} and similar templates.                                    --&lt;br /&gt;
--------------------------------------------------------------------------------&lt;br /&gt;
&lt;br /&gt;
local mHatnote = require(&#039;Module:Hatnote&#039;)&lt;br /&gt;
local mHatlist = require(&#039;Module:Hatnote list&#039;)&lt;br /&gt;
local mArguments --initialize lazily&lt;br /&gt;
local p = {}&lt;br /&gt;
&lt;br /&gt;
-- Defaults global to this module&lt;br /&gt;
-- 本地化注意&lt;br /&gt;
local defaults = {&lt;br /&gt;
	label = &#039;参见&#039;, --Final fallback for label argument&lt;br /&gt;
	labelForm = &#039;%s：%s&#039;,&lt;br /&gt;
	prefixes = {&#039;label&#039;, &#039;label &#039;, &#039;l&#039;},&lt;br /&gt;
	template = &#039;Module:Labelled list hatnote&#039;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
-- Helper function that pre-combines display parameters into page arguments.&lt;br /&gt;
-- Also compresses sparse arrays, as a desirable side-effect.&lt;br /&gt;
function p.preprocessDisplays (args, prefixes)&lt;br /&gt;
	-- Prefixes specify which parameters, in order, to check for display options&lt;br /&gt;
	-- They each have numbers auto-appended, e.g. &#039;label1&#039;, &#039;label 1&#039;, &amp;amp; &#039;l1&#039;&lt;br /&gt;
	prefixes = prefixes or defaults.prefixes&lt;br /&gt;
	local pages = {}&lt;br /&gt;
	for k, v in pairs(args) do&lt;br /&gt;
		if type(k) == &#039;number&#039; then&lt;br /&gt;
			local display&lt;br /&gt;
			for i = 1, #prefixes do&lt;br /&gt;
				display = args[prefixes[i] .. k]&lt;br /&gt;
				if display then break end&lt;br /&gt;
			end&lt;br /&gt;
			local page = display and&lt;br /&gt;
				string.format(&#039;%s|%s&#039;, string.gsub(v, &#039;|.*$&#039;, &#039;&#039;), display) or v&lt;br /&gt;
			pages[#pages + 1] = page&lt;br /&gt;
		end&lt;br /&gt;
	end&lt;br /&gt;
	return pages&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
-- Produces a labelled pages-list hatnote.&lt;br /&gt;
-- The main frame (template definition) takes 1 or 2 arguments, for a singular&lt;br /&gt;
-- and (optionally) plural label respectively:&lt;br /&gt;
-- * {{#invoke:Labelled list hatnote|labelledList|Singular label|Plural label}}&lt;br /&gt;
-- The resulting template takes pagename &amp;amp; label parameters normally.&lt;br /&gt;
function p.labelledList (frame)&lt;br /&gt;
	mArguments = require(&#039;Module:Arguments&#039;)&lt;br /&gt;
	local labels = {frame.args[1] or defaults.label}&lt;br /&gt;
	labels[2] = frame.args[2] or labels[1]&lt;br /&gt;
	local template = frame:getParent():getTitle()&lt;br /&gt;
	local args = mArguments.getArgs(frame, {parentOnly = true})&lt;br /&gt;
	local pages = p.preprocessDisplays(args)&lt;br /&gt;
	local options = {&lt;br /&gt;
		extraclasses = frame.args.extraclasses,&lt;br /&gt;
		category = args.category,&lt;br /&gt;
		selfref = frame.args.selfref or args.selfref,&lt;br /&gt;
		template = template&lt;br /&gt;
	}&lt;br /&gt;
	return p._labelledList(pages, labels, options)&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
function p._labelledList (pages, labels, options)&lt;br /&gt;
	labels = labels or {}&lt;br /&gt;
	if #pages == 0 then&lt;br /&gt;
		-- 本地化注意&lt;br /&gt;
		return mHatnote.makeWikitextError(&lt;br /&gt;
			&#039;未指定页面名称&#039;,&lt;br /&gt;
			(options.template or defaults.template) .. &#039;#错误&#039;,&lt;br /&gt;
			options.category&lt;br /&gt;
		)&lt;br /&gt;
	end&lt;br /&gt;
	label = (#pages == 1 and labels[1] or labels[2]) or defaults.label&lt;br /&gt;
	local text = string.format(&lt;br /&gt;
		options.labelForm or defaults.labelForm,&lt;br /&gt;
		label,&lt;br /&gt;
		mHatlist.andList(pages, true)&lt;br /&gt;
	)&lt;br /&gt;
	local hnOptions = {&lt;br /&gt;
		extraclasses = options.extraclasses,&lt;br /&gt;
		selfref = options.selfref&lt;br /&gt;
	}&lt;br /&gt;
	return mHatnote._hatnote(text, hnOptions)&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
return p&lt;/div&gt;</summary>
		<author><name>DoubleCircle</name></author>
	</entry>
	<entry>
		<id>https://9on0wiki.gunmu.dns.navy/index.php?title=Template:Further&amp;diff=704</id>
		<title>Template:Further</title>
		<link rel="alternate" type="text/html" href="https://9on0wiki.gunmu.dns.navy/index.php?title=Template:Further&amp;diff=704"/>
		<updated>2026-08-26T10:58:53Z</updated>

		<summary type="html">&lt;p&gt;DoubleCircle：​导入1个版本&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&amp;lt;includeonly&amp;gt;{{#invoke:labelled list hatnote|labelledList|{{#if:{{{topic|}}}|{{{topic|}}}的}}更多-{zh-cn:信息;zh-tw:資訊}-}}&amp;lt;/includeonly&amp;gt;&amp;lt;noinclude&amp;gt;&lt;br /&gt;
{{documentation}}&lt;br /&gt;
&amp;lt;!-- Categories go on the /doc subpage, and interwikis go on Wikidata. --&amp;gt;&lt;br /&gt;
&amp;lt;/noinclude&amp;gt;&lt;/div&gt;</summary>
		<author><name>DoubleCircle</name></author>
	</entry>
	<entry>
		<id>https://9on0wiki.gunmu.dns.navy/index.php?title=Template:Para&amp;diff=702</id>
		<title>Template:Para</title>
		<link rel="alternate" type="text/html" href="https://9on0wiki.gunmu.dns.navy/index.php?title=Template:Para&amp;diff=702"/>
		<updated>2026-08-26T10:58:53Z</updated>

		<summary type="html">&lt;p&gt;DoubleCircle：​导入1个版本&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&amp;lt;code lang=&amp;quot;en&amp;quot; class=&amp;quot;nowrap&amp;quot;&amp;gt;&amp;amp;#124;{{#if:{{{1|}}}|{{{1}}}&amp;amp;#61;}}{{{2|}}}&amp;lt;/code&amp;gt;&amp;lt;noinclude&amp;gt;&lt;br /&gt;
{{Documentation}}&lt;br /&gt;
[[Category:輸入支援模板]]&lt;br /&gt;
[[Category:格式模板]]&lt;br /&gt;
&amp;lt;!--Categories and interwikis go near the bottom of the /doc subpage.--&amp;gt;&lt;br /&gt;
&amp;lt;/noinclude&amp;gt;&lt;/div&gt;</summary>
		<author><name>DoubleCircle</name></author>
	</entry>
	<entry>
		<id>https://9on0wiki.gunmu.dns.navy/index.php?title=Template:Reflist&amp;diff=700</id>
		<title>Template:Reflist</title>
		<link rel="alternate" type="text/html" href="https://9on0wiki.gunmu.dns.navy/index.php?title=Template:Reflist&amp;diff=700"/>
		<updated>2026-08-26T10:58:53Z</updated>

		<summary type="html">&lt;p&gt;DoubleCircle：​导入1个版本&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&amp;lt;div class=&amp;quot;reflist &amp;lt;!--&lt;br /&gt;
 --&amp;gt;{{#if: {{{1|}}}&lt;br /&gt;
    | columns {{#iferror: {{#ifexpr: {{{1|1}}} &amp;gt; 1 }}&lt;br /&gt;
      | references-column-width &lt;br /&gt;
      | references-column-count references-column-count-{{#if:1|{{{1}}}}} }}&lt;br /&gt;
    | {{#if: {{{colwidth|}}}&lt;br /&gt;
      | references-column-width }} }}&amp;quot; style=&amp;quot;&amp;lt;!--&lt;br /&gt;
 --&amp;gt;{{#if: {{{1|}}}&lt;br /&gt;
    | {{#iferror: {{#ifexpr: {{{1|1}}} &amp;gt; 1 }}&lt;br /&gt;
      | {{column-width|{{#if:1|{{{1}}}}}}}&lt;br /&gt;
      | {{column-count|{{#if:1|{{{1}}}}}}} }}&lt;br /&gt;
    | {{#if: {{{colwidth|}}}&lt;br /&gt;
      | {{column-width|{{{colwidth}}}}} }} }} list-style-type: &amp;lt;!--&lt;br /&gt;
 --&amp;gt;{{{liststyle|{{#switch: {{{group|}}}&lt;br /&gt;
    | upper-alpha&lt;br /&gt;
    | upper-roman&lt;br /&gt;
    | lower-alpha&lt;br /&gt;
    | lower-greek&lt;br /&gt;
    | lower-roman = {{{group}}}&lt;br /&gt;
    | #default = decimal}}}}};&amp;quot;&amp;gt;&lt;br /&gt;
{{{list|{{#tag:references|{{{refs|}}}|group={{{group|}}}}}}}}&amp;lt;/div&amp;gt;&amp;lt;noinclude&amp;gt;&lt;br /&gt;
{{Documentation}}&lt;br /&gt;
&amp;lt;/noinclude&amp;gt;&lt;/div&gt;</summary>
		<author><name>DoubleCircle</name></author>
	</entry>
	<entry>
		<id>https://9on0wiki.gunmu.dns.navy/index.php?title=Module:Hatnote&amp;diff=698</id>
		<title>Module:Hatnote</title>
		<link rel="alternate" type="text/html" href="https://9on0wiki.gunmu.dns.navy/index.php?title=Module:Hatnote&amp;diff=698"/>
		<updated>2026-08-26T10:58:53Z</updated>

		<summary type="html">&lt;p&gt;DoubleCircle：​导入1个版本&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;--------------------------------------------------------------------------------&lt;br /&gt;
--                              Module:Hatnote                                --&lt;br /&gt;
--                                                                            --&lt;br /&gt;
-- This module produces hatnote links and links to related articles. It       --&lt;br /&gt;
-- implements the {{hatnote}} and {{format link}} meta-templates and includes --&lt;br /&gt;
-- helper functions for other Lua hatnote modules.                            --&lt;br /&gt;
--------------------------------------------------------------------------------&lt;br /&gt;
&lt;br /&gt;
local libraryUtil = require(&#039;libraryUtil&#039;)&lt;br /&gt;
local checkType = libraryUtil.checkType&lt;br /&gt;
local checkTypeForNamedArg = libraryUtil.checkTypeForNamedArg&lt;br /&gt;
local mArguments -- lazily initialise [[Module:Arguments]]&lt;br /&gt;
local yesno -- lazily initialise [[Module:Yesno]]&lt;br /&gt;
local formatLink -- lazily initialise [[Module:Format link]] ._formatLink&lt;br /&gt;
&lt;br /&gt;
local p = {}&lt;br /&gt;
&lt;br /&gt;
--------------------------------------------------------------------------------&lt;br /&gt;
-- Helper functions&lt;br /&gt;
--------------------------------------------------------------------------------&lt;br /&gt;
&lt;br /&gt;
local function getArgs(frame)&lt;br /&gt;
	-- Fetches the arguments from the parent frame. Whitespace is trimmed and&lt;br /&gt;
	-- blanks are removed.&lt;br /&gt;
	mArguments = require(&#039;Module:Arguments&#039;)&lt;br /&gt;
	return mArguments.getArgs(frame, {parentOnly = true})&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
local function removeInitialColon(s)&lt;br /&gt;
	-- Removes the initial colon from a string, if present.&lt;br /&gt;
	return s:match(&#039;^:?(.*)&#039;)&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
function p.defaultClasses(inline)&lt;br /&gt;
	-- Provides the default hatnote classes as a space-separated string; useful&lt;br /&gt;
	-- for hatnote-manipulation modules like [[Module:Hatnote group]].&lt;br /&gt;
	return&lt;br /&gt;
		(inline == 1 and &#039;hatnote-inline&#039; or &#039;hatnote&#039;) .. &#039; &#039; ..&lt;br /&gt;
		&#039;navigation-not-searchable&#039;&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
function p.disambiguate(page, disambiguator)&lt;br /&gt;
	-- Formats a page title with a disambiguation parenthetical,&lt;br /&gt;
	-- i.e. &amp;quot;Example&amp;quot; → &amp;quot;Example (disambiguation)&amp;quot;.&lt;br /&gt;
	checkType(&#039;disambiguate&#039;, 1, page, &#039;string&#039;)&lt;br /&gt;
	checkType(&#039;disambiguate&#039;, 2, disambiguator, &#039;string&#039;, true)&lt;br /&gt;
	disambiguator = disambiguator or &#039;消歧义&#039;&lt;br /&gt;
	return mw.ustring.format(&#039;%s (%s)&#039;, page, disambiguator)&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
function p.findNamespaceId(link, removeColon)&lt;br /&gt;
	-- Finds the namespace id (namespace number) of a link or a pagename. This&lt;br /&gt;
	-- function will not work if the link is enclosed in double brackets. Colons&lt;br /&gt;
	-- are trimmed from the start of the link by default. To skip colon&lt;br /&gt;
	-- trimming, set the removeColon parameter to false.&lt;br /&gt;
	checkType(&#039;findNamespaceId&#039;, 1, link, &#039;string&#039;)&lt;br /&gt;
	checkType(&#039;findNamespaceId&#039;, 2, removeColon, &#039;boolean&#039;, true)&lt;br /&gt;
	if removeColon ~= false then&lt;br /&gt;
		link = removeInitialColon(link)&lt;br /&gt;
	end&lt;br /&gt;
	local namespace = link:match(&#039;^(.-):&#039;)&lt;br /&gt;
	if namespace then&lt;br /&gt;
		local nsTable = mw.site.namespaces[namespace]&lt;br /&gt;
		if nsTable then&lt;br /&gt;
			return nsTable.id&lt;br /&gt;
		end&lt;br /&gt;
	end&lt;br /&gt;
	return 0&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
function p.makeWikitextError(msg, helpLink, addTrackingCategory, title)&lt;br /&gt;
	-- Formats an error message to be returned to wikitext. If&lt;br /&gt;
	-- addTrackingCategory is not false after being returned from&lt;br /&gt;
	-- [[Module:Yesno]], and if we are not on a talk page, a tracking category&lt;br /&gt;
	-- is added.&lt;br /&gt;
	checkType(&#039;makeWikitextError&#039;, 1, msg, &#039;string&#039;)&lt;br /&gt;
	checkType(&#039;makeWikitextError&#039;, 2, helpLink, &#039;string&#039;, true)&lt;br /&gt;
	yesno = require(&#039;Module:Yesno&#039;)&lt;br /&gt;
	title = title or mw.title.getCurrentTitle()&lt;br /&gt;
	-- Make the help link text.&lt;br /&gt;
	local helpText&lt;br /&gt;
	if helpLink then&lt;br /&gt;
		helpText = &#039;（[[&#039; .. helpLink .. &#039;|帮助]]）&#039;&lt;br /&gt;
	else&lt;br /&gt;
		helpText = &#039;&#039;&lt;br /&gt;
	end&lt;br /&gt;
	-- Make the category text.&lt;br /&gt;
	local category&lt;br /&gt;
	if not title.isTalkPage -- Don&#039;t categorise talk pages&lt;br /&gt;
		and title.namespace ~= 2 -- Don&#039;t categorise userspace&lt;br /&gt;
		and yesno(addTrackingCategory) ~= false -- Allow opting out&lt;br /&gt;
	then&lt;br /&gt;
		category = &#039;有错误的顶注模板&#039;&lt;br /&gt;
		category = mw.ustring.format(&lt;br /&gt;
			&#039;[[%s:%s]]&#039;,&lt;br /&gt;
			mw.site.namespaces[14].name,&lt;br /&gt;
			category&lt;br /&gt;
		)&lt;br /&gt;
	else&lt;br /&gt;
		category = &#039;&#039;&lt;br /&gt;
	end&lt;br /&gt;
	return mw.ustring.format(&lt;br /&gt;
		&#039;&amp;lt;strong class=&amp;quot;error&amp;quot;&amp;gt;错误：%s%s。&amp;lt;/strong&amp;gt;%s&#039;,&lt;br /&gt;
		msg,&lt;br /&gt;
		helpText,&lt;br /&gt;
		category&lt;br /&gt;
	)&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
local curNs = mw.title.getCurrentTitle().namespace&lt;br /&gt;
p.missingTargetCat =&lt;br /&gt;
	--Default missing target category, exported for use in related modules&lt;br /&gt;
	((curNs ==  0) or (curNs == 14)) and&lt;br /&gt;
	&#039;顶注模板包含不存在页面的条目&#039; or nil&lt;br /&gt;
&lt;br /&gt;
function p.quote(title)&lt;br /&gt;
	--Wraps titles in quotation marks. If the title starts/ends with a quotation&lt;br /&gt;
	--mark, kerns that side as with {{-&#039;}}&lt;br /&gt;
	local quotationMarks = {&lt;br /&gt;
		[&amp;quot;&#039;&amp;quot;]=true, [&#039;&amp;quot;&#039;]=true, [&#039;“&#039;]=true, [&amp;quot;‘&amp;quot;]=true, [&amp;quot;「&amp;quot;]=true, [&amp;quot;『&amp;quot;]=true, [&#039;”&#039;]=true, [&amp;quot;’&amp;quot;]=true, [&amp;quot;」&amp;quot;]=true, [&amp;quot;』&amp;quot;]=true&lt;br /&gt;
	}&lt;br /&gt;
	local quoteLeft, quoteRight = -- Test if start/end are quotation marks&lt;br /&gt;
		quotationMarks[string.sub(title,  1,  1)],&lt;br /&gt;
		quotationMarks[string.sub(title, -1, -1)]&lt;br /&gt;
	if quoteLeft or quoteRight then&lt;br /&gt;
		title = mw.html.create(&amp;quot;span&amp;quot;):wikitext(title)&lt;br /&gt;
	end&lt;br /&gt;
	if quoteLeft  then title:css(&amp;quot;padding-left&amp;quot;,  &amp;quot;0.15em&amp;quot;) end&lt;br /&gt;
	if quoteRight then title:css(&amp;quot;padding-right&amp;quot;, &amp;quot;0.15em&amp;quot;) end&lt;br /&gt;
	return &#039;「&#039; .. tostring(title) .. &#039;」&#039;&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
--------------------------------------------------------------------------------&lt;br /&gt;
-- Hatnote 顶注&lt;br /&gt;
--&lt;br /&gt;
-- Produces standard hatnote text. Implements the {{hatnote}} template.&lt;br /&gt;
-- 产生标准顶注文字。实现{{hatnote}}模板&lt;br /&gt;
--------------------------------------------------------------------------------&lt;br /&gt;
&lt;br /&gt;
function p.hatnote(frame)&lt;br /&gt;
	local args = getArgs(frame)&lt;br /&gt;
	local s = args[1]&lt;br /&gt;
	if not s then&lt;br /&gt;
		return p.makeWikitextError(&lt;br /&gt;
			&#039;text参数缺失&#039;,&lt;br /&gt;
			&#039;Template:Hatnote#错误&#039;,&lt;br /&gt;
			args.category&lt;br /&gt;
		)&lt;br /&gt;
	end&lt;br /&gt;
	return p._hatnote(s, {&lt;br /&gt;
		extraclasses = args.extraclasses,&lt;br /&gt;
		selfref = args.selfref&lt;br /&gt;
	})&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
function p._hatnote(s, options)&lt;br /&gt;
	checkType(&#039;_hatnote&#039;, 1, s, &#039;string&#039;)&lt;br /&gt;
	checkType(&#039;_hatnote&#039;, 2, options, &#039;table&#039;, true)&lt;br /&gt;
	options = options or {}&lt;br /&gt;
	local inline = options.inline&lt;br /&gt;
	local hatnote = mw.html.create(inline == 1 and &#039;span&#039; or &#039;div&#039;)&lt;br /&gt;
	local extraclasses&lt;br /&gt;
	if type(options.extraclasses) == &#039;string&#039; then&lt;br /&gt;
		extraclasses = options.extraclasses&lt;br /&gt;
	end&lt;br /&gt;
&lt;br /&gt;
	hatnote&lt;br /&gt;
		:attr(&#039;role&#039;, &#039;note&#039;)&lt;br /&gt;
		:addClass(p.defaultClasses(inline))&lt;br /&gt;
		:addClass(extraclasses)&lt;br /&gt;
		:addClass(options.selfref and &#039;selfref&#039; or nil)&lt;br /&gt;
		:wikitext(s)&lt;br /&gt;
&lt;br /&gt;
	return mw.getCurrentFrame():extensionTag{&lt;br /&gt;
		name = &#039;templatestyles&#039;, args = { src = &#039;Module:Hatnote/styles.css&#039; }&lt;br /&gt;
	} .. tostring(hatnote)&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
return p&lt;/div&gt;</summary>
		<author><name>DoubleCircle</name></author>
	</entry>
</feed>