Wiktionary siwiktionary https://si.wiktionary.org/wiki/%E0%B7%80%E0%B7%92%E0%B6%9A%E0%B7%8A%E0%B7%82%E0%B6%B1%E0%B6%BB%E0%B7%92:%E0%B6%B8%E0%B7%94%E0%B6%BD%E0%B7%8A_%E0%B6%B4%E0%B7%92%E0%B6%A7%E0%B7%94%E0%B7%80 MediaWiki 1.47.0-wmf.3 case-sensitive මාධ්‍යය විශේෂ සාකච්ඡාව පරිශීලක පරිශීලක සාකච්ඡාව වික්ෂනරි වික්ෂනරි සාකච්ඡාව ගොනුව ගොනුව සාකච්ඡාව මාධ්‍යවිකි මාධ්‍යවිකි සාකච්ඡාව සැකිල්ල සැකිලි සාකච්ඡාව උදවු උදවු සාකච්ඡාව ප්‍රවර්ගය ප්‍රවර්ග සාකච්ඡාව TimedText TimedText talk Module Module talk Event Event talk Module:sinhala 828 5451 234896 234706 2026-05-25T13:23:00Z Lee 19 "epicene adjectives" සිට "උභයලිංගික නාම විශේෂණ පද" වෙතට 234896 Scribunto text/plain local en_utilities_module = "Module:en-utilities" local p = {} -- p stands for package local m_strutils = require("Module:en-utilities") -- ගැටළු සහගත වචන දැනට පරීක්ෂාවට ලක් කෙරෙයි local words_with_issues = { "female", "male", } local english2sinhala = {} -- සම්බන්ධ කිරීම් english2sinhala["and"] = "සහ" english2sinhala["in"] = "තුළ" -- තරමක් දිග යෙදුම් english2sinhala["Former name of"] = " සඳහා පෙර දී භාවිතා වූ නාමය" english2sinhala["former name of"] = " සඳහා පෙර දී භාවිතා වූ නාමය" english2sinhala["Alternative spelling of"] = " යන යෙදුමේ වෛකල්පික අක්ෂර වින්‍යාසයක්" english2sinhala["an alternative spelling "] = "වෛකල්පික අක්ෂර වින්‍යාසයක් " english2sinhala["Chinese simplified forms"] = "චීන සරලීකෘත ස්වරූප" english2sinhala["Initialism of"] = " යන යෙදුමේ මුලකුරු ලෙස සටහන් කළ ස්වරූපය" english2sinhala["terms inherited"] = "උරුම වූ" english2sinhala["Synonym of"] = " යන්නට සමාන අරුත් ඇති පදයක්" -- ස්ථාන නාම සඳහා english2sinhala["small village"] = "කුඩා ගම්මානය" -- විශේෂ english2sinhala["the simplified"] = "සරලීකෘත" english2sinhala["related-to"] = "ආශ්‍රිත" english2sinhala["Name"] = "නාම" english2sinhala["name"] = "නාම" english2sinhala["set"] = "කුලක" english2sinhala["type"] = "වර්ග" english2sinhala["grouping"] = "කාණ්ඩ" -- සැකිලි ප්‍රවර්ග සඳහා අවශ්‍ය දත්ත english2sinhala["Auto-table"] = "ස්වයංක්‍රීය-වගු" english2sinhala["data"] = "දත්ත" english2sinhala["Data"] = "දත්ත" english2sinhala["Administration"] = "පරිපාලන" english2sinhala["Archive"] = "ලේඛනාරක්ෂණ" english2sinhala["Audio"] = "ශ්‍රව්‍ය සහාය" english2sinhala["Number"] = "සංඛ්‍යා" english2sinhala["Morphology"] = "පදිම විචාර" english2sinhala["String manipulation"] = "පෙළ හැසිරවීම්" -- english2sinhala["derivational"] = "ව්‍යුත්පන්නක" english2sinhala["nominal"] = "නොමිනල්" -- english2sinhala["data modules"] = "දත්ත මොඩියුල" english2sinhala["Sortkey-generating"] = "සෝට්කී-ජනක" english2sinhala["Page generation"] = "පිටු ජනක" -- english2sinhala["Template"] = "සැකිල්ල" -- english2sinhala["Pronunciation"] = "උච්චාරණ" english2sinhala["Verification"] = "සත්‍යාපන" -- english2sinhala["Etymology templates"] = "නිරුක්ති සැකිලි" english2sinhala["Translation templates"] = "පරිවර්තන සැකිලි" english2sinhala["Appendix templates"] = "උපග්‍රන්ථ සැකිලි" english2sinhala["reference templates"] = "මූලාශ්‍ර සැකිලි" -- english2sinhala["poetic terms"] = "කාව්‍යමය යෙදුම්" -- english2sinhala["hanja"] = "හන්ජා" english2sinhala["hanzi"] = "හන්සු" -- english2sinhala["Character"] = "අනුලක්ෂණ" english2sinhala["symbols"] = "සංකේත" english2sinhala["clipping"] = "ක්ලිප් කිරීම" english2sinhala["roots"] = "මූල" english2sinhala["morphemes"] = "පදාණු" english2sinhala["morpheme"] = "පදාණුව" english2sinhala["punctuation marks"] = "විරාම ලක්‍ෂණ" -- english2sinhala["imperative"] = "විධි ක්‍රියා" english2sinhala["nominative"] = "පෙර විබත්" english2sinhala["ablative"] = "අවදි විබත්" english2sinhala["vocative"] = "අලප් විබත්" -- english2sinhala["transitive"] = "සකර්මක" english2sinhala["intransitive"] = "අකර්මක" -- english2sinhala["uncomparable"] = "සැසඳිය නොහැකි" english2sinhala["comparable"] = "සැසඳිය හැකි" -- english2sinhala["uncomparable adjectives"] = "සැසඳිය නොහැකි නාම විශේෂණ පද" english2sinhala["comparable adjectives"] = "සැසඳිය හැකි නාම විශේෂණ පද" english2sinhala["epicene adjectives"] = "උභයලිංගික නාම විශේෂණ පද" english2sinhala["transitive verbs"] = "සකර්මක ක්‍රියා පද" -- english2sinhala["first-person"] = "උත්තම පුරුෂ" english2sinhala["first person"] = "උත්තම පුරුෂ" english2sinhala["third-person"] = "අන්‍ය පුරුෂ" english2sinhala["third person"] = "අන්‍ය පුරුෂ" -- english2sinhala["gender"] = "ලිංග භේදය" english2sinhala["feminine"] = "ස්ත්‍රී ලිංග" english2sinhala["masculine"] = "පුරුෂ ලිංග" english2sinhala["female"] = "ස්ත්‍රී ලිංග" english2sinhala["male"] = "පුරුෂ ලිංග" english2sinhala["unknown-gender"] = "ලිංග භේදය නොදන්නා" english2sinhala["given names"] = "පුද්ගල නාම" english2sinhala["given name"] = "පුද්ගල නාමය" english2sinhala["female given names"] = "ස්ත්‍රී ලිංග පුද්ගල නාම" english2sinhala["male given names"] = "පුරුෂ ලිංග පුද්ගල නාම" english2sinhala["male given name"] = "පුරුෂ ලිංග පුද්ගල නාමය" english2sinhala["diminutives of "] = " සඳහා වන අල්පාර්ථ පද" english2sinhala["diminutives of male given names"] = "පුරුෂ ලිංග පුද්ගල නාම සඳහා වන අල්පාර්ථ පද" -- english2sinhala["pronoun forms"] = "සර්වනාම ස්වරූප" english2sinhala["proper noun forms"] = "සංඥා නාම පද ස්වරූප" english2sinhala["adjective forms"] = "නාම විශේෂණ පද ස්වරූප" english2sinhala["noun forms"] = "නාම පද ස්වරූප" english2sinhala["verb forms"] = "ක්‍රියා පද ස්වරූප" english2sinhala["suffix form"] = "ප්‍රත්‍ය ස්වරූපය" english2sinhala["suffix forms"] = "ප්‍රත්‍ය ස්වරූප" english2sinhala["quotation"] = "උපුටා දැක්වීම" english2sinhala["quotations"] = "උපුටා දැක්වීම්" english2sinhala["usage example"] = "භාවිත නිදර්ශනය" english2sinhala["usage examples"] = "භාවිත නිදර්ශන" english2sinhala["Wikipedia"] = "විකිපීඩියාව" english2sinhala["wikipedia"] = "විකිපීඩියාව" english2sinhala["singular"] = "ඒක වචන" english2sinhala["singula"] = "ඒක වචන" english2sinhala["plural"] = "බහුවචන" english2sinhala["plurals"] = "බහුවචන" english2sinhala["noun"] = "නාම පදය" english2sinhala["nouns"] = "නාම පද" english2sinhala["particle"] = "නිපාත පදය" english2sinhala["particles"] = "නිපාත පද" english2sinhala["verb"] = "ක්‍රියා පදය" english2sinhala["verbs"] = "ක්‍රියා පද" english2sinhala["adjective"] = "නාම විශේෂණ පදය" english2sinhala["adjectives"] = "නාම විශේෂණ පද" english2sinhala["adverb"] = "ක්‍රියා විශේෂණ පදය" english2sinhala["adverbs"] = "ක්‍රියා විශේෂණ පද" english2sinhala["prefix"] = "උපසර්ගය" english2sinhala["prefixes"] = "උපසර්ග" english2sinhala["suffix"] = "ප්‍රත්‍යය" english2sinhala["suffixes"] = "ප්‍රත්‍ය" english2sinhala["letter"] = "අකුර" english2sinhala["letters"] = "අකුරු" english2sinhala["numeral"] = "සංඛ්‍යාංකය" english2sinhala["numerals"] = "සංඛ්‍යාංක" english2sinhala["numeral symbol"] = "සංඛ්‍යාංක සංකේතය" english2sinhala["numeral symbols"] = "සංඛ්‍යාංක සංකේත" english2sinhala["numbers"] = "සංඛ්‍යාව" english2sinhala["numbers"] = "සංඛ්‍යා" english2sinhala["lemma"] = "පාඨය" english2sinhala["lemmas"] = "පාඨ" english2sinhala["pronoun"] = "සර්වනාමය" english2sinhala["pronouns"] = "සර්වනාම" english2sinhala["phrase"] = "වාක්‍ය ඛණ්ඩය" english2sinhala["phrases"] = "වාක්‍ය ඛණ්ඩ" english2sinhala["phrasebook"] = "වාක්‍ය ඛණ්ඩ පොත" english2sinhala["Geography"] = "භූගෝලවේදය" english2sinhala["geography"] = "භූගෝලවේදය" english2sinhala["Oceanography"] = "සාගරවේදය" english2sinhala["oceanography"] = "සාගරවේදය" english2sinhala["continent"] = "මහාද්වීපය" english2sinhala["Continent"] = "මහාද්වීපය" english2sinhala["continents"] = "මහාද්වීප" english2sinhala["Continents"] = "මහාද්වීප" english2sinhala["island"] = "දූපත" english2sinhala["country"] = "රට" english2sinhala["countries"] = "රටවල්" english2sinhala["language"] = "භාෂාව" english2sinhala["Language"] = "භාෂාව" english2sinhala["languages"] = "භාෂා" english2sinhala["Languages"] = "භාෂා" english2sinhala["surname"] = "පෙළපත් නාමය" english2sinhala["surnames"] = "පෙළපත් නාම" english2sinhala["proper noun"] = "සංඥා නාම පදය" english2sinhala["proper nouns"] = "සංඥා නාම පද" english2sinhala["abbreviation"] = "කෙටි යෙදුම" english2sinhala["abbreviations"] = "කෙටි යෙදුම්" english2sinhala["interjections"] = "විශ්මයාර්ථ පද" english2sinhala["misspellings"] = "අක්ෂර වින්‍යාස දෝෂ" -- -- පහත කොටසේ "terms" සඳහා "පද" යනුවෙන් භාවිතය, ගැටළු සහගත බව පෙනෙයි. -- එය "යෙදුම්" වලට මාරු කොට බලමු. -- english2sinhala["term"] = "පදය" -- english2sinhala["terms"] = "පද" -- නව ආකාරය english2sinhala["term"] = "යෙදුම" english2sinhala["terms"] = "යෙදුම්" -- english2sinhala["colle"] = "පද" english2sinhala["collective noun"] = "සමූහවාචී නාම පදය" english2sinhala["collective nouns"] = "සමූහවාචී නාම පද" english2sinhala["countable noun"] = "ගැණිය හැකි නාම පදය" english2sinhala["countable nouns"] = "ගැණිය හැකි නාම පද" english2sinhala["countable proper noun"] = "ගැණිය හැකි සංඥා නාම පදය" english2sinhala["countable proper nouns"] = "ගැණිය හැකි සංඥා නාම පද" english2sinhala["uncountable noun"] = "නොගැණිය හැකි නාම පදය" english2sinhala["uncountable nouns"] = "නොගැණිය හැකි නාම පද" english2sinhala["indeclinable nouns"] = "අව්‍යය නාම පද" english2sinhala["inflection"] = "වරනැගීම" english2sinhala["Inflection"] = "වරනැගීම" english2sinhala["inflections"] = "වරනැගීම්" english2sinhala["Inflections"] = "වරනැගීම්" english2sinhala["transliteration"] = "අක්ෂර පරිවර්තනය" english2sinhala["Transliteration"] = "අක්ෂර පරිවර්තනය" english2sinhala["transliterations"] = "අක්ෂර පරිවර්තන" english2sinhala["Transliterations"] = "අක්ෂර පරිවර්තන" english2sinhala["romanization"] = "රෝමානුකරණය" english2sinhala["romanizations"] = "රෝමානුකරණ" -- english2sinhala["entry name-generating"] = "ප්‍රවේශ නාම-ජනනය" -- english2sinhala["Entry name-generating"] = "ප්‍රවේශ නාම-ජනනය" -- english2sinhala["entry name-generatings"] = "ප්‍රවේශ නාම-ජනක" -- english2sinhala["Entry name-generatings"] = "ප්‍රවේශ නාම-ජනක" english2sinhala["Religion"] = "ආගම" english2sinhala["Buddhism"] = "බුදු දහම සහ බුද්ධාගම" english2sinhala["Places"] = "ස්ථාන" english2sinhala["places"] = "ස්ථාන" -- අක්ෂරක්‍රම english2sinhala["Cyrillic"] = "සිරිලික්" english2sinhala["Devanagari"] = "දේවනාගරි" english2sinhala["Brahmi"] = "බ්‍රාහ්මී" english2sinhala["Braille"] = "බ්‍රේල්" english2sinhala["Han"] = "හන්" english2sinhala["Hiragana"] = "හිරගනා" english2sinhala["Katakana"] = "කතකනා" english2sinhala["Flag semaphore"] = "ධජ සංඥා" -- -- [ Module:ja-see ] සඳහා english2sinhala["the hiragana spelling"] = "හිරගනා අක්ෂර වින්‍යාසය" -- භාෂා පවුල් english2sinhala["Anglic"] = "ඇන්ග්ලික්" english2sinhala["Germanic"] = "ජර්මානු" english2sinhala["Koreanic"] = "කොරියානු" english2sinhala["Indo-Aryan"] = "ඉන්දු-ආර්ය" english2sinhala["Indo-Iranian"] = "ඉන්දු-ඉරාන" english2sinhala["Middle Indo-Aryan"] = "මධ්‍යකාලීන ඉන්දු-ආර්ය" english2sinhala["Indo-European"] = "ඉන්දු-යුරෝපීය" english2sinhala["Anglo-Frisian"] = "ඇන්ග්ලෝ-ෆ්‍රිසියන්" -- භාෂා english2sinhala["Algerian Arabic"] = "ඇල්ජීරියානු අරාබි" english2sinhala["Amharic"] = "ඇම්හාරික්" english2sinhala["Ancient Greek"] = "පුරාතන ග්‍රීක" english2sinhala["Anglo-Norman"] = "ඇන්ග්ලෝ-නෝමන්" english2sinhala["Arabic"] = "අරාබි" english2sinhala["Armenian"] = "ආමේනියානු" english2sinhala["Aymara"] = "අයිමාරා" english2sinhala["Azerbaijani"] = "අසර්බයිජානි" english2sinhala["Okinawan"] = "ඔකිනවා" english2sinhala["Basque"] = "බාස්ක්" english2sinhala["Bengali"] = "බෙංගාලි" english2sinhala["Bihari"] = "බිහාරී" english2sinhala["Breton"] = "බ්‍රෙටන්" english2sinhala["Bulgarian"] = "බල්ගේරියානු" english2sinhala["Burmese"] = "බුරුම" english2sinhala["Cantonese"] = "කැන්ටනීස්" english2sinhala["Chinese"] = "චීන" english2sinhala["Min Nan"] = "මින් නන්" english2sinhala["Coptic"] = "කොප්ටික්" english2sinhala["Cornish"] = "කෝනිෂ්" english2sinhala["Czech"] = "චෙක්" english2sinhala["Danish"] = "ඩෙන්මාර්ක" english2sinhala["Dhivehi"] = "දිවෙහි" english2sinhala["Dutch"] = "ඕලන්ද" english2sinhala["Egyptian"] = "ඊජිප්තු" english2sinhala["English"] = "ඉංග්‍රීසි" english2sinhala["Old English"] = "පුරාතන ඉංග්‍රීසි" english2sinhala["Middle English"] = "මධ්‍යකාලීන ඉංග්‍රීසි" english2sinhala["Esperanto"] = "එස්පෙරාන්තො" english2sinhala["Estonian"] = "එස්තෝනියානු" english2sinhala["Finnish"] = "ෆින්ලන්ත" english2sinhala["French"] = "ප්‍රංශ" english2sinhala["Old French"] = "පුරාතන ප්‍රංශ" english2sinhala["Middle French"] = "මධ්‍යකාලීන ප්‍රංශ" english2sinhala["Georgian"] = "ජෝර්ජියානු" english2sinhala["German"] = "ජර්මානු" english2sinhala["Greek"] = "ග්‍රීක" english2sinhala["Gujarati"] = "ගුජරාටි" english2sinhala["Hebrew"] = "හීබෲ" english2sinhala["Hindi"] = "හින්දි" english2sinhala["Hungarian"] = "හංගේරියානු" english2sinhala["Icelandic"] = "අයිස්ලන්ත" english2sinhala["Indonesian"] = "ඉන්දුනීසියානු" english2sinhala["Irish"] = "අයිරිෂ්" english2sinhala["Italian"] = "ඉතාලි" english2sinhala["Japanese"] = "ජපන්" english2sinhala["Javanese"] = "ජාවා" english2sinhala["Kannada"] = "කන්නඩ" english2sinhala["Kashmiri"] = "කාෂ්මීරි" english2sinhala["Kongo"] = "කොංගෝ" english2sinhala["Korean"] = "කොරියානු" english2sinhala["Lao"] = "ලාඕ" english2sinhala["Old Latin"] = "පුරාතන ලතින්" english2sinhala["Latin"] = "ලතින්" english2sinhala["Malay"] = "මැලේ" english2sinhala["Malayalam"] = "මලයාලම්" english2sinhala["Mandarin"] = "මැන්ඩරීන්" english2sinhala["Manx"] = "මැන්ක්ස්" english2sinhala["Marathi"] = "මරාථි" english2sinhala["Mongolian"] = "මොංගෝලියානු" english2sinhala["Norwegian"] = "නෝර්වීජියානු" english2sinhala["the Netherlands"] = "නෙදර්ලන්තය" english2sinhala["Pali"] = "පාලි" english2sinhala["Persian"] = "පර්සියානු" english2sinhala["Middle Persian"] = "මධ්‍යකාලීන පර්සියානු" english2sinhala["Polish"] = "පෝලන්ත" english2sinhala["Portuguese"] = "පෘතුගීසි" english2sinhala["Prakrit"] = "ප්‍රාකෘත" english2sinhala["Helu Prakrit"] = "එළු ප්‍රාකෘත" english2sinhala["Ashokan Prakrit"] = "අශෝක ප්‍රාකෘත" english2sinhala["Epigraphic Prakrit"] = "අභිලේඛන ප්‍රාකෘත" english2sinhala["Proto-Indo-Iranian"] = "ප්‍රොටෝ-ඉන්දු-ඉරාන" english2sinhala["Proto-Italic"] = "ප්‍රොටෝ-ඉතාලිකා" english2sinhala["Proto-Indo-European"] = "ප්‍රොටෝ-ඉන්දු-යුරෝපීය" english2sinhala["Proto-Basque"] = "ප්‍රොටෝ-බාස්ක්" english2sinhala["Proto-West Germanic"] = "ප්‍රොටෝ-බටහිර ජර්මානු" english2sinhala["Proto-Germanic"] = "ප්‍රොටෝ-ජර්මානු" english2sinhala["Quechua"] = "ක්වෙච්වා" english2sinhala["Romanian"] = "රුමේනියානු" english2sinhala["Russian"] = "රුසියානු" english2sinhala["Belarusian"] = "බෙලරුසියානු" english2sinhala["Macedonian"] = "මැසඩෝනියානු" english2sinhala["Serbo-Croatian"] = "සර්බෝ-ක්‍රොඒෂියානු" english2sinhala["Sanskrit"] = "සංස්කෘත" english2sinhala["Scottish Gaelic"] = "ස්කොට්ස් ගේලික්" english2sinhala["Sindhi"] = "සින්ධි" english2sinhala["Sinhala"] = "සිංහල" english2sinhala["Sinhalese"] = "සිංහල" english2sinhala["Somali"] = "සෝමාලි" english2sinhala["Spanish"] = "ස්පාඤ්ඤ" english2sinhala["Old Spanish"] = "පුරාතන ස්පාඤ්ඤ" english2sinhala["Sundanese"] = "සුන්ඩා" english2sinhala["Swedish"] = "ස්වීඩන්" english2sinhala["Old Tamil"] = "පුරාතන දෙමළ" english2sinhala["Tamil"] = "දෙමළ" english2sinhala["Telugu"] = "තෙලිඟු" english2sinhala["Thai"] = "තායි" english2sinhala["Tibetan"] = "තිබ්බත" english2sinhala["Translingual"] = "සර්ව භාෂාමය" english2sinhala["Turkish"] = "තුර්කි" english2sinhala["Ukrainian"] = "යුක්‍රේනියානු" english2sinhala["Urdu"] = "උර්දු" english2sinhala["Uzbek"] = "උස්බෙක්" english2sinhala["Vietnamese"] = "වියට්නාම" english2sinhala["Welsh"] = "වේල්ස" english2sinhala["Yiddish"] = "යිඩිශ්" english2sinhala["Zulu"] = "සූලූ" -- රටවල් english2sinhala["Hungary"] = "හංගේරියාව" english2sinhala["Slovakia"] = "ස්ලෝවැකියාව" english2sinhala["Croatia"] = "ක්‍රොඒෂියාව" english2sinhala["Serbia"] = "සර්බියාව" english2sinhala["Afghanistan"] = "ඇෆ්ගනිස්ථානය" english2sinhala["Africa"] = "අප්‍රිකාව" english2sinhala["Algeria"] = "ඇල්ජීරියාව" english2sinhala["America"] = "ඇමෙරිකාව" english2sinhala["Armenia"] = "ආමේනියාව" english2sinhala["Asia"] = "ආසියාව" english2sinhala["South Asia"] = "දකුණු ආසියාව" english2sinhala["Australia"] = "ඕස්ට්‍රේලියාව" english2sinhala["Azerbaijan"] = "අසර්බයිජානය" english2sinhala["Bahrain"] = "බහරේනය" english2sinhala["Bangladesh"] = "බංගලිදේශය" english2sinhala["Belgium"] = "බෙල්ජියම" english2sinhala["Bhutan"] = "භූතානය" english2sinhala["Brazil"] = "බ්‍රසීලය" english2sinhala["Brunei"] = "බෲනායි" english2sinhala["Bulgaria"] = "බල්ගේරියාව" english2sinhala["Cambodia"] = "කාම්බෝජය" english2sinhala["Canada"] = "කැනඩාව" english2sinhala["Central America"] = "මධ්‍යම ඇමෙරිකාව" english2sinhala["Chile"] = "චිලී" english2sinhala["China"] = "චීනය" english2sinhala["Croatia"] = "ක්‍රොඒෂියාව" english2sinhala["Cyprus"] = "සයිප්‍රසය" english2sinhala["Denmark"] = "ඩෙන්මාර්කය" english2sinhala["Earth"] = "පෘථිවිය" english2sinhala["East Timor (Timor-Leste)"] = "නැගෙනහිර ටිමෝරය" english2sinhala["Egypt"] = "ඊජිප්තුව" english2sinhala["Europe"] = "යුරෝපය" english2sinhala["Finland"] = "ෆින්ලන්තය" english2sinhala["France"] = "ප්‍රංශය" english2sinhala["Gabon"] = "ගැබොන්" english2sinhala["Georgia"] = "ජෝජියාව" english2sinhala["Germany"] = "ජර්මනිය" english2sinhala["Ghana"] = "ඝානාව" english2sinhala["Gibraltar"] = "ජිබ්‍රෝල්ටාව" english2sinhala["Greece"] = "ග්‍රීසිය" english2sinhala["Iceland"] = "අයිස්ලන්තය" english2sinhala["India"] = "ඉන්දියාව" english2sinhala["Indonesia"] = "ඉන්දුනීසියාව" english2sinhala["Iran"] = "ඉරානය" english2sinhala["Iraq"] = "ඉරාකය" english2sinhala["Israel"] = "ඊශ්‍රායලය" english2sinhala["Italy"] = "ඉතාලිය" english2sinhala["Japan"] = "ජපානය" english2sinhala["Jordan"] = "ජෝදානය" english2sinhala["Kazakhstan"] = "කසක්ස්තානය" english2sinhala["Kuwait"] = "කුවේටය" english2sinhala["Kyrgyzstan"] = "කිර්ගිස්තානය" english2sinhala["Laos"] = "ලාඕසය" english2sinhala["Lebanon"] = "ලෙබනනය" english2sinhala["Malaysia"] = "මලයාසියාව" english2sinhala["Maldives"] = "මාලදිවයින" english2sinhala["Mongolia"] = "මොන්ගෝලියාව" english2sinhala["Myanmar"] = "මියන්මාරය" english2sinhala["Nepal"] = "නේපාලය" english2sinhala["North America"] = "උතුරු ඇමෙරිකාව" english2sinhala["North Korea"] = "උතුරු කොරියාව" english2sinhala["Oceania"] = "ඕෂනියාව" english2sinhala["Oman"] = "ඕමානය" english2sinhala["Pakistan"] = "පාකිස්ථානය" english2sinhala["Philippines"] = "පිලිපීනය" english2sinhala["Poland"] = "පෝලන්තය" english2sinhala["Portugal"] = "පෘතුගාලය" english2sinhala["Qatar"] = "කටාරය" english2sinhala["Romania"] = "රුමේනියාව" english2sinhala["Russia"] = "රුසියාව" english2sinhala["Saudi Arabia"] = "සෞදි අරාබිය" english2sinhala["Singapore"] = "සිංගප්පූරුව" english2sinhala["Spain"] = "ස්පාඤ්ඤය" english2sinhala["South America"] = "දකුණු ඇමෙරිකාව" english2sinhala["South Korea"] = "දකුණු කොරියාව" english2sinhala["Sri Lanka"] = "ශ්‍රී ලංකාව" english2sinhala["Sweden"] = "ස්වීඩනය" english2sinhala["Syria"] = "සිරියාව" english2sinhala["Tajikistan"] = "ටජිකිස්ථානය" english2sinhala["Thailand"] = "තායිලන්තය" english2sinhala["Turkey"] = "තුර්කිය" english2sinhala["Turkmenistan"] = "තුර්ක්මෙනිස්තානය" english2sinhala["Ukraine"] = "යුක්‍රේනය" english2sinhala["United Arab Emirates"] = "එක්සත් අරාබි එමීර් රාජ්‍යය" english2sinhala["Uzbekistan"] = "උස්බෙකිස්තානය" english2sinhala["Vietnam"] = "වියට්නාමය" english2sinhala["Yemen"] = "යේමනය" english2sinhala["Zambia"] = "සැම්බියාව" english2sinhala["Zimbabwe"] = "සිම්බාබ්වේ" english2sinhala["the Gambia"] = "ගැම්බියාව" english2sinhala["the United States"] = "යුනයිටඩ් ස්ටේට්ස්" english2sinhala["the world"] = "ලෝකය" local singular2plural = {} -- විශේෂ singular2plural["දත්ත"] = "දත්ත" -- singular2plural["හන්ජා"] = "හන්ජා" singular2plural["සැකිල්ල"] = "සැකිලි" singular2plural["මූලය"] = "මූල" -- singular2plural["non-lemma form"] = "ලෙමා-නොවන ස්වරූප" singular2plural["non-lemma"] = "ලෙමා-නොවන" -- singular2plural["ක්ලිප් කිරීම"] = "ක්ලිප් කිරීම්" singular2plural["පදාණුව"] = "පදාණු" singular2plural["උපුටා දැක්වීම"] = "උපුටා දැක්වීම්" singular2plural["භාවිත නිදර්ශනය"] = "භාවිත නිදර්ශන" singular2plural["අබුගිඩා"] = "අබුගිඩා" singular2plural["ජර්මානු පුරුෂ ලිංග, නාම පදය"] = "ජර්මානු පුරුෂ ලිංග, නාම පද" singular2plural["ස්පාඤ්ඤ පුරුෂ ලිංග, නාම පදය"] = "ස්පාඤ්ඤ පුරුෂ ලිංග, නාම පද" singular2plural["පුරුෂ ලිංග නාම පදය"] = "පුරුෂ ලිංග නාම පද" singular2plural["පුරුෂ ලිංග, නාම පදය"] = "පුරුෂ ලිංග, නාම පද" singular2plural["පුරුෂ ලිංග පුද්ගල නාමය"] = "පුරුෂ ලිංග පුද්ගල නාම" singular2plural["ස්ත්‍රී ලිංග, නාම පදය"] = "ස්ත්‍රී ලිංග, නාම පද" singular2plural["බහුවචනය"] = "බහුවචන" singular2plural["නාම පදය"] = "නාම පද" singular2plural["නිපාත පදය"] = "නිපාත පද" singular2plural["ක්‍රියා පදය"] = "ක්‍රියා පද" singular2plural["නාම විශේෂණ පදය"] = "නාම විශේෂණ පද" singular2plural["ක්‍රියා විශේෂණ පදය"] = "ක්‍රියා විශේෂණ පද" singular2plural["ප්‍රත්‍ය ස්වරූපය"] = "ප්‍රත්‍ය ස්වරූප" singular2plural["ප්‍රත්‍යය"] = "ප්‍රත්‍ය" singular2plural["අකුර"] = "අකුරු" singular2plural["පාඨය"] = "පාඨ" singular2plural["සර්වනාමය"] = "සර්වනාම" singular2plural["මහාද්වීපය"] = "මහාද්වීප" singular2plural["දූපත"] = "දූපත්" singular2plural["රට"] = "රටවල්" singular2plural["භාෂාව"] = "භාෂා" singular2plural["පෙළපත් නාමය"] = "පෙළපත් නාම" singular2plural["සංඥා නාම පදය"] = "සංඥා නාම පද" singular2plural["කෙටි යෙදුම"] = "කෙටි යෙදුම්" singular2plural["පදය"] = "පද" singular2plural["සමූහවාචී නාම පදය"] = "සමූහවාචී නාම පද" singular2plural["ගැණිය හැකි නාම පදය"] = "ගැණිය හැකි නාම පද" singular2plural["ගැණිය හැකි සංඥා නාම පදය"] = "ගැණිය හැකි සංඥා නාම පද" singular2plural["වරනැගීම"] = "වරනැගීම්" singular2plural["සංඛ්‍යාංක සංකේතය"] = "සංඛ්‍යාංක සංකේත" singular2plural["අක්ෂර පරිවර්තනය"] = "අක්ෂර පරිවර්තන" -- singular2plural["ප්‍රවේශ නාම-ජනනය"] = "ප්‍රවේශ නාම-ජනක" local english2adjective = {} english2adjective["archaic"] = "පෞරාණික" english2adjective["dated"] = "යල් පැන ගිය" english2adjective["List"] = "ලැයිස්තු" english2adjective["Entry name-generating"] = "ප්‍රවේශ නාම-ජනක" english2adjective["nominal"] = "නොමිනල්" english2adjective["Maintenance"] = "නඩත්තු කටයුතු" english2adjective["mixed"] = "මිශ්‍ර" english2adjective["Testcase"] = "පිරික්සුම් ආදර්ශක" english2adjective["Language and script"] = "භාෂා සහ අක්ෂරක්‍රම" english2adjective["Transliteration"] = "අක්ෂර පරිවර්තන" english2adjective["Transliteration testcases"] = "අක්ෂර පරිවර්තන පිරික්සුම් ආදර්ශක" english2adjective["Utility"] = "උපයෝගිතා" english2adjective["Headword-line"] = "යොමු වචන පේළි" english2adjective["Language-specific utility"] = "භාෂාවක් හා සබැඳි උපයෝගිතා" -- function p.hello( frame ) return "Hello, world!" end function p.sinhala_adjective( word ) -- require('Module:debug').track("sinhala.sinhala adjective.word = " .. word) local sinhala_word = p.sinhala( word ) -- require('Module:debug').track("sinhala.sinhala adjective.direct translation = " .. word) -- සටහන: නාම විශේෂණය සඳහා කළ යුතු විශේෂ යමක් පවතියි ද? local adjective = p.adjective( word ) if adjective ~= nil then -- require('Module:debug').track("sinhala.sinhala adjective.adjective = " .. adjective) sinhala_word = adjective end -- return sinhala_word end function p.search_adjective( word ) local sinhala_word = nil -- require('Module:debug').track("sinhala.search adjective.word = " .. word) local trans = english2adjective[word] if trans ~= nil then -- require('Module:debug').track("sinhala.adjective.trans = " .. trans) sinhala_word = trans end return sinhala_word end function p.adjective( word ) -- -- ගැටළු සඳහා පරීක්ෂාව -- for _,v in pairs(words_with_issues) do -- if v == word then -- error("පරීක්ෂාවට ලක්වෙන ස්ථානයකි.") -- -- do something -- break -- end -- end -- require('Module:debug').track("sinhala.adjective.word = " .. word) -- දත්ත ලැයිස්තුව මුලින්ම පරික්ෂාකර බලන්න local adjective = p.search_adjective( word ) if adjective ~= nil then -- require('Module:debug').track("sinhala.adjective.adjective = " .. adjective) return adjective end -- බොහෝවිට නාම විශේෂණ ස්වරූපය වන්නේ බහු වචනය නේ ද? local sinhala_plural = p.sinhala_plural( word ) if sinhala_plural ~= nil then -- require('Module:debug').track("sinhala.adjective.sinhala plural = " .. sinhala_plural) return sinhala_plural end local plural = p.plural( word ) if plural ~= nil then -- require('Module:debug').track("sinhala.adjective.plural = " .. plural) return plural end -- නොදන්නා වචන සඳහා ඉංග්‍රීසි වචනයම ලබා දෙන්න return word end function p.sinhala_plural( word ) local sinhala_word = p.sinhala( word ) return p.plural( sinhala_word ) end function p.sinhala( word ) -- -- ගැටළු සඳහා පරීක්ෂාව -- for _,v in pairs(words_with_issues) do -- if v == word then -- error("පරීක්ෂාවට ලක්වෙන ස්ථානයකි.") -- -- do something -- break -- end -- end local trans = english2sinhala[word] -- දත්ත ලැයිස්තුව මුලින්ම පරික්ෂාකර බලන්න if trans ~= nil then return trans end -- නොදන්නා වචන සඳහා ඉංග්‍රීසි වචනයම ලබා දෙන්න return word end function p.search_plural( word ) local result = nil if word ~= nil then -- require('Module:debug').track("sinhala.search plural.word = " .. word) local plural_word = singular2plural[word] -- දත්ත ලැයිස්තුව මුලින්ම පරික්ෂාකර බලන්න if plural_word ~= nil then -- require('Module:debug').track("sinhala.search plural.plural word = " .. plural_word) return plural_word end end return result end function p.plural( word ) if word ~= nil then local result = p.search_plural( word ) if result ~= nil then return result end -- ලතින් අකුරු නොවේ නම් බොහෝ විට සිංහල වචනයක් විය හැකිය. -- require('Module:debug').track("sinhala.plural.word = " .. word) if not string.find(word, "%a$") then return word end -- නොදන්නා වචන සඳහා ඉංග්‍රීසි ආකාරයේ වචනයම ලබා දෙන්න return m_strutils.pluralize(word) -- if word:find("x$") then -- return word .. "es" -- else -- return word .. "s" -- end end return word end local function pluralize(...) pluralize = require(en_utilities_module).pluralize return pluralize(...) end function p.sinhala_pluralize( word ) if word ~= nil then local result = p.search_plural( word ) if result ~= nil then return result end -- නොදන්නා වචන සඳහා ඉංග්‍රීසි ආකාරයේ වචනයම ලබා දෙන්න return pluralize( word ) end return word end return p 4um2j5die3drexs3hx3ni37x8xx6drc Module:category tree/grammatical classes 828 6067 234892 221250 2026-04-15T09:16:37Z en>Surjection 0 Changed protection settings for "[[Module:category tree/grammatical classes]]": Highly visible template/module ([Edit=Allow only autopatrollers] (indefinite) [Move=Allow only autopatrollers] (indefinite)) 234892 Scribunto text/plain local labels = {} local raw_categories = {} local handlers = {} ----------------------------------------------------------------------------- -- -- -- LABELS -- -- -- ----------------------------------------------------------------------------- labels["terms by grammatical category"] = { description = "{{{langname}}} terms categorized by their grammatical category.", umbrella_parents = "Fundamental", parents = {{name = "{{{langcat}}}", raw = true}}, } labels["indeclinable terms"] = { description = "Indeclinable {{{langname}}} terms categorized by their part of speech.", umbrella_parents = "Indeclinable terms subcategories by language", parents = {{name = "terms by grammatical category"}}, } labels["suppletive terms"] = { description = "Suppletive {{{langname}}} terms categorized by their part of speech.", umbrella_parents = "Suppletion subcategories by language", parents = {{name = "terms by grammatical category"}}, } ------- GENDER ------- for _, pos in ipairs { "nouns", "pronouns", "proper nouns", "suffixes" } do labels[pos .. " by gender"] = { description = "{{{langname}}} " .. pos .. " organized by the gender they belong to.", breadcrumb = "by gender", parents = {{name = pos, sort = "gender"}}, } labels[pos .. " with irregular gender"] = { description = "{{{langname}}} " .. pos .. " whose ending is not typical for " .. pos .. " of their gender.", breadcrumb = "with irregular gender", parents = {{name = "irregular " .. pos, sort = "irregular gender"}}, } labels[pos .. " with multiple genders"] = { description = "{{{langname}}} " .. pos .. " that belong to more than one gender.", breadcrumb = "with multiple genders", parents = {{name = pos .. " by gender", sort = "multiple genders"}}, } labels["common-gender " .. pos] = { description = "{{{langname}}} " .. pos .. " of {{glossary|common gender}}, i.e. belonging to a gender category that combines the function of {{glossary|masculine}} and {{glossary|feminine}} and is opposed to the {{glossary|neuter}} gender.", breadcrumb = "common-gender", parents = {pos .. " by gender"}, } labels["feminine " .. pos] = { description = "{{{langname}}} " .. pos .. " of {{glossary|feminine}} gender, i.e. belonging to a gender category that contains (among other things) female beings.", breadcrumb = "feminine", parents = {pos .. " by gender"}, } labels["masculine " .. pos] = { description = "{{{langname}}} " .. pos .. " of {{glossary|masculine}} gender, i.e. belonging to a gender category that contains (among other things) male beings.", breadcrumb = "masculine", parents = {pos .. " by gender"}, } labels["masculine and feminine " .. pos .. " by sense"] = { description = "{{{langname}}} " .. pos .. " that may be either {{glossary|masculine}} or {{glossary|feminine}} depending on whether they refer to male or female beings.", breadcrumb = "masculine and feminine by sense", parents = {pos .. " by gender"}, } labels["neuter " .. pos] = { description = "{{{langname}}} " .. pos .. " of {{glossary|neuter}} gender, i.e. belonging to a gender category that does not usually contain male or female beings.", breadcrumb = "neuter", parents = {pos .. " by gender"}, } labels["gender-neutral " .. pos] = { description = "{{{langname}}} " .. pos .. " that are applicable to all people, independent of gender.", breadcrumb = "gender-neutral", parents = {pos .. " by gender", "gender-neutral terms"}, } end for _, pos in ipairs({"adjectives", "determiners", "numerals", "participles", "suffixes"}) do labels["epicene " .. pos] = { description = "{{{langname}}} " .. pos .. " whose form is the same for both {{glossary|masculine}} and {{glossary|feminine}}, in languages whose " .. pos .. " normally distinguish gender.", breadcrumb = "epicene", parents = {pos .. " by inflection type"}, } end ------- NOUN CLASSES ------- labels["nouns by class"] = { description = "{{{langname}}} nouns organized by the class they belong to.", breadcrumb = "by class", parents = {{name = "nouns", sort = "class"}}, } labels["alienable nouns"] = { description = "{{{langname}}} nouns that are [[w:Inalienable possession|alienably possessed]].", breadcrumb = "alienable", parents = {"nouns"}, } labels["inalienable nouns"] = { description = "{{{langname}}} nouns that are [[w:Inalienable possession|inalienably possessed]].", breadcrumb = "inalienable", parents = {"nouns"}, } ------- ANIMACY ------- for _, pos in ipairs({"nouns", "suffixes", "verbs"}) do labels["animate " .. pos] = { description = "{{{langname}}} " .. pos .. " that refer to humans or animals.", breadcrumb = "animate", parents = {pos}, } labels["inanimate " .. pos] = { description = "{{{langname}}} " .. pos .. " that refer to inanimate objects (not humans or animals).", breadcrumb = "inanimate", parents = {pos}, } labels[pos .. " with multiple animacies"] = { description = "{{{langname}}} " .. pos .. " that belong to more than one animacy.", breadcrumb = "with multiple animacies", parents = {{name = pos, sort = "multiple animacies"}}, } end for _, pos in ipairs({"nouns", "suffixes"}) do -- This category should be used particularly in languages that have -- grammatical distinctions related to animals, such as Ukrainian. labels["animal " .. pos] = { description = "{{{langname}}} " .. pos .. " that refer to animals.", breadcrumb = "animal", parents = {"animate " .. pos}, } -- This category should be used particularly in languages that have -- grammatical distinctions related to men, such as Polish. labels["nonvirile " .. pos] = { description = "{{{langname}}} plural " .. pos .. " that refer to a group without male humans.", breadcrumb = "nonvirile", parents = {pos, "pluralia tantum"}, } labels["personal " .. pos] = { description = "{{{langname}}} " .. pos .. " that refer to humans.", breadcrumb = "personal", parents = {"animate " .. pos}, } -- This category should be used particularly in languages that have -- grammatical distinctions related to men, such as Polish. labels["virile " .. pos] = { description = "{{{langname}}} plural " .. pos .. " that refer to a group with at least one male human.", breadcrumb = "virile", parents = {pos, "pluralia tantum"}, } end ------- INFLECTED PARTS OF SPEECH ------- -- Add "POS by inflection type", "irregular POS" and "POS by tone" -- categories for (potentially) inflected parts of speech. local inflected_poses = { "adjectives", "adverbs", "determiners", "nouns", "numerals", "participles", "pronouns", "proper nouns", "suffixes", "verbs", } for _, pos in ipairs(inflected_poses) do labels[pos .. " by inflection type"] = { description = "{{{langname}}} " .. pos .. " organized by the type of inflection they follow.", breadcrumb = "by inflection type", parents = {{name = pos, sort = "inflection"}}, } labels["irregular " .. pos] = { description = "{{{langname}}} " .. pos .. " that follow non-standard patterns of inflection.", breadcrumb = "irregular", parents = {pos .. " by inflection type"}, } labels["defective " .. pos] = { description = "{{{langname}}} " .. pos .. " that lack one or more forms in their inflections.", breadcrumb = "defective", parents = {pos, "irregular " .. pos}, } labels["suppletive " .. pos] = { description = "{{{langname}}} " .. pos .. " that have inflected forms from different roots.", breadcrumb = "suppletive", umbrella_parents = "Suppletion subcategories by language", parents = { "irregular " .. pos, "suppletive terms", }, } if pos ~= "verbs" and pos ~= "adverbs" then labels["indeclinable " .. pos] = { description = "{{{langname}}} " .. pos .. " that do not display additional grammatical relations by means of declension.", breadcrumb = "indeclinable", umbrella_parents = "Indeclinable terms subcategories by language", parents = { pos .. " by inflection type", "indeclinable terms", }, } labels[pos .. " with multiple declensions"] = { description = "{{{langname}}} " .. pos .. " that follow more than one type of inflection.", breadcrumb = "with multiple declensions", parents = {{name = pos .. " by inflection type", sort = "multiple declensions"}}, } labels[pos .. " with multiple plurals"] = { description = "{{{langname}}} " .. pos .. " that have more than one possible plural (sometimes with distinct meanings).", breadcrumb = "with multiple plurals", parents = {{name = pos .. " by inflection type", sort = "multiple plurals"}}, } end labels[pos .. " by tone"] = { description = "{{{langname}}} " .. pos .. " organized by the tone they follow.", breadcrumb = "by tone", parents = {{name = pos .. " by inflection type", sort = "tone"}}, } labels[pos .. " by vowel harmony"] = { description = "{{{langname}}} " .. pos .. " organized by the vowel harmony they follow.", breadcrumb = "by vowel harmony", parents = {{name = pos .. " by inflection type", sort = "vowel harmony"}}, } end -- FIXME: Only used currently for Arabic; probably should be removed as a general category. labels["irregular elative adjectives"] = { description = "{{{langname}}} elative adjectives that follow non-standard patterns of inflection.", parents = {"adjectives by inflection type"}, } for _, pos in ipairs { "nouns", "proper nouns", "pronouns" } do labels[pos .. " with irregular plurals"] = { description = "{{{langname}}} " .. pos .. " whose plural is formed irregularly.", breadcrumb = "with irregular plurals", parents = {{name = "irregular " .. pos, sort = "irregular plurals"}}, } labels[pos .. " with unattested plurals"] = { description = "{{{langname}}} " .. pos .. " whose plural is unattested.", breadcrumb = "with unattested plurals", parents = {{name = pos, sort = "unattested plurals"}}, } labels["definite " .. pos] = { description = "{{{langname}}} " .. pos .. " that are inherently definite and have definite concord.", breadcrumb = "definite", parents = {pos .. " by inflection type"}, } end local labels2 = {} -- Add 'umbrella_parents' key if not already present. for key, data in pairs(labels) do labels2[key] = data if not data.umbrella_parents then data.umbrella_parents = "Terms by grammatical category subcategories by language" end end ----------------------------------------------------------------------------- -- -- -- RAW CATEGORIES -- -- -- ----------------------------------------------------------------------------- raw_categories["Terms by grammatical category subcategories by language"] = { description = "Umbrella categories covering topics related to grammatical categories, such as gender, animacy and noun and verb classes.", additional = "{{{umbrella_meta_msg}}}", parents = { "Umbrella metacategories", {name = "terms by grammatical category", is_label = true, sort = " "}, }, } raw_categories["Indeclinable terms subcategories by language"] = { description = "Umbrella categories covering indeclinable terms in specific part-of-speech categories.", additional = "{{{umbrella_meta_msg}}}", parents = { "Umbrella metacategories", "Terms by grammatical category subcategories by language", }, } raw_categories["Suppletion subcategories by language"] = { description = "Umbrella categories covering suppletive terms in specific part-of-speech categories.", additional = "{{{umbrella_meta_msg}}}", parents = { "Umbrella metacategories", "Terms by grammatical category subcategories by language", }, } ----------------------------------------------------------------------------- -- -- -- HANDLERS -- -- -- ----------------------------------------------------------------------------- table.insert(handlers, function(data) local class = data.label:match("^class (.+) nouns$") if class then local classnum, suffix = class:match("^(%d+)(.*)$") return { description = "{{{langname}}} nouns that belong to class " .. class .. ".", breadcrumb = {name = class, nocap = true}, umbrella = false, parents = {{ name = "nouns by class", sort = classnum and ("#%03d"):format(classnum) .. suffix or class, }}, } end end) table.insert(handlers, function(data) local pos, tone = data.label:match("^(.+) with tone ([^ ]+)$") if pos then return { description = "{{{langname}}} " .. pos .. " with tone " .. tone .. ".", breadcrumb = tone, -- FIXME, should there be an umbrella category e.g. 'Adjectives with tone H by language'? umbrella = false, parents = {{ name = pos .. " by tone", sort = "" .. tone:len() .. tone, }}, } end end) table.insert(handlers, function(data) local vh, pos = data.label:match("^(.+)-harmonic ([^ ]+)$") if pos then return { description = "{{{langname}}} " .. pos .. " with vowel harmony in " .. vh .. ".", breadcrumb = vh, umbrella = false, parents = {{ name = pos .. " by vowel harmony", sort = "" .. vh:len() .. vh, }}, } end end) table.insert(handlers, function(data) local pos, classifier = data.label:match("^(nouns) classified by (.+)$") if pos then local linktext if data.lang then -- Chinese classifiers may take the form TRAD/SIMP. This will cause problems if passed directly to [[Module:links]], -- but the module can accept links of the form TRAD//SIMP and display them correctly. if data.lang:getCode() == "zh" then classifier = classifier:gsub("/", "//") end linktext = require("Module:links").full_link({ term = classifier, lang = data.lang }, "term") else linktext = classifier end return { description = "{{{langname}}} " .. pos .. " using " .. linktext .. " as their classifier.", breadcrumb = classifier, umbrella = false, parents = {{ name = pos .. " by classifier", sort = (data.lang:makeSortKey(classifier)), }}, } end end) return {LABELS = labels2, RAW_CATEGORIES = raw_categories, HANDLERS = handlers} 0e6gyly5v26j3dy24of5trwu88u37j9 234893 234892 2026-05-25T13:06:23Z Lee 19 [[:en:Module:category_tree/grammatical_classes]] වෙතින් එක් සංශෝධනයක් 234892 Scribunto text/plain local labels = {} local raw_categories = {} local handlers = {} ----------------------------------------------------------------------------- -- -- -- LABELS -- -- -- ----------------------------------------------------------------------------- labels["terms by grammatical category"] = { description = "{{{langname}}} terms categorized by their grammatical category.", umbrella_parents = "Fundamental", parents = {{name = "{{{langcat}}}", raw = true}}, } labels["indeclinable terms"] = { description = "Indeclinable {{{langname}}} terms categorized by their part of speech.", umbrella_parents = "Indeclinable terms subcategories by language", parents = {{name = "terms by grammatical category"}}, } labels["suppletive terms"] = { description = "Suppletive {{{langname}}} terms categorized by their part of speech.", umbrella_parents = "Suppletion subcategories by language", parents = {{name = "terms by grammatical category"}}, } ------- GENDER ------- for _, pos in ipairs { "nouns", "pronouns", "proper nouns", "suffixes" } do labels[pos .. " by gender"] = { description = "{{{langname}}} " .. pos .. " organized by the gender they belong to.", breadcrumb = "by gender", parents = {{name = pos, sort = "gender"}}, } labels[pos .. " with irregular gender"] = { description = "{{{langname}}} " .. pos .. " whose ending is not typical for " .. pos .. " of their gender.", breadcrumb = "with irregular gender", parents = {{name = "irregular " .. pos, sort = "irregular gender"}}, } labels[pos .. " with multiple genders"] = { description = "{{{langname}}} " .. pos .. " that belong to more than one gender.", breadcrumb = "with multiple genders", parents = {{name = pos .. " by gender", sort = "multiple genders"}}, } labels["common-gender " .. pos] = { description = "{{{langname}}} " .. pos .. " of {{glossary|common gender}}, i.e. belonging to a gender category that combines the function of {{glossary|masculine}} and {{glossary|feminine}} and is opposed to the {{glossary|neuter}} gender.", breadcrumb = "common-gender", parents = {pos .. " by gender"}, } labels["feminine " .. pos] = { description = "{{{langname}}} " .. pos .. " of {{glossary|feminine}} gender, i.e. belonging to a gender category that contains (among other things) female beings.", breadcrumb = "feminine", parents = {pos .. " by gender"}, } labels["masculine " .. pos] = { description = "{{{langname}}} " .. pos .. " of {{glossary|masculine}} gender, i.e. belonging to a gender category that contains (among other things) male beings.", breadcrumb = "masculine", parents = {pos .. " by gender"}, } labels["masculine and feminine " .. pos .. " by sense"] = { description = "{{{langname}}} " .. pos .. " that may be either {{glossary|masculine}} or {{glossary|feminine}} depending on whether they refer to male or female beings.", breadcrumb = "masculine and feminine by sense", parents = {pos .. " by gender"}, } labels["neuter " .. pos] = { description = "{{{langname}}} " .. pos .. " of {{glossary|neuter}} gender, i.e. belonging to a gender category that does not usually contain male or female beings.", breadcrumb = "neuter", parents = {pos .. " by gender"}, } labels["gender-neutral " .. pos] = { description = "{{{langname}}} " .. pos .. " that are applicable to all people, independent of gender.", breadcrumb = "gender-neutral", parents = {pos .. " by gender", "gender-neutral terms"}, } end for _, pos in ipairs({"adjectives", "determiners", "numerals", "participles", "suffixes"}) do labels["epicene " .. pos] = { description = "{{{langname}}} " .. pos .. " whose form is the same for both {{glossary|masculine}} and {{glossary|feminine}}, in languages whose " .. pos .. " normally distinguish gender.", breadcrumb = "epicene", parents = {pos .. " by inflection type"}, } end ------- NOUN CLASSES ------- labels["nouns by class"] = { description = "{{{langname}}} nouns organized by the class they belong to.", breadcrumb = "by class", parents = {{name = "nouns", sort = "class"}}, } labels["alienable nouns"] = { description = "{{{langname}}} nouns that are [[w:Inalienable possession|alienably possessed]].", breadcrumb = "alienable", parents = {"nouns"}, } labels["inalienable nouns"] = { description = "{{{langname}}} nouns that are [[w:Inalienable possession|inalienably possessed]].", breadcrumb = "inalienable", parents = {"nouns"}, } ------- ANIMACY ------- for _, pos in ipairs({"nouns", "suffixes", "verbs"}) do labels["animate " .. pos] = { description = "{{{langname}}} " .. pos .. " that refer to humans or animals.", breadcrumb = "animate", parents = {pos}, } labels["inanimate " .. pos] = { description = "{{{langname}}} " .. pos .. " that refer to inanimate objects (not humans or animals).", breadcrumb = "inanimate", parents = {pos}, } labels[pos .. " with multiple animacies"] = { description = "{{{langname}}} " .. pos .. " that belong to more than one animacy.", breadcrumb = "with multiple animacies", parents = {{name = pos, sort = "multiple animacies"}}, } end for _, pos in ipairs({"nouns", "suffixes"}) do -- This category should be used particularly in languages that have -- grammatical distinctions related to animals, such as Ukrainian. labels["animal " .. pos] = { description = "{{{langname}}} " .. pos .. " that refer to animals.", breadcrumb = "animal", parents = {"animate " .. pos}, } -- This category should be used particularly in languages that have -- grammatical distinctions related to men, such as Polish. labels["nonvirile " .. pos] = { description = "{{{langname}}} plural " .. pos .. " that refer to a group without male humans.", breadcrumb = "nonvirile", parents = {pos, "pluralia tantum"}, } labels["personal " .. pos] = { description = "{{{langname}}} " .. pos .. " that refer to humans.", breadcrumb = "personal", parents = {"animate " .. pos}, } -- This category should be used particularly in languages that have -- grammatical distinctions related to men, such as Polish. labels["virile " .. pos] = { description = "{{{langname}}} plural " .. pos .. " that refer to a group with at least one male human.", breadcrumb = "virile", parents = {pos, "pluralia tantum"}, } end ------- INFLECTED PARTS OF SPEECH ------- -- Add "POS by inflection type", "irregular POS" and "POS by tone" -- categories for (potentially) inflected parts of speech. local inflected_poses = { "adjectives", "adverbs", "determiners", "nouns", "numerals", "participles", "pronouns", "proper nouns", "suffixes", "verbs", } for _, pos in ipairs(inflected_poses) do labels[pos .. " by inflection type"] = { description = "{{{langname}}} " .. pos .. " organized by the type of inflection they follow.", breadcrumb = "by inflection type", parents = {{name = pos, sort = "inflection"}}, } labels["irregular " .. pos] = { description = "{{{langname}}} " .. pos .. " that follow non-standard patterns of inflection.", breadcrumb = "irregular", parents = {pos .. " by inflection type"}, } labels["defective " .. pos] = { description = "{{{langname}}} " .. pos .. " that lack one or more forms in their inflections.", breadcrumb = "defective", parents = {pos, "irregular " .. pos}, } labels["suppletive " .. pos] = { description = "{{{langname}}} " .. pos .. " that have inflected forms from different roots.", breadcrumb = "suppletive", umbrella_parents = "Suppletion subcategories by language", parents = { "irregular " .. pos, "suppletive terms", }, } if pos ~= "verbs" and pos ~= "adverbs" then labels["indeclinable " .. pos] = { description = "{{{langname}}} " .. pos .. " that do not display additional grammatical relations by means of declension.", breadcrumb = "indeclinable", umbrella_parents = "Indeclinable terms subcategories by language", parents = { pos .. " by inflection type", "indeclinable terms", }, } labels[pos .. " with multiple declensions"] = { description = "{{{langname}}} " .. pos .. " that follow more than one type of inflection.", breadcrumb = "with multiple declensions", parents = {{name = pos .. " by inflection type", sort = "multiple declensions"}}, } labels[pos .. " with multiple plurals"] = { description = "{{{langname}}} " .. pos .. " that have more than one possible plural (sometimes with distinct meanings).", breadcrumb = "with multiple plurals", parents = {{name = pos .. " by inflection type", sort = "multiple plurals"}}, } end labels[pos .. " by tone"] = { description = "{{{langname}}} " .. pos .. " organized by the tone they follow.", breadcrumb = "by tone", parents = {{name = pos .. " by inflection type", sort = "tone"}}, } labels[pos .. " by vowel harmony"] = { description = "{{{langname}}} " .. pos .. " organized by the vowel harmony they follow.", breadcrumb = "by vowel harmony", parents = {{name = pos .. " by inflection type", sort = "vowel harmony"}}, } end -- FIXME: Only used currently for Arabic; probably should be removed as a general category. labels["irregular elative adjectives"] = { description = "{{{langname}}} elative adjectives that follow non-standard patterns of inflection.", parents = {"adjectives by inflection type"}, } for _, pos in ipairs { "nouns", "proper nouns", "pronouns" } do labels[pos .. " with irregular plurals"] = { description = "{{{langname}}} " .. pos .. " whose plural is formed irregularly.", breadcrumb = "with irregular plurals", parents = {{name = "irregular " .. pos, sort = "irregular plurals"}}, } labels[pos .. " with unattested plurals"] = { description = "{{{langname}}} " .. pos .. " whose plural is unattested.", breadcrumb = "with unattested plurals", parents = {{name = pos, sort = "unattested plurals"}}, } labels["definite " .. pos] = { description = "{{{langname}}} " .. pos .. " that are inherently definite and have definite concord.", breadcrumb = "definite", parents = {pos .. " by inflection type"}, } end local labels2 = {} -- Add 'umbrella_parents' key if not already present. for key, data in pairs(labels) do labels2[key] = data if not data.umbrella_parents then data.umbrella_parents = "Terms by grammatical category subcategories by language" end end ----------------------------------------------------------------------------- -- -- -- RAW CATEGORIES -- -- -- ----------------------------------------------------------------------------- raw_categories["Terms by grammatical category subcategories by language"] = { description = "Umbrella categories covering topics related to grammatical categories, such as gender, animacy and noun and verb classes.", additional = "{{{umbrella_meta_msg}}}", parents = { "Umbrella metacategories", {name = "terms by grammatical category", is_label = true, sort = " "}, }, } raw_categories["Indeclinable terms subcategories by language"] = { description = "Umbrella categories covering indeclinable terms in specific part-of-speech categories.", additional = "{{{umbrella_meta_msg}}}", parents = { "Umbrella metacategories", "Terms by grammatical category subcategories by language", }, } raw_categories["Suppletion subcategories by language"] = { description = "Umbrella categories covering suppletive terms in specific part-of-speech categories.", additional = "{{{umbrella_meta_msg}}}", parents = { "Umbrella metacategories", "Terms by grammatical category subcategories by language", }, } ----------------------------------------------------------------------------- -- -- -- HANDLERS -- -- -- ----------------------------------------------------------------------------- table.insert(handlers, function(data) local class = data.label:match("^class (.+) nouns$") if class then local classnum, suffix = class:match("^(%d+)(.*)$") return { description = "{{{langname}}} nouns that belong to class " .. class .. ".", breadcrumb = {name = class, nocap = true}, umbrella = false, parents = {{ name = "nouns by class", sort = classnum and ("#%03d"):format(classnum) .. suffix or class, }}, } end end) table.insert(handlers, function(data) local pos, tone = data.label:match("^(.+) with tone ([^ ]+)$") if pos then return { description = "{{{langname}}} " .. pos .. " with tone " .. tone .. ".", breadcrumb = tone, -- FIXME, should there be an umbrella category e.g. 'Adjectives with tone H by language'? umbrella = false, parents = {{ name = pos .. " by tone", sort = "" .. tone:len() .. tone, }}, } end end) table.insert(handlers, function(data) local vh, pos = data.label:match("^(.+)-harmonic ([^ ]+)$") if pos then return { description = "{{{langname}}} " .. pos .. " with vowel harmony in " .. vh .. ".", breadcrumb = vh, umbrella = false, parents = {{ name = pos .. " by vowel harmony", sort = "" .. vh:len() .. vh, }}, } end end) table.insert(handlers, function(data) local pos, classifier = data.label:match("^(nouns) classified by (.+)$") if pos then local linktext if data.lang then -- Chinese classifiers may take the form TRAD/SIMP. This will cause problems if passed directly to [[Module:links]], -- but the module can accept links of the form TRAD//SIMP and display them correctly. if data.lang:getCode() == "zh" then classifier = classifier:gsub("/", "//") end linktext = require("Module:links").full_link({ term = classifier, lang = data.lang }, "term") else linktext = classifier end return { description = "{{{langname}}} " .. pos .. " using " .. linktext .. " as their classifier.", breadcrumb = classifier, umbrella = false, parents = {{ name = pos .. " by classifier", sort = (data.lang:makeSortKey(classifier)), }}, } end end) return {LABELS = labels2, RAW_CATEGORIES = raw_categories, HANDLERS = handlers} 0e6gyly5v26j3dy24of5trwu88u37j9 234894 234893 2026-05-25T13:07:26Z Lee 19 පැරණි සංස්කරණයකින් ගත් කොටස්... 234894 Scribunto text/plain local m_sinhala = require("Module:sinhala") local labels = {} local raw_categories = {} local handlers = {} ----------------------------------------------------------------------------- -- -- -- LABELS -- -- -- ----------------------------------------------------------------------------- labels["terms by grammatical category"] = { description = "{{{langname}}} terms categorized by their grammatical category.", umbrella_parents = "Fundamental", parents = {{name = "{{{langcat}}}", raw = true}}, } labels["indeclinable terms"] = { description = "Indeclinable {{{langname}}} terms categorized by their part of speech.", umbrella_parents = "Indeclinable terms subcategories by language", parents = {{name = "terms by grammatical category"}}, } labels["suppletive terms"] = { description = "Suppletive {{{langname}}} terms categorized by their part of speech.", umbrella_parents = "Suppletion subcategories by language", parents = {{name = "terms by grammatical category"}}, } ------- GENDER ------- for _, pos in ipairs { "nouns", "pronouns", "proper nouns", "suffixes" } do labels[pos .. " by gender"] = { description = "{{{langname}}} " .. pos .. " organized by the gender they belong to.", breadcrumb = "by gender", parents = {{name = pos, sort = "gender"}}, } labels[pos .. " with irregular gender"] = { description = "{{{langname}}} " .. pos .. " whose ending is not typical for " .. pos .. " of their gender.", breadcrumb = "with irregular gender", parents = {{name = "irregular " .. pos, sort = "irregular gender"}}, } labels[pos .. " with multiple genders"] = { description = "{{{langname}}} " .. pos .. " that belong to more than one gender.", breadcrumb = "with multiple genders", parents = {{name = pos .. " by gender", sort = "multiple genders"}}, } labels["common-gender " .. pos] = { description = "{{{langname}}} " .. pos .. " of {{glossary|common gender}}, i.e. belonging to a gender category that combines the function of {{glossary|masculine}} and {{glossary|feminine}} and is opposed to the {{glossary|neuter}} gender.", breadcrumb = "common-gender", parents = {pos .. " by gender"}, } labels["feminine " .. pos] = { description = "{{{langname}}} " .. pos .. " of {{glossary|feminine}} gender, i.e. belonging to a gender category that contains (among other things) female beings.", breadcrumb = "feminine", parents = {pos .. " by gender"}, } labels["masculine " .. pos] = { description = "{{{langname}}} " .. pos .. " of {{glossary|masculine}} gender, i.e. belonging to a gender category that contains (among other things) male beings.", breadcrumb = "masculine", parents = {pos .. " by gender"}, } labels["masculine and feminine " .. pos .. " by sense"] = { description = "{{{langname}}} " .. pos .. " that may be either {{glossary|masculine}} or {{glossary|feminine}} depending on whether they refer to male or female beings.", breadcrumb = "masculine and feminine by sense", parents = {pos .. " by gender"}, } labels["neuter " .. pos] = { description = "{{{langname}}} " .. pos .. " of {{glossary|neuter}} gender, i.e. belonging to a gender category that does not usually contain male or female beings.", breadcrumb = "neuter", parents = {pos .. " by gender"}, } labels["gender-neutral " .. pos] = { description = "{{{langname}}} " .. pos .. " that are applicable to all people, independent of gender.", breadcrumb = "gender-neutral", parents = {pos .. " by gender", "gender-neutral terms"}, } end for _, pos in ipairs({"adjectives", "determiners", "numerals", "participles", "suffixes"}) do labels["epicene " .. pos] = { description = "{{{langname}}} " .. pos .. " whose form is the same for both {{glossary|masculine}} and {{glossary|feminine}}, in languages whose " .. pos .. " normally distinguish gender.", breadcrumb = "epicene", parents = {pos .. " by inflection type"}, } end ------- NOUN CLASSES ------- labels["nouns by class"] = { description = "{{{langname}}} nouns organized by the class they belong to.", breadcrumb = "by class", parents = {{name = "නාම පද", sort = "class"}}, } labels["alienable nouns"] = { description = "{{{langname}}} nouns that are [[w:Inalienable possession|alienably possessed]].", breadcrumb = "alienable", parents = {"නාම පද"}, } labels["inalienable nouns"] = { description = "{{{langname}}} nouns that are [[w:Inalienable possession|inalienably possessed]].", breadcrumb = "inalienable", parents = {"නාම පද"}, } ------- ANIMACY ------- for _, pos in ipairs({"නාම පද", "ප්‍රත්‍ය", "ක්‍රියා පද"}) do labels["ප්‍රාණවාචී " .. pos] = { description = "{{{langname}}} " .. pos .. " that refer to humans or animals.", breadcrumb = "animate", parents = {pos}, } labels["අප්‍රාණවාචී " .. pos] = { description = "{{{langname}}} " .. pos .. " that refer to inanimate objects (not humans or animals).", breadcrumb = "inanimate", parents = {pos}, } labels[pos .. " with multiple animacies"] = { description = "{{{langname}}} " .. pos .. " that belong to more than one animacy.", breadcrumb = "with multiple animacies", parents = {{name = pos, sort = "multiple animacies"}}, } end for _, pos in ipairs({"නාම පද", "ප්‍රත්‍ය"}) do -- This category should be used particularly in languages that have -- grammatical distinctions related to animals, such as Ukrainian. labels["animal " .. pos] = { description = "{{{langname}}} " .. pos .. " that refer to animals.", breadcrumb = "animal", parents = {"ප්‍රාණවාචී " .. pos}, } -- This category should be used particularly in languages that have -- grammatical distinctions related to men, such as Polish. labels["nonvirile " .. pos] = { description = "{{{langname}}} plural " .. pos .. " that refer to a group without male humans.", breadcrumb = "nonvirile", parents = {pos, "pluralia tantum"}, } labels["personal " .. pos] = { description = "{{{langname}}} " .. pos .. " that refer to humans.", breadcrumb = "personal", parents = {"ප්‍රාණවාචී " .. pos}, } -- This category should be used particularly in languages that have -- grammatical distinctions related to men, such as Polish. labels["virile " .. pos] = { description = "{{{langname}}} plural " .. pos .. " that refer to a group with at least one male human.", breadcrumb = "virile", parents = {pos, "pluralia tantum"}, } end ------- INFLECTED PARTS OF SPEECH ------- -- Add "POS by inflection type", "irregular POS" and "POS by tone" -- categories for (potentially) inflected parts of speech. local inflected_poses = { "adjectives", "adverbs", "determiners", "nouns", "numerals", "participles", "pronouns", "proper nouns", "suffixes", "verbs", } for _, pos in ipairs(inflected_poses) do labels[m_sinhala.sinhala(pos) .. ", වරනැගීම් වර්ගය අනුව"] = { description = "{{{langname}}} " .. m_sinhala.sinhala(pos) .. " organized by the type of inflection they follow.", breadcrumb = "වරනැගීම් වර්ගය අනුව", parents = {{name = m_sinhala.sinhala(pos), sort = "inflection"}}, } labels["irregular " .. m_sinhala.sinhala(pos)] = { description = "{{{langname}}} " .. pos .. " that follow non-standard patterns of inflection.", breadcrumb = "irregular", parents = {m_sinhala.sinhala(pos) .. ", වරනැගීම් වර්ගය අනුව"}, } labels["defective " .. pos] = { description = "{{{langname}}} " .. pos .. " that lack one or more forms in their inflections.", breadcrumb = "defective", parents = {pos, "irregular " .. pos}, } labels["suppletive " .. pos] = { description = "{{{langname}}} " .. pos .. " that have inflected forms from different roots.", breadcrumb = "suppletive", umbrella_parents = "Suppletion subcategories by language", parents = { "irregular " .. pos, "suppletive terms", }, } if pos ~= "verbs" and pos ~= "adverbs" then labels["indeclinable " .. pos] = { description = "{{{langname}}} " .. pos .. " that do not display additional grammatical relations by means of declension.", breadcrumb = "indeclinable", umbrella_parents = "Indeclinable terms subcategories by language", parents = { pos .. " by inflection type", "indeclinable terms", }, } labels[pos .. " with multiple declensions"] = { description = "{{{langname}}} " .. pos .. " that follow more than one type of inflection.", breadcrumb = "with multiple declensions", parents = {{name = pos .. " by inflection type", sort = "multiple declensions"}}, } labels[pos .. " with multiple plurals"] = { description = "{{{langname}}} " .. pos .. " that have more than one possible plural (sometimes with distinct meanings).", breadcrumb = "with multiple plurals", parents = {{name = pos .. " by inflection type", sort = "multiple plurals"}}, } end labels[pos .. " by tone"] = { description = "{{{langname}}} " .. pos .. " organized by the tone they follow.", breadcrumb = "by tone", parents = {{name = pos .. " by inflection type", sort = "tone"}}, } labels[pos .. " by vowel harmony"] = { description = "{{{langname}}} " .. pos .. " organized by the vowel harmony they follow.", breadcrumb = "by vowel harmony", parents = {{name = pos .. " by inflection type", sort = "vowel harmony"}}, } end -- FIXME: Only used currently for Arabic; probably should be removed as a general category. labels["irregular elative adjectives"] = { description = "{{{langname}}} elative adjectives that follow non-standard patterns of inflection.", parents = {"adjectives by inflection type"}, } for _, pos in ipairs { "nouns", "proper nouns", "pronouns" } do labels[pos .. " with irregular plurals"] = { description = "{{{langname}}} " .. pos .. " whose plural is formed irregularly.", breadcrumb = "with irregular plurals", parents = {{name = "irregular " .. pos, sort = "irregular plurals"}}, } labels[pos .. " with unattested plurals"] = { description = "{{{langname}}} " .. pos .. " whose plural is unattested.", breadcrumb = "with unattested plurals", parents = {{name = pos, sort = "unattested plurals"}}, } labels["definite " .. pos] = { description = "{{{langname}}} " .. pos .. " that are inherently definite and have definite concord.", breadcrumb = "definite", parents = {pos .. ", වරනැගීම් වර්ගය අනුව"}, } end local labels2 = {} -- Add 'umbrella_parents' key if not already present. for key, data in pairs(labels) do labels2[key] = data if not data.umbrella_parents then data.umbrella_parents = "Terms by grammatical category subcategories by language" end end ----------------------------------------------------------------------------- -- -- -- RAW CATEGORIES -- -- -- ----------------------------------------------------------------------------- raw_categories["Terms by grammatical category subcategories by language"] = { description = "Umbrella categories covering topics related to grammatical categories, such as gender, animacy and noun and verb classes.", additional = "{{{umbrella_meta_msg}}}", parents = { "ඡත්‍ර මෙටා ප්‍රවර්ග", {name = "terms by grammatical category", is_label = true, sort = " "}, }, } raw_categories["Indeclinable terms subcategories by language"] = { description = "Umbrella categories covering indeclinable terms in specific part-of-speech categories.", additional = "{{{umbrella_meta_msg}}}", parents = { "Umbrella metacategories", "Terms by grammatical category subcategories by language", }, } raw_categories["Suppletion subcategories by language"] = { description = "Umbrella categories covering suppletive terms in specific part-of-speech categories.", additional = "{{{umbrella_meta_msg}}}", parents = { "ඡත්‍ර මෙටා ප්‍රවර්ග", "Terms by grammatical category subcategories by language", }, } ----------------------------------------------------------------------------- -- -- -- HANDLERS -- -- -- ----------------------------------------------------------------------------- table.insert(handlers, function(data) local class = data.label:match("^class (.+) nouns$") if class then local classnum, suffix = class:match("^(%d+)(.*)$") return { description = "{{{langname}}} nouns that belong to class " .. class .. ".", breadcrumb = {name = class, nocap = true}, umbrella = false, parents = {{ name = "nouns by class", sort = classnum and ("#%03d"):format(classnum) .. suffix or class, }}, } end end) table.insert(handlers, function(data) local pos, tone = data.label:match("^(.+) with tone ([^ ]+)$") if pos then return { description = "{{{langname}}} " .. pos .. " with tone " .. tone .. ".", breadcrumb = tone, -- FIXME, should there be an umbrella category e.g. 'Adjectives with tone H by language'? umbrella = false, parents = {{ name = pos .. " by tone", sort = "" .. tone:len() .. tone, }}, } end end) table.insert(handlers, function(data) local vh, pos = data.label:match("^(.+)-harmonic ([^ ]+)$") if pos then return { description = "{{{langname}}} " .. pos .. " with vowel harmony in " .. vh .. ".", breadcrumb = vh, umbrella = false, parents = {{ name = pos .. " by vowel harmony", sort = "" .. vh:len() .. vh, }}, } end end) table.insert(handlers, function(data) local pos, classifier = data.label:match("^(nouns) classified by (.+)$") if pos then local linktext if data.lang then -- Chinese classifiers may take the form TRAD/SIMP. This will cause problems if passed directly to [[Module:links]], -- but the module can accept links of the form TRAD//SIMP and display them correctly. if data.lang:getCode() == "zh" then classifier = classifier:gsub("/", "//") end linktext = require("Module:links").full_link({ term = classifier, lang = data.lang }, "term") else linktext = classifier end return { description = "{{{langname}}} " .. pos .. " using " .. linktext .. " as their classifier.", breadcrumb = classifier, umbrella = false, parents = {{ name = pos .. " by classifier", sort = (data.lang:makeSortKey(classifier)), }}, } end end) return {LABELS = labels2, RAW_CATEGORIES = raw_categories, HANDLERS = handlers} jmlq6fh1yxw13o87gns1o8b375mobcp 234895 234894 2026-05-25T13:21:01Z Lee 19 පැරණි සංස්කරණයකින් ගත් කොටස්... 234895 Scribunto text/plain local m_sinhala = require("Module:sinhala") local labels = {} local raw_categories = {} local handlers = {} ----------------------------------------------------------------------------- -- -- -- LABELS -- -- -- ----------------------------------------------------------------------------- labels["terms by grammatical category"] = { description = "{{{langname}}} terms categorized by their grammatical category.", umbrella_parents = "මූලධර්ම", parents = {{name = "{{{langcat}}}", raw = true}}, } labels["indeclinable terms"] = { description = "Indeclinable {{{langname}}} terms categorized by their part of speech.", umbrella_parents = "Indeclinable terms subcategories by language", parents = {{name = "terms by grammatical category"}}, } labels["suppletive terms"] = { description = "Suppletive {{{langname}}} terms categorized by their part of speech.", umbrella_parents = "Suppletion subcategories by language", parents = {{name = "terms by grammatical category"}}, } ------- GENDER ------- for _, pos in ipairs { "nouns", "pronouns", "proper nouns", "ප්‍රත්‍ය" } do labels[m_sinhala.sinhala(pos) .. ", ලිංග භේදය අනුව"] = { description = "ලිංග භේදය අනුව පෙළ ගසා ඇති {{{langname}}} " .. pos .. " මෙහි දැක්වෙයි.", breadcrumb = "ලිංග භේදය අනුව", parents = {{name = m_sinhala.sinhala(pos), sort = "gender"}}, } labels[m_sinhala.sinhala(pos) .. " with irregular gender"] = { description = "{{{langname}}} " .. pos .. " whose ending is not typical for " .. pos .. " of their gender.", breadcrumb = "with irregular gender", parents = {{name = "irregular " .. m_sinhala.sinhala(pos), sort = "irregular gender"}}, } labels[m_sinhala.sinhala(pos) .. " with multiple genders"] = { description = "{{{langname}}} " .. pos .. " that belong to more than one gender.", breadcrumb = "with multiple genders", parents = {{name = m_sinhala.sinhala(pos) .. ", ලිංග භේදය අනුව", sort = "multiple genders"}}, } labels["common-gender " .. m_sinhala.sinhala(pos)] = { description = "{{{langname}}} " .. pos .. " of {{glossary|common gender}}, i.e. belonging to a gender category that combines the function of {{glossary|masculine}} and {{glossary|feminine}} and is opposed to the {{glossary|neuter}} gender.", breadcrumb = "common-gender", parents = {m_sinhala.sinhala(pos) .. ", ලිංග භේදය අනුව"}, } labels["ස්ත්‍රී ලිංග " .. m_sinhala.sinhala(pos)] = { description = "{{{langname}}} " .. pos .. " of {{glossary|feminine}} gender, i.e. belonging to a gender category that contains (among other things) female beings.", breadcrumb = "ස්ත්‍රී ලිංග", parents = {m_sinhala.sinhala(pos) .. ", ලිංග භේදය අනුව"}, } labels["පුරුෂ ලිංග " .. m_sinhala.sinhala(pos)] = { description = "{{{langname}}} " .. pos .. " of {{glossary|masculine}} gender, i.e. belonging to a gender category that contains (among other things) male beings.", breadcrumb = "පුරුෂ ලිංග", parents = {m_sinhala.sinhala(pos) .. ", ලිංග භේදය අනුව"}, } labels["පුරුෂ ලිංග සහ ස්ත්‍රී ලිංග " .. m_sinhala.sinhala(pos) .. " by sense"] = { description = "{{{langname}}} " .. pos .. " that may be either {{glossary|masculine}} or {{glossary|feminine}} depending on whether they refer to male or female beings.", breadcrumb = "පුරුෂ ලිංග සහ ස්ත්‍රී ලිංග by sense", parents = {m_sinhala.sinhala(pos) .. ", ලිංග භේදය අනුව"}, } labels["නපුංසක ලිංග " .. m_sinhala.sinhala(pos)] = { description = "{{{langname}}} " .. pos .. " of {{glossary|neuter}} gender, i.e. belonging to a gender category that does not usually contain male or female beings.", breadcrumb = "නපුංසක ලිංග", parents = {m_sinhala.sinhala(pos) .. ", ලිංග භේදය අනුව"}, } labels["gender-neutral " .. m_sinhala.sinhala(pos)] = { description = "{{{langname}}} " .. pos .. " that are applicable to all people, independent of gender.", breadcrumb = "gender-neutral", parents = {m_sinhala.sinhala(pos) .. ", ලිංග භේදය අනුව", "gender-neutral terms"}, } end for _, pos in ipairs({"adjectives", "determiners", "numerals", "participles", "ප්‍රත්‍ය"}) do labels["epicene " .. pos] = { description = "{{{langname}}} " .. pos .. " whose form is the same for both {{glossary|masculine}} and {{glossary|feminine}}, in languages whose " .. pos .. " normally distinguish gender.", breadcrumb = "epicene", parents = {pos .. ", වරනැගීම් වර්ගය අනුව"}, } end ------- NOUN CLASSES ------- labels["nouns by class"] = { description = "{{{langname}}} nouns organized by the class they belong to.", breadcrumb = "by class", parents = {{name = "නාම පද", sort = "class"}}, } labels["alienable nouns"] = { description = "{{{langname}}} nouns that are [[w:Inalienable possession|alienably possessed]].", breadcrumb = "alienable", parents = {"නාම පද"}, } labels["inalienable nouns"] = { description = "{{{langname}}} nouns that are [[w:Inalienable possession|inalienably possessed]].", breadcrumb = "inalienable", parents = {"නාම පද"}, } ------- ANIMACY ------- for _, pos in ipairs({"නාම පද", "ප්‍රත්‍ය", "ක්‍රියා පද"}) do labels["ප්‍රාණවාචී " .. pos] = { description = "{{{langname}}} " .. pos .. " that refer to humans or animals.", breadcrumb = "animate", parents = {pos}, } labels["අප්‍රාණවාචී " .. pos] = { description = "{{{langname}}} " .. pos .. " that refer to inanimate objects (not humans or animals).", breadcrumb = "inanimate", parents = {pos}, } labels[pos .. " with multiple animacies"] = { description = "{{{langname}}} " .. pos .. " that belong to more than one animacy.", breadcrumb = "with multiple animacies", parents = {{name = pos, sort = "multiple animacies"}}, } end for _, pos in ipairs({"නාම පද", "ප්‍රත්‍ය"}) do -- This category should be used particularly in languages that have -- grammatical distinctions related to animals, such as Ukrainian. labels["animal " .. pos] = { description = "{{{langname}}} " .. pos .. " that refer to animals.", breadcrumb = "animal", parents = {"ප්‍රාණවාචී " .. pos}, } -- This category should be used particularly in languages that have -- grammatical distinctions related to men, such as Polish. labels["nonvirile " .. pos] = { description = "{{{langname}}} plural " .. pos .. " that refer to a group without male humans.", breadcrumb = "nonvirile", parents = {pos, "pluralia tantum"}, } labels["personal " .. pos] = { description = "{{{langname}}} " .. pos .. " that refer to humans.", breadcrumb = "personal", parents = {"ප්‍රාණවාචී " .. pos}, } -- This category should be used particularly in languages that have -- grammatical distinctions related to men, such as Polish. labels["virile " .. pos] = { description = "{{{langname}}} plural " .. pos .. " that refer to a group with at least one male human.", breadcrumb = "virile", parents = {pos, "pluralia tantum"}, } end ------- INFLECTED PARTS OF SPEECH ------- -- Add "POS by inflection type", "irregular POS" and "POS by tone" -- categories for (potentially) inflected parts of speech. local inflected_poses = { "adjectives", "adverbs", "determiners", "nouns", "numerals", "participles", "pronouns", "proper nouns", "suffixes", "verbs", } for _, pos in ipairs(inflected_poses) do labels[m_sinhala.sinhala(pos) .. ", වරනැගීම් වර්ගය අනුව"] = { description = "{{{langname}}} " .. m_sinhala.sinhala(pos) .. " organized by the type of inflection they follow.", breadcrumb = "වරනැගීම් වර්ගය අනුව", parents = {{name = m_sinhala.sinhala(pos), sort = "inflection"}}, } labels["irregular " .. m_sinhala.sinhala(pos)] = { description = "{{{langname}}} " .. pos .. " that follow non-standard patterns of inflection.", breadcrumb = "irregular", parents = {m_sinhala.sinhala(pos) .. ", වරනැගීම් වර්ගය අනුව"}, } labels["defective " .. pos] = { description = "{{{langname}}} " .. pos .. " that lack one or more forms in their inflections.", breadcrumb = "defective", parents = {pos, "irregular " .. pos}, } labels["suppletive " .. pos] = { description = "{{{langname}}} " .. pos .. " that have inflected forms from different roots.", breadcrumb = "suppletive", umbrella_parents = "Suppletion subcategories by language", parents = { "irregular " .. pos, "suppletive terms", }, } if pos ~= "ක්‍රියා පද" and pos ~= "adverbs" then labels["අව්‍යය " .. m_sinhala.sinhala(pos)] = { description = "{{{langname}}} " .. pos .. " that do not display additional grammatical relations by means of declension.", breadcrumb = "අව්‍යය", umbrella_parents = "Indeclinable terms subcategories by language", parents = { m_sinhala.sinhala(pos) .. ", වරනැගීම් වර්ගය අනුව", "indeclinable terms", }, } labels[pos .. " with multiple declensions"] = { description = "{{{langname}}} " .. pos .. " that follow more than one type of inflection.", breadcrumb = "with multiple declensions", parents = {{name = pos .. ", වරනැගීම් වර්ගය අනුව", sort = "multiple declensions"}}, } labels[pos .. " with multiple plurals"] = { description = "{{{langname}}} " .. pos .. " that have more than one possible plural (sometimes with distinct meanings).", breadcrumb = "with multiple plurals", parents = {{name = pos .. ", වරනැගීම් වර්ගය අනුව", sort = "multiple plurals"}}, } end labels[pos .. " by tone"] = { description = "{{{langname}}} " .. pos .. " organized by the tone they follow.", breadcrumb = "by tone", parents = {{name = pos .. ", වරනැගීම් වර්ගය අනුව", sort = "tone"}}, } labels[pos .. " by vowel harmony"] = { description = "{{{langname}}} " .. pos .. " organized by the vowel harmony they follow.", breadcrumb = "by vowel harmony", parents = {{name = pos .. ", වරනැගීම් වර්ගය අනුව", sort = "vowel harmony"}}, } end -- FIXME: Only used currently for Arabic; probably should be removed as a general category. labels["irregular elative adjectives"] = { description = "{{{langname}}} elative adjectives that follow non-standard patterns of inflection.", parents = {"adjectives by inflection type"}, } for _, pos in ipairs { "නාම පද", "proper nouns", "pronouns" } do labels[pos .. " with irregular plurals"] = { description = "{{{langname}}} " .. pos .. " whose plural is formed irregularly.", breadcrumb = "with irregular plurals", parents = {{name = "irregular " .. pos, sort = "irregular plurals"}}, } labels[pos .. " with unattested plurals"] = { description = "{{{langname}}} " .. pos .. " whose plural is unattested.", breadcrumb = "with unattested plurals", parents = {{name = pos, sort = "unattested plurals"}}, } labels["definite " .. pos] = { description = "{{{langname}}} " .. pos .. " that are inherently definite and have definite concord.", breadcrumb = "definite", parents = {pos .. ", වරනැගීම් වර්ගය අනුව"}, } end local labels2 = {} -- Add 'umbrella_parents' key if not already present. for key, data in pairs(labels) do labels2[key] = data if not data.umbrella_parents then data.umbrella_parents = "Terms by grammatical category subcategories by language" end end ----------------------------------------------------------------------------- -- -- -- RAW CATEGORIES -- -- -- ----------------------------------------------------------------------------- raw_categories["Terms by grammatical category subcategories by language"] = { description = "Umbrella categories covering topics related to grammatical categories, such as gender, animacy and noun and verb classes.", additional = "{{{umbrella_meta_msg}}}", parents = { "ඡත්‍ර මෙටා ප්‍රවර්ග", {name = "terms by grammatical category", is_label = true, sort = " "}, }, } raw_categories["Indeclinable terms subcategories by language"] = { description = "Umbrella categories covering indeclinable terms in specific part-of-speech categories.", additional = "{{{umbrella_meta_msg}}}", parents = { "ඡත්‍ර මෙටා ප්‍රවර්ග", "Terms by grammatical category subcategories by language", }, } raw_categories["Suppletion subcategories by language"] = { description = "Umbrella categories covering suppletive terms in specific part-of-speech categories.", additional = "{{{umbrella_meta_msg}}}", parents = { "ඡත්‍ර මෙටා ප්‍රවර්ග", "Terms by grammatical category subcategories by language", }, } ----------------------------------------------------------------------------- -- -- -- HANDLERS -- -- -- ----------------------------------------------------------------------------- table.insert(handlers, function(data) local class = data.label:match("^class (.+) nouns$") if class then local classnum, suffix = class:match("^(%d+)(.*)$") return { description = "{{{langname}}} nouns that belong to class " .. class .. ".", breadcrumb = {name = class, nocap = true}, umbrella = false, parents = {{ name = "nouns by class", sort = classnum and ("#%03d"):format(classnum) .. suffix or class, }}, } end end) table.insert(handlers, function(data) local pos, tone = data.label:match("^(.+) with tone ([^ ]+)$") if pos then return { description = "{{{langname}}} " .. pos .. " with tone " .. tone .. ".", breadcrumb = tone, -- FIXME, should there be an umbrella category e.g. 'Adjectives with tone H by language'? umbrella = false, parents = {{ name = pos .. " by tone", sort = "" .. tone:len() .. tone, }}, } end end) table.insert(handlers, function(data) local vh, pos = data.label:match("^(.+)-harmonic ([^ ]+)$") if pos then return { description = "{{{langname}}} " .. pos .. " with vowel harmony in " .. vh .. ".", breadcrumb = vh, umbrella = false, parents = {{ name = pos .. " by vowel harmony", sort = "" .. vh:len() .. vh, }}, } end end) table.insert(handlers, function(data) local pos, classifier = data.label:match("^(nouns) classified by (.+)$") if pos then local linktext if data.lang then -- Chinese classifiers may take the form TRAD/SIMP. This will cause problems if passed directly to [[Module:links]], -- but the module can accept links of the form TRAD//SIMP and display them correctly. if data.lang:getCode() == "zh" then classifier = classifier:gsub("/", "//") end linktext = require("Module:links").full_link({ term = classifier, lang = data.lang }, "term") else linktext = classifier end return { description = "{{{langname}}} " .. pos .. " using " .. linktext .. " as their classifier.", breadcrumb = classifier, umbrella = false, parents = {{ name = pos .. " by classifier", sort = (data.lang:makeSortKey(classifier)), }}, } end end) return {LABELS = labels2, RAW_CATEGORIES = raw_categories, HANDLERS = handlers} 3gfduiyt1hv8kncy62njx2gq9kbupkw 234897 234895 2026-05-25T13:24:20Z Lee 19 [[:ප්‍රවර්ගය:ස්පාඤ්ඤ epicene adjectives]] සඳහා සහාය 234897 Scribunto text/plain local m_sinhala = require("Module:sinhala") local labels = {} local raw_categories = {} local handlers = {} ----------------------------------------------------------------------------- -- -- -- LABELS -- -- -- ----------------------------------------------------------------------------- labels["terms by grammatical category"] = { description = "{{{langname}}} terms categorized by their grammatical category.", umbrella_parents = "මූලධර්ම", parents = {{name = "{{{langcat}}}", raw = true}}, } labels["indeclinable terms"] = { description = "Indeclinable {{{langname}}} terms categorized by their part of speech.", umbrella_parents = "Indeclinable terms subcategories by language", parents = {{name = "terms by grammatical category"}}, } labels["suppletive terms"] = { description = "Suppletive {{{langname}}} terms categorized by their part of speech.", umbrella_parents = "Suppletion subcategories by language", parents = {{name = "terms by grammatical category"}}, } ------- GENDER ------- for _, pos in ipairs { "nouns", "pronouns", "proper nouns", "ප්‍රත්‍ය" } do labels[m_sinhala.sinhala(pos) .. ", ලිංග භේදය අනුව"] = { description = "ලිංග භේදය අනුව පෙළ ගසා ඇති {{{langname}}} " .. pos .. " මෙහි දැක්වෙයි.", breadcrumb = "ලිංග භේදය අනුව", parents = {{name = m_sinhala.sinhala(pos), sort = "gender"}}, } labels[m_sinhala.sinhala(pos) .. " with irregular gender"] = { description = "{{{langname}}} " .. pos .. " whose ending is not typical for " .. pos .. " of their gender.", breadcrumb = "with irregular gender", parents = {{name = "irregular " .. m_sinhala.sinhala(pos), sort = "irregular gender"}}, } labels[m_sinhala.sinhala(pos) .. " with multiple genders"] = { description = "{{{langname}}} " .. pos .. " that belong to more than one gender.", breadcrumb = "with multiple genders", parents = {{name = m_sinhala.sinhala(pos) .. ", ලිංග භේදය අනුව", sort = "multiple genders"}}, } labels["common-gender " .. m_sinhala.sinhala(pos)] = { description = "{{{langname}}} " .. pos .. " of {{glossary|common gender}}, i.e. belonging to a gender category that combines the function of {{glossary|masculine}} and {{glossary|feminine}} and is opposed to the {{glossary|neuter}} gender.", breadcrumb = "common-gender", parents = {m_sinhala.sinhala(pos) .. ", ලිංග භේදය අනුව"}, } labels["ස්ත්‍රී ලිංග " .. m_sinhala.sinhala(pos)] = { description = "{{{langname}}} " .. pos .. " of {{glossary|feminine}} gender, i.e. belonging to a gender category that contains (among other things) female beings.", breadcrumb = "ස්ත්‍රී ලිංග", parents = {m_sinhala.sinhala(pos) .. ", ලිංග භේදය අනුව"}, } labels["පුරුෂ ලිංග " .. m_sinhala.sinhala(pos)] = { description = "{{{langname}}} " .. pos .. " of {{glossary|masculine}} gender, i.e. belonging to a gender category that contains (among other things) male beings.", breadcrumb = "පුරුෂ ලිංග", parents = {m_sinhala.sinhala(pos) .. ", ලිංග භේදය අනුව"}, } labels["පුරුෂ ලිංග සහ ස්ත්‍රී ලිංග " .. m_sinhala.sinhala(pos) .. " by sense"] = { description = "{{{langname}}} " .. pos .. " that may be either {{glossary|masculine}} or {{glossary|feminine}} depending on whether they refer to male or female beings.", breadcrumb = "පුරුෂ ලිංග සහ ස්ත්‍රී ලිංග by sense", parents = {m_sinhala.sinhala(pos) .. ", ලිංග භේදය අනුව"}, } labels["නපුංසක ලිංග " .. m_sinhala.sinhala(pos)] = { description = "{{{langname}}} " .. pos .. " of {{glossary|neuter}} gender, i.e. belonging to a gender category that does not usually contain male or female beings.", breadcrumb = "නපුංසක ලිංග", parents = {m_sinhala.sinhala(pos) .. ", ලිංග භේදය අනුව"}, } labels["gender-neutral " .. m_sinhala.sinhala(pos)] = { description = "{{{langname}}} " .. pos .. " that are applicable to all people, independent of gender.", breadcrumb = "gender-neutral", parents = {m_sinhala.sinhala(pos) .. ", ලිංග භේදය අනුව", "gender-neutral terms"}, } end for _, pos in ipairs({"adjectives", "determiners", "numerals", "participles", "ප්‍රත්‍ය"}) do labels["epicene " .. pos] = { description = "{{{langname}}} " .. pos .. " whose form is the same for both {{glossary|masculine}} and {{glossary|feminine}}, in languages whose " .. pos .. " normally distinguish gender.", breadcrumb = "epicene", parents = {m_sinhala.sinhala(pos) .. ", වරනැගීම් වර්ගය අනුව"}, } end ------- NOUN CLASSES ------- labels["nouns by class"] = { description = "{{{langname}}} nouns organized by the class they belong to.", breadcrumb = "by class", parents = {{name = "නාම පද", sort = "class"}}, } labels["alienable nouns"] = { description = "{{{langname}}} nouns that are [[w:Inalienable possession|alienably possessed]].", breadcrumb = "alienable", parents = {"නාම පද"}, } labels["inalienable nouns"] = { description = "{{{langname}}} nouns that are [[w:Inalienable possession|inalienably possessed]].", breadcrumb = "inalienable", parents = {"නාම පද"}, } ------- ANIMACY ------- for _, pos in ipairs({"නාම පද", "ප්‍රත්‍ය", "ක්‍රියා පද"}) do labels["ප්‍රාණවාචී " .. pos] = { description = "{{{langname}}} " .. pos .. " that refer to humans or animals.", breadcrumb = "animate", parents = {pos}, } labels["අප්‍රාණවාචී " .. pos] = { description = "{{{langname}}} " .. pos .. " that refer to inanimate objects (not humans or animals).", breadcrumb = "inanimate", parents = {pos}, } labels[pos .. " with multiple animacies"] = { description = "{{{langname}}} " .. pos .. " that belong to more than one animacy.", breadcrumb = "with multiple animacies", parents = {{name = pos, sort = "multiple animacies"}}, } end for _, pos in ipairs({"නාම පද", "ප්‍රත්‍ය"}) do -- This category should be used particularly in languages that have -- grammatical distinctions related to animals, such as Ukrainian. labels["animal " .. pos] = { description = "{{{langname}}} " .. pos .. " that refer to animals.", breadcrumb = "animal", parents = {"ප්‍රාණවාචී " .. pos}, } -- This category should be used particularly in languages that have -- grammatical distinctions related to men, such as Polish. labels["nonvirile " .. pos] = { description = "{{{langname}}} plural " .. pos .. " that refer to a group without male humans.", breadcrumb = "nonvirile", parents = {pos, "pluralia tantum"}, } labels["personal " .. pos] = { description = "{{{langname}}} " .. pos .. " that refer to humans.", breadcrumb = "personal", parents = {"ප්‍රාණවාචී " .. pos}, } -- This category should be used particularly in languages that have -- grammatical distinctions related to men, such as Polish. labels["virile " .. pos] = { description = "{{{langname}}} plural " .. pos .. " that refer to a group with at least one male human.", breadcrumb = "virile", parents = {pos, "pluralia tantum"}, } end ------- INFLECTED PARTS OF SPEECH ------- -- Add "POS by inflection type", "irregular POS" and "POS by tone" -- categories for (potentially) inflected parts of speech. local inflected_poses = { "adjectives", "adverbs", "determiners", "nouns", "numerals", "participles", "pronouns", "proper nouns", "suffixes", "verbs", } for _, pos in ipairs(inflected_poses) do labels[m_sinhala.sinhala(pos) .. ", වරනැගීම් වර්ගය අනුව"] = { description = "{{{langname}}} " .. m_sinhala.sinhala(pos) .. " organized by the type of inflection they follow.", breadcrumb = "වරනැගීම් වර්ගය අනුව", parents = {{name = m_sinhala.sinhala(pos), sort = "inflection"}}, } labels["irregular " .. m_sinhala.sinhala(pos)] = { description = "{{{langname}}} " .. pos .. " that follow non-standard patterns of inflection.", breadcrumb = "irregular", parents = {m_sinhala.sinhala(pos) .. ", වරනැගීම් වර්ගය අනුව"}, } labels["defective " .. pos] = { description = "{{{langname}}} " .. pos .. " that lack one or more forms in their inflections.", breadcrumb = "defective", parents = {pos, "irregular " .. pos}, } labels["suppletive " .. pos] = { description = "{{{langname}}} " .. pos .. " that have inflected forms from different roots.", breadcrumb = "suppletive", umbrella_parents = "Suppletion subcategories by language", parents = { "irregular " .. pos, "suppletive terms", }, } if pos ~= "ක්‍රියා පද" and pos ~= "adverbs" then labels["අව්‍යය " .. m_sinhala.sinhala(pos)] = { description = "{{{langname}}} " .. pos .. " that do not display additional grammatical relations by means of declension.", breadcrumb = "අව්‍යය", umbrella_parents = "Indeclinable terms subcategories by language", parents = { m_sinhala.sinhala(pos) .. ", වරනැගීම් වර්ගය අනුව", "indeclinable terms", }, } labels[pos .. " with multiple declensions"] = { description = "{{{langname}}} " .. pos .. " that follow more than one type of inflection.", breadcrumb = "with multiple declensions", parents = {{name = pos .. ", වරනැගීම් වර්ගය අනුව", sort = "multiple declensions"}}, } labels[pos .. " with multiple plurals"] = { description = "{{{langname}}} " .. pos .. " that have more than one possible plural (sometimes with distinct meanings).", breadcrumb = "with multiple plurals", parents = {{name = pos .. ", වරනැගීම් වර්ගය අනුව", sort = "multiple plurals"}}, } end labels[pos .. " by tone"] = { description = "{{{langname}}} " .. pos .. " organized by the tone they follow.", breadcrumb = "by tone", parents = {{name = pos .. ", වරනැගීම් වර්ගය අනුව", sort = "tone"}}, } labels[pos .. " by vowel harmony"] = { description = "{{{langname}}} " .. pos .. " organized by the vowel harmony they follow.", breadcrumb = "by vowel harmony", parents = {{name = pos .. ", වරනැගීම් වර්ගය අනුව", sort = "vowel harmony"}}, } end -- FIXME: Only used currently for Arabic; probably should be removed as a general category. labels["irregular elative adjectives"] = { description = "{{{langname}}} elative adjectives that follow non-standard patterns of inflection.", parents = {"adjectives by inflection type"}, } for _, pos in ipairs { "නාම පද", "proper nouns", "pronouns" } do labels[pos .. " with irregular plurals"] = { description = "{{{langname}}} " .. pos .. " whose plural is formed irregularly.", breadcrumb = "with irregular plurals", parents = {{name = "irregular " .. pos, sort = "irregular plurals"}}, } labels[pos .. " with unattested plurals"] = { description = "{{{langname}}} " .. pos .. " whose plural is unattested.", breadcrumb = "with unattested plurals", parents = {{name = pos, sort = "unattested plurals"}}, } labels["definite " .. pos] = { description = "{{{langname}}} " .. pos .. " that are inherently definite and have definite concord.", breadcrumb = "definite", parents = {pos .. ", වරනැගීම් වර්ගය අනුව"}, } end local labels2 = {} -- Add 'umbrella_parents' key if not already present. for key, data in pairs(labels) do labels2[key] = data if not data.umbrella_parents then data.umbrella_parents = "Terms by grammatical category subcategories by language" end end ----------------------------------------------------------------------------- -- -- -- RAW CATEGORIES -- -- -- ----------------------------------------------------------------------------- raw_categories["Terms by grammatical category subcategories by language"] = { description = "Umbrella categories covering topics related to grammatical categories, such as gender, animacy and noun and verb classes.", additional = "{{{umbrella_meta_msg}}}", parents = { "ඡත්‍ර මෙටා ප්‍රවර්ග", {name = "terms by grammatical category", is_label = true, sort = " "}, }, } raw_categories["Indeclinable terms subcategories by language"] = { description = "Umbrella categories covering indeclinable terms in specific part-of-speech categories.", additional = "{{{umbrella_meta_msg}}}", parents = { "ඡත්‍ර මෙටා ප්‍රවර්ග", "Terms by grammatical category subcategories by language", }, } raw_categories["Suppletion subcategories by language"] = { description = "Umbrella categories covering suppletive terms in specific part-of-speech categories.", additional = "{{{umbrella_meta_msg}}}", parents = { "ඡත්‍ර මෙටා ප්‍රවර්ග", "Terms by grammatical category subcategories by language", }, } ----------------------------------------------------------------------------- -- -- -- HANDLERS -- -- -- ----------------------------------------------------------------------------- table.insert(handlers, function(data) local class = data.label:match("^class (.+) nouns$") if class then local classnum, suffix = class:match("^(%d+)(.*)$") return { description = "{{{langname}}} nouns that belong to class " .. class .. ".", breadcrumb = {name = class, nocap = true}, umbrella = false, parents = {{ name = "nouns by class", sort = classnum and ("#%03d"):format(classnum) .. suffix or class, }}, } end end) table.insert(handlers, function(data) local pos, tone = data.label:match("^(.+) with tone ([^ ]+)$") if pos then return { description = "{{{langname}}} " .. pos .. " with tone " .. tone .. ".", breadcrumb = tone, -- FIXME, should there be an umbrella category e.g. 'Adjectives with tone H by language'? umbrella = false, parents = {{ name = pos .. " by tone", sort = "" .. tone:len() .. tone, }}, } end end) table.insert(handlers, function(data) local vh, pos = data.label:match("^(.+)-harmonic ([^ ]+)$") if pos then return { description = "{{{langname}}} " .. pos .. " with vowel harmony in " .. vh .. ".", breadcrumb = vh, umbrella = false, parents = {{ name = pos .. " by vowel harmony", sort = "" .. vh:len() .. vh, }}, } end end) table.insert(handlers, function(data) local pos, classifier = data.label:match("^(nouns) classified by (.+)$") if pos then local linktext if data.lang then -- Chinese classifiers may take the form TRAD/SIMP. This will cause problems if passed directly to [[Module:links]], -- but the module can accept links of the form TRAD//SIMP and display them correctly. if data.lang:getCode() == "zh" then classifier = classifier:gsub("/", "//") end linktext = require("Module:links").full_link({ term = classifier, lang = data.lang }, "term") else linktext = classifier end return { description = "{{{langname}}} " .. pos .. " using " .. linktext .. " as their classifier.", breadcrumb = classifier, umbrella = false, parents = {{ name = pos .. " by classifier", sort = (data.lang:makeSortKey(classifier)), }}, } end end) return {LABELS = labels2, RAW_CATEGORIES = raw_categories, HANDLERS = handlers} erl18xrel5ulexk7kvt89sb3fhgq2on 234903 234897 2026-05-25T13:29:49Z Lee 19 [[:ප්‍රවර්ගය:ස්පාඤ්ඤ උභයලිංගික නාම විශේෂණ පද]] සඳහා සහාය 234903 Scribunto text/plain local m_sinhala = require("Module:sinhala") local labels = {} local raw_categories = {} local handlers = {} ----------------------------------------------------------------------------- -- -- -- LABELS -- -- -- ----------------------------------------------------------------------------- labels["terms by grammatical category"] = { description = "{{{langname}}} terms categorized by their grammatical category.", umbrella_parents = "මූලධර්ම", parents = {{name = "{{{langcat}}}", raw = true}}, } labels["indeclinable terms"] = { description = "Indeclinable {{{langname}}} terms categorized by their part of speech.", umbrella_parents = "Indeclinable terms subcategories by language", parents = {{name = "terms by grammatical category"}}, } labels["suppletive terms"] = { description = "Suppletive {{{langname}}} terms categorized by their part of speech.", umbrella_parents = "Suppletion subcategories by language", parents = {{name = "terms by grammatical category"}}, } ------- GENDER ------- for _, pos in ipairs { "nouns", "pronouns", "proper nouns", "ප්‍රත්‍ය" } do labels[m_sinhala.sinhala(pos) .. ", ලිංග භේදය අනුව"] = { description = "ලිංග භේදය අනුව පෙළ ගසා ඇති {{{langname}}} " .. pos .. " මෙහි දැක්වෙයි.", breadcrumb = "ලිංග භේදය අනුව", parents = {{name = m_sinhala.sinhala(pos), sort = "gender"}}, } labels[m_sinhala.sinhala(pos) .. " with irregular gender"] = { description = "{{{langname}}} " .. pos .. " whose ending is not typical for " .. pos .. " of their gender.", breadcrumb = "with irregular gender", parents = {{name = "irregular " .. m_sinhala.sinhala(pos), sort = "irregular gender"}}, } labels[m_sinhala.sinhala(pos) .. " with multiple genders"] = { description = "{{{langname}}} " .. pos .. " that belong to more than one gender.", breadcrumb = "with multiple genders", parents = {{name = m_sinhala.sinhala(pos) .. ", ලිංග භේදය අනුව", sort = "multiple genders"}}, } labels["common-gender " .. m_sinhala.sinhala(pos)] = { description = "{{{langname}}} " .. pos .. " of {{glossary|common gender}}, i.e. belonging to a gender category that combines the function of {{glossary|masculine}} and {{glossary|feminine}} and is opposed to the {{glossary|neuter}} gender.", breadcrumb = "common-gender", parents = {m_sinhala.sinhala(pos) .. ", ලිංග භේදය අනුව"}, } labels["ස්ත්‍රී ලිංග " .. m_sinhala.sinhala(pos)] = { description = "{{{langname}}} " .. pos .. " of {{glossary|feminine}} gender, i.e. belonging to a gender category that contains (among other things) female beings.", breadcrumb = "ස්ත්‍රී ලිංග", parents = {m_sinhala.sinhala(pos) .. ", ලිංග භේදය අනුව"}, } labels["පුරුෂ ලිංග " .. m_sinhala.sinhala(pos)] = { description = "{{{langname}}} " .. pos .. " of {{glossary|masculine}} gender, i.e. belonging to a gender category that contains (among other things) male beings.", breadcrumb = "පුරුෂ ලිංග", parents = {m_sinhala.sinhala(pos) .. ", ලිංග භේදය අනුව"}, } labels["පුරුෂ ලිංග සහ ස්ත්‍රී ලිංග " .. m_sinhala.sinhala(pos) .. " by sense"] = { description = "{{{langname}}} " .. pos .. " that may be either {{glossary|masculine}} or {{glossary|feminine}} depending on whether they refer to male or female beings.", breadcrumb = "පුරුෂ ලිංග සහ ස්ත්‍රී ලිංග by sense", parents = {m_sinhala.sinhala(pos) .. ", ලිංග භේදය අනුව"}, } labels["නපුංසක ලිංග " .. m_sinhala.sinhala(pos)] = { description = "{{{langname}}} " .. pos .. " of {{glossary|neuter}} gender, i.e. belonging to a gender category that does not usually contain male or female beings.", breadcrumb = "නපුංසක ලිංග", parents = {m_sinhala.sinhala(pos) .. ", ලිංග භේදය අනුව"}, } labels["gender-neutral " .. m_sinhala.sinhala(pos)] = { description = "{{{langname}}} " .. pos .. " that are applicable to all people, independent of gender.", breadcrumb = "gender-neutral", parents = {m_sinhala.sinhala(pos) .. ", ලිංග භේදය අනුව", "gender-neutral terms"}, } end for _, pos in ipairs({"adjectives", "determiners", "numerals", "participles", "ප්‍රත්‍ය"}) do labels["උභයලිංගික " .. m_sinhala.sinhala(pos)] = { description = "{{{langname}}} " .. pos .. " whose form is the same for both {{glossary|masculine}} and {{glossary|feminine}}, in languages whose " .. pos .. " normally distinguish gender.", breadcrumb = "epicene", parents = {m_sinhala.sinhala(pos) .. ", වරනැගීම් වර්ගය අනුව"}, } end ------- NOUN CLASSES ------- labels["nouns by class"] = { description = "{{{langname}}} nouns organized by the class they belong to.", breadcrumb = "by class", parents = {{name = "නාම පද", sort = "class"}}, } labels["alienable nouns"] = { description = "{{{langname}}} nouns that are [[w:Inalienable possession|alienably possessed]].", breadcrumb = "alienable", parents = {"නාම පද"}, } labels["inalienable nouns"] = { description = "{{{langname}}} nouns that are [[w:Inalienable possession|inalienably possessed]].", breadcrumb = "inalienable", parents = {"නාම පද"}, } ------- ANIMACY ------- for _, pos in ipairs({"නාම පද", "ප්‍රත්‍ය", "ක්‍රියා පද"}) do labels["ප්‍රාණවාචී " .. pos] = { description = "{{{langname}}} " .. pos .. " that refer to humans or animals.", breadcrumb = "animate", parents = {pos}, } labels["අප්‍රාණවාචී " .. pos] = { description = "{{{langname}}} " .. pos .. " that refer to inanimate objects (not humans or animals).", breadcrumb = "inanimate", parents = {pos}, } labels[pos .. " with multiple animacies"] = { description = "{{{langname}}} " .. pos .. " that belong to more than one animacy.", breadcrumb = "with multiple animacies", parents = {{name = pos, sort = "multiple animacies"}}, } end for _, pos in ipairs({"නාම පද", "ප්‍රත්‍ය"}) do -- This category should be used particularly in languages that have -- grammatical distinctions related to animals, such as Ukrainian. labels["animal " .. pos] = { description = "{{{langname}}} " .. pos .. " that refer to animals.", breadcrumb = "animal", parents = {"ප්‍රාණවාචී " .. pos}, } -- This category should be used particularly in languages that have -- grammatical distinctions related to men, such as Polish. labels["nonvirile " .. pos] = { description = "{{{langname}}} plural " .. pos .. " that refer to a group without male humans.", breadcrumb = "nonvirile", parents = {pos, "pluralia tantum"}, } labels["personal " .. pos] = { description = "{{{langname}}} " .. pos .. " that refer to humans.", breadcrumb = "personal", parents = {"ප්‍රාණවාචී " .. pos}, } -- This category should be used particularly in languages that have -- grammatical distinctions related to men, such as Polish. labels["virile " .. pos] = { description = "{{{langname}}} plural " .. pos .. " that refer to a group with at least one male human.", breadcrumb = "virile", parents = {pos, "pluralia tantum"}, } end ------- INFLECTED PARTS OF SPEECH ------- -- Add "POS by inflection type", "irregular POS" and "POS by tone" -- categories for (potentially) inflected parts of speech. local inflected_poses = { "adjectives", "adverbs", "determiners", "nouns", "numerals", "participles", "pronouns", "proper nouns", "suffixes", "verbs", } for _, pos in ipairs(inflected_poses) do labels[m_sinhala.sinhala(pos) .. ", වරනැගීම් වර්ගය අනුව"] = { description = "{{{langname}}} " .. m_sinhala.sinhala(pos) .. " organized by the type of inflection they follow.", breadcrumb = "වරනැගීම් වර්ගය අනුව", parents = {{name = m_sinhala.sinhala(pos), sort = "inflection"}}, } labels["irregular " .. m_sinhala.sinhala(pos)] = { description = "{{{langname}}} " .. pos .. " that follow non-standard patterns of inflection.", breadcrumb = "irregular", parents = {m_sinhala.sinhala(pos) .. ", වරනැගීම් වර්ගය අනුව"}, } labels["defective " .. pos] = { description = "{{{langname}}} " .. pos .. " that lack one or more forms in their inflections.", breadcrumb = "defective", parents = {pos, "irregular " .. pos}, } labels["suppletive " .. pos] = { description = "{{{langname}}} " .. pos .. " that have inflected forms from different roots.", breadcrumb = "suppletive", umbrella_parents = "Suppletion subcategories by language", parents = { "irregular " .. pos, "suppletive terms", }, } if pos ~= "ක්‍රියා පද" and pos ~= "adverbs" then labels["අව්‍යය " .. m_sinhala.sinhala(pos)] = { description = "{{{langname}}} " .. pos .. " that do not display additional grammatical relations by means of declension.", breadcrumb = "අව්‍යය", umbrella_parents = "Indeclinable terms subcategories by language", parents = { m_sinhala.sinhala(pos) .. ", වරනැගීම් වර්ගය අනුව", "indeclinable terms", }, } labels[pos .. " with multiple declensions"] = { description = "{{{langname}}} " .. pos .. " that follow more than one type of inflection.", breadcrumb = "with multiple declensions", parents = {{name = pos .. ", වරනැගීම් වර්ගය අනුව", sort = "multiple declensions"}}, } labels[pos .. " with multiple plurals"] = { description = "{{{langname}}} " .. pos .. " that have more than one possible plural (sometimes with distinct meanings).", breadcrumb = "with multiple plurals", parents = {{name = pos .. ", වරනැගීම් වර්ගය අනුව", sort = "multiple plurals"}}, } end labels[pos .. " by tone"] = { description = "{{{langname}}} " .. pos .. " organized by the tone they follow.", breadcrumb = "by tone", parents = {{name = pos .. ", වරනැගීම් වර්ගය අනුව", sort = "tone"}}, } labels[pos .. " by vowel harmony"] = { description = "{{{langname}}} " .. pos .. " organized by the vowel harmony they follow.", breadcrumb = "by vowel harmony", parents = {{name = pos .. ", වරනැගීම් වර්ගය අනුව", sort = "vowel harmony"}}, } end -- FIXME: Only used currently for Arabic; probably should be removed as a general category. labels["irregular elative adjectives"] = { description = "{{{langname}}} elative adjectives that follow non-standard patterns of inflection.", parents = {"adjectives by inflection type"}, } for _, pos in ipairs { "නාම පද", "proper nouns", "pronouns" } do labels[pos .. " with irregular plurals"] = { description = "{{{langname}}} " .. pos .. " whose plural is formed irregularly.", breadcrumb = "with irregular plurals", parents = {{name = "irregular " .. pos, sort = "irregular plurals"}}, } labels[pos .. " with unattested plurals"] = { description = "{{{langname}}} " .. pos .. " whose plural is unattested.", breadcrumb = "with unattested plurals", parents = {{name = pos, sort = "unattested plurals"}}, } labels["definite " .. pos] = { description = "{{{langname}}} " .. pos .. " that are inherently definite and have definite concord.", breadcrumb = "definite", parents = {pos .. ", වරනැගීම් වර්ගය අනුව"}, } end local labels2 = {} -- Add 'umbrella_parents' key if not already present. for key, data in pairs(labels) do labels2[key] = data if not data.umbrella_parents then data.umbrella_parents = "Terms by grammatical category subcategories by language" end end ----------------------------------------------------------------------------- -- -- -- RAW CATEGORIES -- -- -- ----------------------------------------------------------------------------- raw_categories["Terms by grammatical category subcategories by language"] = { description = "Umbrella categories covering topics related to grammatical categories, such as gender, animacy and noun and verb classes.", additional = "{{{umbrella_meta_msg}}}", parents = { "ඡත්‍ර මෙටා ප්‍රවර්ග", {name = "terms by grammatical category", is_label = true, sort = " "}, }, } raw_categories["Indeclinable terms subcategories by language"] = { description = "Umbrella categories covering indeclinable terms in specific part-of-speech categories.", additional = "{{{umbrella_meta_msg}}}", parents = { "ඡත්‍ර මෙටා ප්‍රවර්ග", "Terms by grammatical category subcategories by language", }, } raw_categories["Suppletion subcategories by language"] = { description = "Umbrella categories covering suppletive terms in specific part-of-speech categories.", additional = "{{{umbrella_meta_msg}}}", parents = { "ඡත්‍ර මෙටා ප්‍රවර්ග", "Terms by grammatical category subcategories by language", }, } ----------------------------------------------------------------------------- -- -- -- HANDLERS -- -- -- ----------------------------------------------------------------------------- table.insert(handlers, function(data) local class = data.label:match("^class (.+) nouns$") if class then local classnum, suffix = class:match("^(%d+)(.*)$") return { description = "{{{langname}}} nouns that belong to class " .. class .. ".", breadcrumb = {name = class, nocap = true}, umbrella = false, parents = {{ name = "nouns by class", sort = classnum and ("#%03d"):format(classnum) .. suffix or class, }}, } end end) table.insert(handlers, function(data) local pos, tone = data.label:match("^(.+) with tone ([^ ]+)$") if pos then return { description = "{{{langname}}} " .. pos .. " with tone " .. tone .. ".", breadcrumb = tone, -- FIXME, should there be an umbrella category e.g. 'Adjectives with tone H by language'? umbrella = false, parents = {{ name = pos .. " by tone", sort = "" .. tone:len() .. tone, }}, } end end) table.insert(handlers, function(data) local vh, pos = data.label:match("^(.+)-harmonic ([^ ]+)$") if pos then return { description = "{{{langname}}} " .. pos .. " with vowel harmony in " .. vh .. ".", breadcrumb = vh, umbrella = false, parents = {{ name = pos .. " by vowel harmony", sort = "" .. vh:len() .. vh, }}, } end end) table.insert(handlers, function(data) local pos, classifier = data.label:match("^(nouns) classified by (.+)$") if pos then local linktext if data.lang then -- Chinese classifiers may take the form TRAD/SIMP. This will cause problems if passed directly to [[Module:links]], -- but the module can accept links of the form TRAD//SIMP and display them correctly. if data.lang:getCode() == "zh" then classifier = classifier:gsub("/", "//") end linktext = require("Module:links").full_link({ term = classifier, lang = data.lang }, "term") else linktext = classifier end return { description = "{{{langname}}} " .. pos .. " using " .. linktext .. " as their classifier.", breadcrumb = classifier, umbrella = false, parents = {{ name = pos .. " by classifier", sort = (data.lang:makeSortKey(classifier)), }}, } end end) return {LABELS = labels2, RAW_CATEGORIES = raw_categories, HANDLERS = handlers} myvuhgkja465b4wjuxsp5colh9jhg90 234927 234903 2026-05-26T06:11:09Z Lee 19 [[:ප්‍රවර්ගය:ඉංග්‍රීසි suppletive verbs]] සඳහා සහාය 234927 Scribunto text/plain local m_sinhala = require("Module:sinhala") local labels = {} local raw_categories = {} local handlers = {} ----------------------------------------------------------------------------- -- -- -- LABELS -- -- -- ----------------------------------------------------------------------------- labels["terms by grammatical category"] = { description = "{{{langname}}} terms categorized by their grammatical category.", umbrella_parents = "මූලධර්ම", parents = {{name = "{{{langcat}}}", raw = true}}, } labels["indeclinable terms"] = { description = "Indeclinable {{{langname}}} terms categorized by their part of speech.", umbrella_parents = "Indeclinable terms subcategories by language", parents = {{name = "terms by grammatical category"}}, } labels["suppletive terms"] = { description = "Suppletive {{{langname}}} terms categorized by their part of speech.", umbrella_parents = "Suppletion subcategories by language", parents = {{name = "terms by grammatical category"}}, } ------- GENDER ------- for _, pos in ipairs { "nouns", "pronouns", "proper nouns", "ප්‍රත්‍ය" } do labels[m_sinhala.sinhala(pos) .. ", ලිංග භේදය අනුව"] = { description = "ලිංග භේදය අනුව පෙළ ගසා ඇති {{{langname}}} " .. pos .. " මෙහි දැක්වෙයි.", breadcrumb = "ලිංග භේදය අනුව", parents = {{name = m_sinhala.sinhala(pos), sort = "gender"}}, } labels[m_sinhala.sinhala(pos) .. " with irregular gender"] = { description = "{{{langname}}} " .. pos .. " whose ending is not typical for " .. pos .. " of their gender.", breadcrumb = "with irregular gender", parents = {{name = "irregular " .. m_sinhala.sinhala(pos), sort = "irregular gender"}}, } labels[m_sinhala.sinhala(pos) .. " with multiple genders"] = { description = "{{{langname}}} " .. pos .. " that belong to more than one gender.", breadcrumb = "with multiple genders", parents = {{name = m_sinhala.sinhala(pos) .. ", ලිංග භේදය අනුව", sort = "multiple genders"}}, } labels["common-gender " .. m_sinhala.sinhala(pos)] = { description = "{{{langname}}} " .. pos .. " of {{glossary|common gender}}, i.e. belonging to a gender category that combines the function of {{glossary|masculine}} and {{glossary|feminine}} and is opposed to the {{glossary|neuter}} gender.", breadcrumb = "common-gender", parents = {m_sinhala.sinhala(pos) .. ", ලිංග භේදය අනුව"}, } labels["ස්ත්‍රී ලිංග " .. m_sinhala.sinhala(pos)] = { description = "{{{langname}}} " .. pos .. " of {{glossary|feminine}} gender, i.e. belonging to a gender category that contains (among other things) female beings.", breadcrumb = "ස්ත්‍රී ලිංග", parents = {m_sinhala.sinhala(pos) .. ", ලිංග භේදය අනුව"}, } labels["පුරුෂ ලිංග " .. m_sinhala.sinhala(pos)] = { description = "{{{langname}}} " .. pos .. " of {{glossary|masculine}} gender, i.e. belonging to a gender category that contains (among other things) male beings.", breadcrumb = "පුරුෂ ලිංග", parents = {m_sinhala.sinhala(pos) .. ", ලිංග භේදය අනුව"}, } labels["පුරුෂ ලිංග සහ ස්ත්‍රී ලිංග " .. m_sinhala.sinhala(pos) .. " by sense"] = { description = "{{{langname}}} " .. pos .. " that may be either {{glossary|masculine}} or {{glossary|feminine}} depending on whether they refer to male or female beings.", breadcrumb = "පුරුෂ ලිංග සහ ස්ත්‍රී ලිංග by sense", parents = {m_sinhala.sinhala(pos) .. ", ලිංග භේදය අනුව"}, } labels["නපුංසක ලිංග " .. m_sinhala.sinhala(pos)] = { description = "{{{langname}}} " .. pos .. " of {{glossary|neuter}} gender, i.e. belonging to a gender category that does not usually contain male or female beings.", breadcrumb = "නපුංසක ලිංග", parents = {m_sinhala.sinhala(pos) .. ", ලිංග භේදය අනුව"}, } labels["gender-neutral " .. m_sinhala.sinhala(pos)] = { description = "{{{langname}}} " .. pos .. " that are applicable to all people, independent of gender.", breadcrumb = "gender-neutral", parents = {m_sinhala.sinhala(pos) .. ", ලිංග භේදය අනුව", "gender-neutral terms"}, } end for _, pos in ipairs({"adjectives", "determiners", "numerals", "participles", "ප්‍රත්‍ය"}) do labels["උභයලිංගික " .. m_sinhala.sinhala(pos)] = { description = "{{{langname}}} " .. pos .. " whose form is the same for both {{glossary|masculine}} and {{glossary|feminine}}, in languages whose " .. pos .. " normally distinguish gender.", breadcrumb = "epicene", parents = {m_sinhala.sinhala(pos) .. ", වරනැගීම් වර්ගය අනුව"}, } end ------- NOUN CLASSES ------- labels["nouns by class"] = { description = "{{{langname}}} nouns organized by the class they belong to.", breadcrumb = "by class", parents = {{name = "නාම පද", sort = "class"}}, } labels["alienable nouns"] = { description = "{{{langname}}} nouns that are [[w:Inalienable possession|alienably possessed]].", breadcrumb = "alienable", parents = {"නාම පද"}, } labels["inalienable nouns"] = { description = "{{{langname}}} nouns that are [[w:Inalienable possession|inalienably possessed]].", breadcrumb = "inalienable", parents = {"නාම පද"}, } ------- ANIMACY ------- for _, pos in ipairs({"නාම පද", "ප්‍රත්‍ය", "ක්‍රියා පද"}) do labels["ප්‍රාණවාචී " .. pos] = { description = "{{{langname}}} " .. pos .. " that refer to humans or animals.", breadcrumb = "animate", parents = {pos}, } labels["අප්‍රාණවාචී " .. pos] = { description = "{{{langname}}} " .. pos .. " that refer to inanimate objects (not humans or animals).", breadcrumb = "inanimate", parents = {pos}, } labels[pos .. " with multiple animacies"] = { description = "{{{langname}}} " .. pos .. " that belong to more than one animacy.", breadcrumb = "with multiple animacies", parents = {{name = pos, sort = "multiple animacies"}}, } end for _, pos in ipairs({"නාම පද", "ප්‍රත්‍ය"}) do -- This category should be used particularly in languages that have -- grammatical distinctions related to animals, such as Ukrainian. labels["animal " .. pos] = { description = "{{{langname}}} " .. pos .. " that refer to animals.", breadcrumb = "animal", parents = {"ප්‍රාණවාචී " .. pos}, } -- This category should be used particularly in languages that have -- grammatical distinctions related to men, such as Polish. labels["nonvirile " .. pos] = { description = "{{{langname}}} plural " .. pos .. " that refer to a group without male humans.", breadcrumb = "nonvirile", parents = {pos, "pluralia tantum"}, } labels["personal " .. pos] = { description = "{{{langname}}} " .. pos .. " that refer to humans.", breadcrumb = "personal", parents = {"ප්‍රාණවාචී " .. pos}, } -- This category should be used particularly in languages that have -- grammatical distinctions related to men, such as Polish. labels["virile " .. pos] = { description = "{{{langname}}} plural " .. pos .. " that refer to a group with at least one male human.", breadcrumb = "virile", parents = {pos, "pluralia tantum"}, } end ------- INFLECTED PARTS OF SPEECH ------- -- Add "POS by inflection type", "irregular POS" and "POS by tone" -- categories for (potentially) inflected parts of speech. local inflected_poses = { "adjectives", "adverbs", "determiners", "nouns", "numerals", "participles", "pronouns", "proper nouns", "suffixes", "verbs", } for _, pos in ipairs(inflected_poses) do labels[m_sinhala.sinhala(pos) .. ", වරනැගීම් වර්ගය අනුව"] = { description = "{{{langname}}} " .. m_sinhala.sinhala(pos) .. " organized by the type of inflection they follow.", breadcrumb = "වරනැගීම් වර්ගය අනුව", parents = {{name = m_sinhala.sinhala(pos), sort = "inflection"}}, } labels["irregular " .. m_sinhala.sinhala(pos)] = { description = "{{{langname}}} " .. pos .. " that follow non-standard patterns of inflection.", breadcrumb = "irregular", parents = {m_sinhala.sinhala(pos) .. ", වරනැගීම් වර්ගය අනුව"}, } labels["defective " .. pos] = { description = "{{{langname}}} " .. pos .. " that lack one or more forms in their inflections.", breadcrumb = "defective", parents = {pos, "irregular " .. pos}, } labels["suppletive " .. pos] = { description = "{{{langname}}} " .. pos .. " that have inflected forms from different roots.", breadcrumb = "suppletive", umbrella_parents = "Suppletion subcategories by language", parents = { "irregular " .. m_sinhala.sinhala(pos), "suppletive terms", }, } if pos ~= "ක්‍රියා පද" and pos ~= "adverbs" then labels["අව්‍යය " .. m_sinhala.sinhala(pos)] = { description = "{{{langname}}} " .. pos .. " that do not display additional grammatical relations by means of declension.", breadcrumb = "අව්‍යය", umbrella_parents = "Indeclinable terms subcategories by language", parents = { m_sinhala.sinhala(pos) .. ", වරනැගීම් වර්ගය අනුව", "indeclinable terms", }, } labels[pos .. " with multiple declensions"] = { description = "{{{langname}}} " .. pos .. " that follow more than one type of inflection.", breadcrumb = "with multiple declensions", parents = {{name = pos .. ", වරනැගීම් වර්ගය අනුව", sort = "multiple declensions"}}, } labels[pos .. " with multiple plurals"] = { description = "{{{langname}}} " .. pos .. " that have more than one possible plural (sometimes with distinct meanings).", breadcrumb = "with multiple plurals", parents = {{name = pos .. ", වරනැගීම් වර්ගය අනුව", sort = "multiple plurals"}}, } end labels[pos .. " by tone"] = { description = "{{{langname}}} " .. pos .. " organized by the tone they follow.", breadcrumb = "by tone", parents = {{name = pos .. ", වරනැගීම් වර්ගය අනුව", sort = "tone"}}, } labels[pos .. " by vowel harmony"] = { description = "{{{langname}}} " .. pos .. " organized by the vowel harmony they follow.", breadcrumb = "by vowel harmony", parents = {{name = pos .. ", වරනැගීම් වර්ගය අනුව", sort = "vowel harmony"}}, } end -- FIXME: Only used currently for Arabic; probably should be removed as a general category. labels["irregular elative adjectives"] = { description = "{{{langname}}} elative adjectives that follow non-standard patterns of inflection.", parents = {"adjectives by inflection type"}, } for _, pos in ipairs { "නාම පද", "proper nouns", "pronouns" } do labels[pos .. " with irregular plurals"] = { description = "{{{langname}}} " .. pos .. " whose plural is formed irregularly.", breadcrumb = "with irregular plurals", parents = {{name = "irregular " .. pos, sort = "irregular plurals"}}, } labels[pos .. " with unattested plurals"] = { description = "{{{langname}}} " .. pos .. " whose plural is unattested.", breadcrumb = "with unattested plurals", parents = {{name = pos, sort = "unattested plurals"}}, } labels["definite " .. pos] = { description = "{{{langname}}} " .. pos .. " that are inherently definite and have definite concord.", breadcrumb = "definite", parents = {pos .. ", වරනැගීම් වර්ගය අනුව"}, } end local labels2 = {} -- Add 'umbrella_parents' key if not already present. for key, data in pairs(labels) do labels2[key] = data if not data.umbrella_parents then data.umbrella_parents = "Terms by grammatical category subcategories by language" end end ----------------------------------------------------------------------------- -- -- -- RAW CATEGORIES -- -- -- ----------------------------------------------------------------------------- raw_categories["Terms by grammatical category subcategories by language"] = { description = "Umbrella categories covering topics related to grammatical categories, such as gender, animacy and noun and verb classes.", additional = "{{{umbrella_meta_msg}}}", parents = { "ඡත්‍ර මෙටා ප්‍රවර්ග", {name = "terms by grammatical category", is_label = true, sort = " "}, }, } raw_categories["Indeclinable terms subcategories by language"] = { description = "Umbrella categories covering indeclinable terms in specific part-of-speech categories.", additional = "{{{umbrella_meta_msg}}}", parents = { "ඡත්‍ර මෙටා ප්‍රවර්ග", "Terms by grammatical category subcategories by language", }, } raw_categories["Suppletion subcategories by language"] = { description = "Umbrella categories covering suppletive terms in specific part-of-speech categories.", additional = "{{{umbrella_meta_msg}}}", parents = { "ඡත්‍ර මෙටා ප්‍රවර්ග", "Terms by grammatical category subcategories by language", }, } ----------------------------------------------------------------------------- -- -- -- HANDLERS -- -- -- ----------------------------------------------------------------------------- table.insert(handlers, function(data) local class = data.label:match("^class (.+) nouns$") if class then local classnum, suffix = class:match("^(%d+)(.*)$") return { description = "{{{langname}}} nouns that belong to class " .. class .. ".", breadcrumb = {name = class, nocap = true}, umbrella = false, parents = {{ name = "nouns by class", sort = classnum and ("#%03d"):format(classnum) .. suffix or class, }}, } end end) table.insert(handlers, function(data) local pos, tone = data.label:match("^(.+) with tone ([^ ]+)$") if pos then return { description = "{{{langname}}} " .. pos .. " with tone " .. tone .. ".", breadcrumb = tone, -- FIXME, should there be an umbrella category e.g. 'Adjectives with tone H by language'? umbrella = false, parents = {{ name = pos .. " by tone", sort = "" .. tone:len() .. tone, }}, } end end) table.insert(handlers, function(data) local vh, pos = data.label:match("^(.+)-harmonic ([^ ]+)$") if pos then return { description = "{{{langname}}} " .. pos .. " with vowel harmony in " .. vh .. ".", breadcrumb = vh, umbrella = false, parents = {{ name = pos .. " by vowel harmony", sort = "" .. vh:len() .. vh, }}, } end end) table.insert(handlers, function(data) local pos, classifier = data.label:match("^(nouns) classified by (.+)$") if pos then local linktext if data.lang then -- Chinese classifiers may take the form TRAD/SIMP. This will cause problems if passed directly to [[Module:links]], -- but the module can accept links of the form TRAD//SIMP and display them correctly. if data.lang:getCode() == "zh" then classifier = classifier:gsub("/", "//") end linktext = require("Module:links").full_link({ term = classifier, lang = data.lang }, "term") else linktext = classifier end return { description = "{{{langname}}} " .. pos .. " using " .. linktext .. " as their classifier.", breadcrumb = classifier, umbrella = false, parents = {{ name = pos .. " by classifier", sort = (data.lang:makeSortKey(classifier)), }}, } end end) return {LABELS = labels2, RAW_CATEGORIES = raw_categories, HANDLERS = handlers} n1xvay9r8epw7ej43u7z7px77d5qbfj Module:list of languages, csv format 828 7390 234938 32743 2026-02-01T02:59:38Z en>Benwing2 0 standardChars -> standard_chars for consistency with other fields 234938 Scribunto text/plain local languages = require("Module:languages/data/all") local families = require("Module:families/data") -- based on Module:list_of_languages local export = {} local filters = {} function export.show(frame) local args = frame.args local filter = filters[args[1]] local ids = args["ids"]; if not ids or ids == "" then ids = false else ids = true end local rows = {} -- Get a list of all language codes local codes = {} for code, _ in pairs(languages) do table.insert(codes, code) end -- Sort the list table.sort(codes) local sep = ";" local minor_sep = "," -- Now go over each code, and create table rows for those that are selected local column_names = { "line", "code", "canonical name", "category", "type", "family code", "family", "sortkey?", "autodetect?", "exceptional?", "script codes", "other names", "standard characters" } for line, code in ipairs(codes) do local data = languages[code] local row = {} local sc = data[4] if type(sc) == "string" then sc = mw.text.split(sc, "%s*,%s*") end -- data[1]: canonical name; data[3]: family code table.insert(row, line) table.insert(row, code) table.insert(row, data[1]) table.insert(row, data[1] .. (data[1]:find("[Ll]anguage$") and "" or " language")) table.insert(row, data.type or "") table.insert(row, data[3] or "") table.insert(row, data[3] and (families[data[3]] and families[data[3]][1] or error(data[3] .. " is not a valid family code (family of " .. code .. ")")) or "") table.insert(row, data.sort_key and "sortkey" or "") table.insert(row, data.entry_name and "autodetect" or "") table.insert(row, code:find("-") and "exceptional" or "") table.insert(row, sc and table.concat(sc, minor_sep) or "") table.insert(row, data.other_names and table.concat(data.other_names, minor_sep) or "") table.insert(row, data.standard_chars and "standard characters" or "") table.insert(rows, table.concat(row, sep)) end return "<pre>\n" .. table.concat(column_names, sep) .. "\n" .. table.concat(rows, "\n") .. "</pre>" end return export 3o334xc4m7u3sgrkdgaf01t2rbgyyid 234939 234938 2026-05-26T07:09:44Z Lee 19 [[:en:Module:list_of_languages,_csv_format]] වෙතින් එක් සංශෝධනයක් 234938 Scribunto text/plain local languages = require("Module:languages/data/all") local families = require("Module:families/data") -- based on Module:list_of_languages local export = {} local filters = {} function export.show(frame) local args = frame.args local filter = filters[args[1]] local ids = args["ids"]; if not ids or ids == "" then ids = false else ids = true end local rows = {} -- Get a list of all language codes local codes = {} for code, _ in pairs(languages) do table.insert(codes, code) end -- Sort the list table.sort(codes) local sep = ";" local minor_sep = "," -- Now go over each code, and create table rows for those that are selected local column_names = { "line", "code", "canonical name", "category", "type", "family code", "family", "sortkey?", "autodetect?", "exceptional?", "script codes", "other names", "standard characters" } for line, code in ipairs(codes) do local data = languages[code] local row = {} local sc = data[4] if type(sc) == "string" then sc = mw.text.split(sc, "%s*,%s*") end -- data[1]: canonical name; data[3]: family code table.insert(row, line) table.insert(row, code) table.insert(row, data[1]) table.insert(row, data[1] .. (data[1]:find("[Ll]anguage$") and "" or " language")) table.insert(row, data.type or "") table.insert(row, data[3] or "") table.insert(row, data[3] and (families[data[3]] and families[data[3]][1] or error(data[3] .. " is not a valid family code (family of " .. code .. ")")) or "") table.insert(row, data.sort_key and "sortkey" or "") table.insert(row, data.entry_name and "autodetect" or "") table.insert(row, code:find("-") and "exceptional" or "") table.insert(row, sc and table.concat(sc, minor_sep) or "") table.insert(row, data.other_names and table.concat(data.other_names, minor_sep) or "") table.insert(row, data.standard_chars and "standard characters" or "") table.insert(rows, table.concat(row, sep)) end return "<pre>\n" .. table.concat(column_names, sep) .. "\n" .. table.concat(rows, "\n") .. "</pre>" end return export 3o334xc4m7u3sgrkdgaf01t2rbgyyid වික්ෂනරි:List of languages, csv format 4 8055 234936 28959 2026-01-20T14:05:32Z en>Juwan 0 234936 wikitext text/x-wiki {{hatnote|For a list of etymology-only languages, see [[Wiktionary:Etymology-only languages, csv format]].}} {{shortcut|WT:LOL/CSV}} For scripts and bot writers: the list is generated by [[Module:list of languages, csv format]]. '''Note:''' The preferred export format is [[JSON]]. Please use [[Module:JSON data]] for a more robust export of Wiktionary data on languages, scripts{{,}} and language families. '''Beta:''' Columns subject to change. Does not currently include etymology-only languages. ==List of languages== {{#invoke:list of languages, csv format|show}} ==See also== * [[Wiktionary:List of languages]], a human-readable table gf1gy15hp8kqsxgbr1civtg15qwpenp 234937 234936 2026-05-26T07:08:32Z Lee 19 [[:en:Wiktionary:List_of_languages,_csv_format]] වෙතින් එක් සංශෝධනයක් 234936 wikitext text/x-wiki {{hatnote|For a list of etymology-only languages, see [[Wiktionary:Etymology-only languages, csv format]].}} {{shortcut|WT:LOL/CSV}} For scripts and bot writers: the list is generated by [[Module:list of languages, csv format]]. '''Note:''' The preferred export format is [[JSON]]. Please use [[Module:JSON data]] for a more robust export of Wiktionary data on languages, scripts{{,}} and language families. '''Beta:''' Columns subject to change. Does not currently include etymology-only languages. ==List of languages== {{#invoke:list of languages, csv format|show}} ==See also== * [[Wiktionary:List of languages]], a human-readable table gf1gy15hp8kqsxgbr1civtg15qwpenp Module:es-headword 828 8631 234914 228674 2026-05-25T13:37:42Z Lee 19 [[nóvel]], [[:ප්‍රවර්ගය:ස්පාඤ්ඤ epicene adjectives]] සිට [[:ප්‍රවර්ගය:ස්පාඤ්ඤ උභයලිංගික නාම විශේෂණ පද]] වෙතට යොමු කිරීම 234914 Scribunto text/plain local m_sinhala = require("Module:sinhala") local export = {} local pos_functions = {} local force_cat = false -- for testing; if true, categories appear in non-mainspace pages local rfind = mw.ustring.find local rmatch = mw.ustring.match local require_when_needed = require("Module:utilities/require when needed") local m_table = require("Module:table") local com = require("Module:es-common") local en_utilities_module = "Module:en-utilities" local es_verb_module = "Module:es-verb" local headword_module = "Module:headword" local headword_utilities_module = "Module:headword utilities" local inflection_utilities_module = "Module:inflection utilities" local romut_module = "Module:romance utilities" local m_en_utilities = require_when_needed(en_utilities_module) local m_headword_utilities = require_when_needed(headword_utilities_module) local m_string_utilities = require_when_needed("Module:string utilities") local glossary_link = require_when_needed(headword_utilities_module, "glossary_link") local lang = require("Module:languages").getByCode("es") local langname = lang:getCanonicalName() local insert = table.insert local remove = table.remove local rsub = com.rsub local sort = table.sort local ulower = mw.ustring.lower local usub = mw.ustring.sub local uupper = mw.ustring.upper local function track(page) require("Module:debug").track("es-headword/" .. page) return true end local list_param = {list = true, disallow_holes = true} local boolean_param = {type = "boolean"} -- The main entry point. -- This is the only function that can be invoked from a template. function export.show(frame) local poscat = frame.args[1] or error("Part of speech has not been specified. Please pass parameter 1 to the module invocation.") local parargs = frame:getParent().args local params = { ["head"] = list_param, ["id"] = true, ["splithyph"] = boolean_param, ["nolink"] = boolean_param, ["nolinkhead"] = {alias_of = "nolink"}, ["json"] = boolean_param, ["pagename"] = true, -- for testing } if pos_functions[poscat] then for key, val in pairs(pos_functions[poscat].params) do params[key] = val end end local args = require("Module:parameters").process(parargs, params) local pagename = args.pagename or mw.loadData("Module:headword/data").pagename local user_specified_heads = args.head local heads = user_specified_heads if args.nolink then if #heads == 0 then heads = {pagename} end else local romut = require(romut_module) local auto_linked_head = romut.add_links_to_multiword_term(pagename, args.splithyph) if #heads == 0 then heads = {auto_linked_head} else for i, head in ipairs(heads) do if head:find("^~") then head = romut.apply_link_modifiers(auto_linked_head, usub(head, 2)) heads[i] = head end end end end local data = { lang = lang, pos_category = pos_functions[poscat] and pos_functions[poscat].pos_category or poscat, categories = {}, heads = heads, user_specified_heads = user_specified_heads, no_redundant_head_cat = #user_specified_heads == 0, genders = {}, inflections = {}, pagename = pagename, id = args.id, force_cat_output = force_cat, checkredlinks = pos_functions[poscat] and pos_functions[poscat].redlink_pos or true, } if pagename:find("^%-") and poscat ~= "suffix forms" then data.is_suffix = true data.pos_category = "suffixes" data.checkredlinks = true local singular_poscat = m_en_utilities.singularize(poscat) insert(data.categories, langname .. " " .. singular_poscat .. "-forming suffixes") insert(data.inflections, {label = singular_poscat .. "-forming suffix"}) end local pagename_lower = ulower(pagename) for _, ch in ipairs{"jh", "kh", "ph", "qü", "sh", "th", "tl", "ts", "tz", "wh", "zh", "ze", "zi"} do if pagename_lower:find(ch) then insert(data.categories, langname .. " terms spelled with " .. uupper(ch)) end end if pos_functions[poscat] then pos_functions[poscat].func(args, data) end if args.json then return require("Module:JSON").toJSON(data) end return require(headword_module).full_headword(data) end ----------------------------------------------------------------------------------------- -- Utility functions -- ----------------------------------------------------------------------------------------- local function replace_hash_with_lemma(term, lemma) -- If there is a % sign in the lemma, we have to replace it with %% so it doesn't get interpreted as a capture -- replace expression. lemma = m_string_utilities.replacement_escape(lemma) return (term:gsub("#", lemma)) -- discard second retval end -- Parse and insert an inflection not requiring additional processing into `data.inflections`. The raw arguments come -- from `args[field]`, which is parsed for inline modifiers. `label` is the label that the inflections are given; -- `accel` is the accelerator form, or nil. local function parse_and_insert_inflection(data, args, field, label, accel) m_headword_utilities.parse_and_insert_inflection { headdata = data, forms = args[field], paramname = field, splitchar = ",", label = label, accel = accel and {form = accel} or nil, } end -- Insert default plurals generated when a given plural had the value of + and default plurals were fetched as a result. -- `plobj` is the parsed object whose `term` field is "+". `defpls` is the list of default plurals. `dest` is the list -- into which the plurals are inserted (which inherit their qualifiers and labels from `plobj`). local function insert_defpls(defpls, plobj, dest) if not defpls then -- Happens e.g. with [[S.A.]] where the default plural algorithm returns nothing. return end if #defpls == 1 then plobj.term = defpls[1] insert(dest, plobj) else for _, defpl in ipairs(defpls) do local newplobj = m_table.shallowCopy(plobj) newplobj.term = defpl insert(dest, newplobj) end end end ----------------------------------------------------------------------------------------- -- Adjectives -- ----------------------------------------------------------------------------------------- local function do_adjective(args, data, is_superlative) local feminines = {} local masculine_plurals = {} local feminine_plurals = {} -- Use "participle" not "past participle" for categories such as 'invariable participles' local category_plpos = data.checkredlinks if category_plpos == true then category_plpos = data.pos_category end local category_pos = m_en_utilities.singularize(category_plpos) if args.sp then local romut = require(romut_module) if not romut.allowed_special_indicators[args.sp] then local indicators = {} for indic, _ in pairs(romut.allowed_special_indicators) do insert(indicators, "'" .. indic .. "'") end sort(indicators) error("Special inflection indicator beginning can only be " .. mw.text.listToText(indicators) .. ": " .. args.sp) end end local lemma = data.pagename local function fetch_inflections(field) local retval = m_headword_utilities.parse_term_list_with_modifiers { paramname = field, forms = args[field], splitchar = ",", } if not retval[1] then return {{term = "+"}} end return retval end local function insert_inflection(terms, label, accel) m_headword_utilities.insert_inflection { headdata = data, terms = terms, label = label, accel = accel and {form = accel} or nil, } end if args.inv then -- invariable adjective insert(data.inflections, {label = glossary_link("invariable")}) insert(data.categories, langname .. " indeclinable " .. category_plpos) if args.sp or args.f[1] or args.pl[1] or args.mpl[1] or args.fpl[1] then error("Can't specify inflections with an invariable " .. category_pos) end elseif args.fonly then -- feminine-only if args.f[1] then error("Can't specify explicit feminines with feminine-only " .. category_pos) end if args.pl[1] then error("Can't specify explicit plurals with feminine-only " .. category_pos .. ", use fpl=") end if args.mpl[1] then error("Can't specify explicit masculine plurals with feminine-only " .. category_pos) end local argsfpl = fetch_inflections("fpl") for _, fpl in ipairs(argsfpl) do if fpl.term == "+" then -- Generate default feminine plural. local defpls = com.make_plural(lemma, "f", args.sp) if not defpls then error("Unable to generate default plural of '" .. lemma .. "'") end insert_defpls(defpls, fpl, feminine_plurals) else fpl.term = replace_hash_with_lemma(fpl.term, lemma) insert(feminine_plurals, fpl) end end insert(data.inflections, {label = "feminine-only"}) insert_inflection(feminine_plurals, "feminine plural", "f|p") else -- Gather feminines. for _, f in ipairs(fetch_inflections("f")) do if f.term == "+" then -- Generate default feminine. f.term = com.make_feminine(lemma, args.sp) else f.term = replace_hash_with_lemma(f.term, lemma) end insert(feminines, f) end local fem_like_lemma = #feminines == 1 and feminines[1].term == lemma and not m_headword_utilities.termobj_has_qualifiers_or_labels(feminines[1]) if fem_like_lemma then insert(data.categories, langname .. " උභයලිංගික " .. m_sinhala.sinhala(category_plpos)) end local mpl_field = "mpl" local fpl_field = "fpl" if args.pl[1] then if args.mpl[1] or args.fpl[1] then error("Can't specify both pl= and mpl=/fpl=") end mpl_field = "pl" fpl_field = "pl" end local argsmpl = fetch_inflections(mpl_field) local argsfpl = fetch_inflections(fpl_field) for _, mpl in ipairs(argsmpl) do if mpl.term == "+" then -- Generate default masculine plural. local defpls = com.make_plural(lemma, "m", args.sp) if not defpls then error("Unable to generate default plural of '" .. lemma .. "'") end insert_defpls(defpls, mpl, masculine_plurals) else mpl.term = replace_hash_with_lemma(mpl.term, lemma) insert(masculine_plurals, mpl) end end for _, fpl in ipairs(argsfpl) do if fpl.term == "+" then for _, f in ipairs(feminines) do -- Generate default feminine plural; f is a table. local defpls = com.make_plural(f.term, "f", args.sp) if not defpls then error("Unable to generate default plural of '" .. f.term .. "'") end for _, defpl in ipairs(defpls) do local fplobj = m_table.shallowCopy(fpl) fplobj.term = defpl m_headword_utilities.combine_termobj_qualifiers_labels(fplobj, f) insert(feminine_plurals, fplobj) end end else fpl.term = replace_hash_with_lemma(fpl.term, lemma) insert(feminine_plurals, fpl) end end parse_and_insert_inflection(data, args, "mapoc", "masculine singular before a noun") local fem_pl_like_masc_pl = masculine_plurals[1] and feminine_plurals[1] and m_table.deepEquals(masculine_plurals, feminine_plurals) local masc_pl_like_lemma = #masculine_plurals == 1 and masculine_plurals[1].term == lemma and not m_headword_utilities.termobj_has_qualifiers_or_labels(masculine_plurals[1]) if fem_like_lemma and fem_pl_like_masc_pl and masc_pl_like_lemma then -- actually invariable insert(data.inflections, {label = glossary_link("invariable")}) insert(data.categories, langname .. " indeclinable " .. category_plpos) else -- Make sure there are feminines given and not same as lemma. if not fem_like_lemma then insert_inflection(feminines, "feminine", "f|s") elseif args.gneut then data.genders = {"gneut"} else data.genders = {"mf"} end if fem_pl_like_masc_pl then if args.gneut then insert_inflection(masculine_plurals, "plural", "p") else insert_inflection(masculine_plurals, "masculine and feminine plural", "p") end else insert_inflection(masculine_plurals, "masculine plural", "m|p") insert_inflection(feminine_plurals, "feminine plural", "f|p") end end end parse_and_insert_inflection(data, args, "comp", "comparative") parse_and_insert_inflection(data, args, "sup", "superlative") parse_and_insert_inflection(data, args, "dim", "diminutive") parse_and_insert_inflection(data, args, "aug", "augmentative") if args.irreg and is_superlative then insert(data.categories, langname .. " irregular superlative " .. category_plpos) end end local function get_adjective_params(adjtype) local params = { ["inv"] = boolean_param, --invariable ["sp"] = true, -- special indicator: "first", "first-last", etc. } local function ins_infl(field) params[field] = list_param --feminine form(s) end ins_infl("f") -- feminine form(s) ins_infl("pl") -- plural override(s) ins_infl("mpl") -- masculine plural override(s) ins_infl("fpl") -- feminine plural override(s) if adjtype == "base" then ins_infl("mapoc") --masculine apocopated (before a noun) ins_infl("comp") --comparative(s) ins_infl("sup") --superlative(s) ins_infl("dim") --diminutive(s) ins_infl("aug") --augmentative(s) params["fonly"] = boolean_param -- feminine only params["gneut"] = boolean_param -- gender-neutral adjective e.g. [[latine]] params["hascomp"] = true -- has comparative end if adjtype == "sup" then params["irreg"] = boolean_param end return params end pos_functions["adjectives"] = { params = get_adjective_params("base"), func = do_adjective, } pos_functions["past participles"] = { params = get_adjective_params("part"), func = do_adjective, redlink_pos = "participles", } pos_functions["determiners"] = { params = get_adjective_params("det"), func = do_adjective, } pos_functions["pronouns"] = { params = get_adjective_params("pron"), func = do_adjective, } pos_functions["comparative adjectives"] = { params = get_adjective_params("comp"), func = do_adjective, pos_category = "adjectives", } pos_functions["superlative adjectives"] = { params = get_adjective_params("sup"), func = function(args, data) do_adjective(args, data, true) end, pos_category = "adjectives", } ----------------------------------------------------------------------------------------- -- Adverbs -- ----------------------------------------------------------------------------------------- pos_functions["adverbs"] = { params = { ["sup"] = list_param, --superlative(s) }, func = function(args, data) parse_and_insert_inflection(data, args, "sup", "superlative") end, } ----------------------------------------------------------------------------------------- -- Numerals -- ----------------------------------------------------------------------------------------- pos_functions["cardinal numbers"] = { params = { ["f"] = list_param, --feminine(s) ["mapoc"] = list_param, --masculine apocopated form(s) }, func = function(args, data) insert(data.categories, 1, langname .. " cardinal numbers") if args.f[1] then insert(data.genders, "m") parse_and_insert_inflection(data, args, "f", "feminine") end parse_and_insert_inflection(data, args, "mapoc", "masculine before a noun") end, pos_category = "numerals", } ----------------------------------------------------------------------------------------- -- Nouns -- ----------------------------------------------------------------------------------------- local allowed_genders = m_table.listToSet( {"m", "f", "mf", "mfbysense", "mfequiv", "gneut", "n", "m-p", "f-p", "mf-p", "mfbysense-p", "mfequiv-p", "gneut-p", "n-p", "?", "?-p"} ) local function validate_genders(genders) for _, g in ipairs(genders) do if type(g) == "table" then g = g.spec end if not allowed_genders[g] then error("Unrecognized gender: " .. g) end end end -- Display additional inflection information for a noun local function do_noun(args, data, is_proper) local is_plurale_tantum = false local has_singular = false local category_plpos = data.checkredlinks if category_plpos == true then category_plpos = data.pos_category end local category_pos = m_en_utilities.singularize(category_plpos) validate_genders(args[1]) data.genders = args[1] local saw_m = false local saw_f = false local saw_gneut = false local gender_for_irreg_ending, gender_for_make_plural -- Check for specific genders and pluralia tantum. for _, g in ipairs(args[1]) do if type(g) == "table" then g = g.spec end if g:find("-p$") then is_plurale_tantum = true else has_singular = true if g == "m" or g == "mf" or g == "mfbysense" then saw_m = true end if g == "f" or g == "mf" or g == "mfbysense" then saw_f = true end if g == "gneut" then saw_gneut = true end end end if saw_m and saw_f then gender_for_irreg_ending = "mf" elseif saw_f then gender_for_irreg_ending = "f" else gender_for_irreg_ending = "m" end gender_for_make_plural = saw_gneut and "gneut" or gender_for_irreg_ending local lemma = data.pagename local plurals = {} if is_plurale_tantum and not has_singular then if args[2][1] then error("Can't specify plurals of plurale tantum " .. category_pos) end insert(data.inflections, {label = glossary_link("plural only")}) else plurals = m_headword_utilities.parse_term_list_with_modifiers { paramname = {2, "pl"}, forms = args[2], splitchar = ",", } -- Check for special plural signals local mode = nil local pl1 = plurals[1] if pl1 and #pl1.term == 1 then mode = pl1.term if mode == "?" or mode == "!" or mode == "-" or mode == "~" then pl1.term = nil if next(pl1) then error(("Can't specify inline modifiers with plural code '%s'"):format(mode)) end remove(plurals, 1) -- Remove the mode parameter elseif mode ~= "+" and mode ~= "#" then error(("Unexpected plural code '%s'"):format(mode)) end end if mode == "?" then -- Plural is unknown insert(data.categories, langname .. " " .. category_plpos .. " with unknown or uncertain plurals") elseif mode == "!" then -- Plural is not attested insert(data.inflections, {label = "plural not attested"}) insert(data.categories, langname .. " " .. category_plpos .. " with unattested plurals") if plurals[1] then error("Can't specify any plurals along with unattested plural code '!'") end elseif mode == "-" then -- Uncountable noun; may occasionally have a plural insert(data.categories, langname .. " uncountable " .. category_plpos) -- If plural forms were given explicitly, then show "usually" if plurals[1] then insert(data.inflections, {label = "usually " .. glossary_link("uncountable")}) insert(data.categories, ("%s %s"):format(langname, m_sinhala.sinhala("countable " .. category_plpos))) else insert(data.inflections, {label = glossary_link("uncountable")}) end else -- Countable or mixed countable/uncountable if not plurals[1] and not is_proper then plurals[1] = {term = "+"} end if mode == "~" then -- Mixed countable/uncountable noun, always has a plural insert(data.inflections, {label = glossary_link("countable") .. " and " .. glossary_link("uncountable")}) insert(data.categories, langname .. " uncountable " .. category_plpos) insert(data.categories, ("%s %s"):format(langname, m_sinhala.sinhala("countable " .. category_plpos))) elseif plurals[1] then -- Countable nouns insert(data.categories, ("%s %s"):format(langname, m_sinhala.sinhala("countable " .. category_plpos))) else -- Uncountable nouns insert(data.categories, langname .. " uncountable " .. category_plpos) end end -- Gather plurals, handling requests for default plurals. local has_default_or_hash = false for _, pl in ipairs(plurals) do if pl.term:find("^%+") or pl.term:find("#") then has_default_or_hash = true break end end if has_default_or_hash then local newpls = {} for _, pl in ipairs(plurals) do if pl.term == "+" then local default_pls = com.make_plural(lemma, gender_for_make_plural) insert_defpls(default_pls, pl, newpls) elseif pl.term:find("^%+") then pl.term = require(romut_module).get_special_indicator(pl.term) local default_pls = com.make_plural(lemma, gender_for_make_plural, pl.term) insert_defpls(default_pls, pl, newpls) else pl.term = replace_hash_with_lemma(pl.term, lemma) insert(newpls, pl) end end plurals = newpls end end if #plurals > 1 then insert(data.categories, langname .. " " .. category_plpos .. " with multiple plurals") end -- Gather masculines/feminines. For each one, generate the corresponding plural(s). `field` is the name of the -- field containing the masculine or feminine forms (normally "m" or "f"); `gender` is "m" or "f" for the gender -- of the forms; `inflect` is a function of one or two arguments to generate the default masculine or feminine from -- the lemma (the arguments are the lemma and optionally a "special" flag to indicate how to handle multiword -- lemmas, and the function is normally make_feminine or make_masculine from [[Module:es-common]]); and -- `default_plurals` is a list into which the corresponding default plurals of the gathered or generated masculine -- or feminine forms are stored. Note that there may be more default plurals than masculines or feminines, because -- some terms have multiple possible plurals. local function handle_mf(field, gender, inflect, default_plurals) local mfs = m_headword_utilities.parse_term_list_with_modifiers { paramname = field, forms = args[field], splitchar = ",", frob = function(term) if term == "+" then -- Generate default masculine/feminine. term = inflect(lemma) else term = replace_hash_with_lemma(term, lemma) end local special = require(romut_module).get_special_indicator(term) if special then term = inflect(lemma, special) end return term end } for _, mf in ipairs(mfs) do local mfpls = com.make_plural(mf.term, gender, special) if mfpls then for _, mfpl in ipairs(mfpls) do local plobj = m_table.shallowCopy(mf) plobj.term = mfpl -- Add an accelerator for each masculine/feminine plural whose lemma -- is the corresponding singular, so that the accelerated entry -- that is generated has a definition that looks like -- # {{plural of|es|MFSING}} plobj.accel = {form = "p", lemma = mf.term} insert(default_plurals, plobj) end end end return mfs end local feminine_plurals = {} local feminines = handle_mf("f", "f", com.make_feminine, feminine_plurals) local masculine_plurals = {} local masculines = handle_mf("m", "m", com.make_masculine, masculine_plurals) local function handle_mf_plural(mfplfield, gender, default_plurals, singulars) local mfpl = m_headword_utilities.parse_term_list_with_modifiers { paramname = mfplfield, forms = args[mfplfield], splitchar = ",", } local new_mfpls = {} local saw_plus for i, mfpl in ipairs(mfpl) do local accel if #mfpl == #singulars then -- If same number of overriding masculine/feminine plurals as singulars, -- assume each plural goes with the corresponding singular -- and use each corresponding singular as the lemma in the accelerator. -- The generated entry will have # {{plural of|es|SINGULAR}} as the -- definition. accel = {form = "p", lemma = singulars[i].term} else accel = nil end if mfpl.term == "+" then -- We should never see + twice. If we do, it will lead to problems since we overwrite the values of -- default_plurals the first time around. if saw_plus then error(("Saw + twice when handling %s="):format(mfplfield)) end saw_plus = true for _, defpl in ipairs(default_plurals) do -- defpl is already a table and has an accel field m_headword_utilities.combine_termobj_qualifiers_labels(defpl, mfpl) insert(new_mfpls, defpl) end elseif mfpl.term:find("^%+") then mfpl.term = require(romut_module).get_special_indicator(mfpl.term) for _, mf in ipairs(singulars) do local default_mfpls = com.make_plural(mf.term, gender, mfpl.term) for _, defp in ipairs(default_mfpls) do local mfplobj = m_table.shallowCopy(mfpl) mfplobj.term = defp mfplobj.accel = accel m_headword_utilities.combine_termobj_qualifiers_labels(mfplobj, mf) insert(new_mfpls, mfplobj) end end else mfpl.accel = accel mfpl.term = replace_hash_with_lemma(mfpl.term, lemma) insert(new_mfpls, mfpl) end end return new_mfpls end if args.fpl[1] then -- Override any existing feminine plurals. feminine_plurals = handle_mf_plural("fpl", "f", feminine_plurals, feminines) end if args.mpl[1] then -- Override any existing masculine plurals. masculine_plurals = handle_mf_plural("mpl", "m", masculine_plurals, masculines) end local function parse_and_insert_noun_inflection(field, label, accel) parse_and_insert_inflection(data, args, field, label, accel) end local function insert_noun_inflection(terms, label, accel) m_headword_utilities.insert_inflection { headdata = data, terms = terms, label = label, accel = accel and {form = accel} or nil, } end insert_noun_inflection(plurals, "plural", "p") insert_noun_inflection(feminines, "feminine", "f") insert_noun_inflection(feminine_plurals, "feminine plural") insert_noun_inflection(masculines, "masculine") insert_noun_inflection(masculine_plurals, "masculine plural") parse_and_insert_noun_inflection("dim", "diminutive") parse_and_insert_noun_inflection("aug", "augmentative") parse_and_insert_noun_inflection("pej", "pejorative") parse_and_insert_noun_inflection("dem", "demonym") parse_and_insert_noun_inflection("fdem", "female demonym") -- Maybe add category 'Spanish nouns with irregular gender' (or similar) local irreg_gender_lemma = rsub(lemma, " .*", "") -- only look at first word if (rfind(irreg_gender_lemma, "o$") and (gender_for_irreg_ending == "f" or gender_for_irreg_ending == "mf")) or (irreg_gender_lemma:find("a$") and (gender_for_irreg_ending == "m" or gender_for_irreg_ending == "mf")) then insert(data.categories, langname .. " nouns with irregular gender") end end local function get_noun_params(is_proper) return { [1] = {list = "g", disallow_holes = true, required = not is_proper, default = "?", type = "genders", flatten = true}, -- gender(s) [2] = {list = "pl", disallow_holes = true}, --plural override(s) ["f"] = list_param, --feminine form(s) ["m"] = list_param, --masculine form(s) ["fpl"] = list_param, --feminine plural override(s) ["mpl"] = list_param, --masculine plural override(s) ["dim"] = list_param, --diminutive(s) ["aug"] = list_param, --diminutive(s) ["pej"] = list_param, --pejorative(s) ["dem"] = list_param, --demonym(s) ["fdem"] = list_param, --female demonym(s) } end pos_functions["nouns"] = { params = get_noun_params(), func = do_noun, } pos_functions["proper nouns"] = { params = get_noun_params("is proper"), func = function(args, data) do_noun(args, data, "is proper") end, } ----------------------------------------------------------------------------------------- -- Verbs -- ----------------------------------------------------------------------------------------- pos_functions["verbs"] = { params = { [1] = {}, ["pres"] = list_param, --present ["pres_qual"] = {list = "pres\1_qual", allow_holes = true}, ["pret"] = list_param, --preterite ["pret_qual"] = {list = "pret\1_qual", allow_holes = true}, ["part"] = list_param, --participle ["part_qual"] = {list = "part\1_qual", allow_holes = true}, ["pagename"] = {}, -- for testing ["noautolinktext"] = boolean_param, ["noautolinkverb"] = boolean_param, ["attn"] = boolean_param, }, func = function(args, data) local preses, prets, parts if args.attn then insert(data.categories, "Requests for attention concerning " .. langname) return end local es_verb = require(es_verb_module) local alternant_multiword_spec = es_verb.do_generate_forms(args, "es-verb", data.heads[1]) local specforms = alternant_multiword_spec.forms local function slot_exists(slot) return specforms[slot] and specforms[slot][1] end local function do_finite(slot_tense, label_tense) -- Use pres_3s if it exists and pres_1s doesn't exist (e.g. impersonal verbs); similarly for pres_3p (only3p verbs); -- but fall back to pres_1s if neither pres_1s nor pres_3s nor pres_3p exist (e.g. [[empedernir]]). local has_1s = slot_exists(slot_tense .. "_1s") local has_3s = slot_exists(slot_tense .. "_3s") local has_3p = slot_exists(slot_tense .. "_3p") if has_1s or (not has_3s and not has_3p) then return { slot = slot_tense .. "_1s", label = ("first-person singular %s"):format(label_tense), } elseif has_3s then return { slot = slot_tense .. "_3s", label = ("third-person singular %s"):format(label_tense), } else return { slot = slot_tense .. "_3p", label = ("third-person plural %s"):format(label_tense), } end end preses = do_finite("pres", "present") prets = do_finite("pret", "preterite") parts = { slot = "pp_ms", label = "past participle", } if args.pres[1] or args.pret[1] or args.part[1] then track("verb-old-multiarg") end local function strip_brackets(qualifiers) if not qualifiers then return nil end local stripped_qualifiers = {} for _, qualifier in ipairs(qualifiers) do local stripped_qualifier = qualifier:match("^%[(.*)%]$") if not stripped_qualifier then error("Internal error: Qualifier should be surrounded by brackets at this stage: " .. qualifier) end insert(stripped_qualifiers, stripped_qualifier) end return stripped_qualifiers end local function do_verb_form(args, qualifiers, slot_desc, skip_if_empty) local forms local to_insert if #args == 0 then forms = specforms[slot_desc.slot] if not forms or #forms == 0 then if skip_if_empty then return end forms = {{form = "-"}} end elseif #args == 1 and args[1] == "-" then forms = {{form = "-"}} else forms = {} for i, arg in ipairs(args) do local qual = qualifiers[i] if qual then -- FIXME: It's annoying we have to add brackets and strip them out later. The inflection -- code adds all footnotes with brackets around them; we should change this. qual = {"[" .. qual .. "]"} end local form = arg if not args.noautolinkverb then -- [[Module:inflection utilities]] already loaded by [[Module:es-verb]] form = require(inflection_utilities_module).add_links(form) end insert(forms, {form = form, footnotes = qual}) end end if forms[1].form == "-" then to_insert = {label = "no " .. slot_desc.label} else local into_table = {label = slot_desc.label} for _, form in ipairs(forms) do local qualifiers = strip_brackets(form.footnotes) -- Strip redundant brackets surrounding entire form. These may get generated e.g. -- if we use the angle bracket notation with a single word. local stripped_form = rmatch(form.form, "^%[%[([^%[%]]*)%]%]$") or form.form -- Don't include accelerators if brackets remain in form, as the result will be wrong. -- FIXME: For now, don't include accelerators. We should use {{es-verb form of}} instead. -- local this_accel = not stripped_form:find("%[%[") and accel or nil local this_accel = nil insert(into_table, {term = stripped_form, q = qualifiers, accel = this_accel}) end to_insert = into_table end insert(data.inflections, to_insert) end local skip_pres_if_empty if alternant_multiword_spec.no_pres1_and_sub then insert(data.inflections, {label = "no first-person singular present"}) insert(data.inflections, {label = "no present subjunctive"}) end if alternant_multiword_spec.no_pres_stressed then insert(data.inflections, {label = "no stressed present indicative or subjunctive"}) skip_pres_if_empty = true end if alternant_multiword_spec.only3s then insert(data.inflections, {label = glossary_link("impersonal")}) elseif alternant_multiword_spec.only3sp then insert(data.inflections, {label = "third-person only"}) elseif alternant_multiword_spec.only3p then insert(data.inflections, {label = "third-person plural only"}) end do_verb_form(args.pres, args.pres_qual, preses, skip_pres_if_empty) do_verb_form(args.pret, args.pret_qual, prets) do_verb_form(args.part, args.part_qual, parts) -- Add categories. for _, cat in ipairs(alternant_multiword_spec.categories) do insert(data.categories, cat) end -- If the user didn't explicitly specify head=, or specified exactly one head (not 2+) and we were able to -- incorporate any links in that head into the 1= specification, use the infinitive generated by -- [[Module:es-verb]] in place of the user-specified or auto-generated head. This was copied from -- [[Module:it-headword]], where doing this gets accents marked on the verb(s). We don't have accents marked on -- the verb but by doing this we do get any footnotes on the infinitive propagated here. Don't do this if the -- user gave multiple heads or gave a head with a multiword-linked verbal expression such as Italian -- '[[dare esca]] [[al]] [[fuoco]]' (FIXME: give Spanish equivalent). if #data.user_specified_heads == 0 or ( #data.user_specified_heads == 1 and alternant_multiword_spec.incorporated_headword_head_into_lemma ) then data.heads = {} for _, lemma_obj in ipairs(alternant_multiword_spec.forms.infinitive_linked) do local quals, refs = require(inflection_utilities_module). convert_footnotes_to_qualifiers_and_references(lemma_obj.footnotes) insert(data.heads, {term = lemma_obj.form, q = quals, refs = refs}) end end end } ----------------------------------------------------------------------------------------- -- Phrases -- ----------------------------------------------------------------------------------------- pos_functions["phrases"] = { params = { ["g"] = {list = true, disallow_holes = true, type = "genders", flatten = true}, ["m"] = list_param, ["f"] = list_param, }, func = function(args, data) validate_genders(args.g) data.genders = args.g parse_and_insert_inflection(data, args, "m", "masculine") parse_and_insert_inflection(data, args, "f", "feminine") end, } ----------------------------------------------------------------------------------------- -- Suffix forms -- ----------------------------------------------------------------------------------------- pos_functions["suffix forms"] = { params = { [1] = {required = true, list = true, disallow_holes = true}, ["g"] = {list = true, disallow_holes = true, type = "genders", flatten = true}, }, func = function(args, data) validate_genders(args.g) data.genders = args.g local suffix_type = {} for _, typ in ipairs(args[1]) do insert(suffix_type, typ .. "-forming suffix") end insert(data.inflections, {label = "non-lemma form of " .. require("Module:table").serialCommaJoin(suffix_type, {conj = "or"})}) end, } return export g4tzkwevar450fcrmnqisvmwd5uj1i2 වික්ෂනරි:Requested entries (සිංහල) 4 11435 234928 37168 2026-05-26T06:57:52Z Lee 19 234928 wikitext text/x-wiki {{shortcut|WT:RE:si}} {{requested entries preamble|si|genders=yes|inflected=yes|scriptname=සිංහල}} ===Requests=== ==අ== * {{l|si|අඩුව}} Noun: lack, deficiency. From {{l|si|අඩු}} Adj: less, deficient, lower. ==ආ== ==ඇ== ==ඈ== ==ඉ== ==ඊ== ==උ== ==ඌ== ==ඍ== ==ඎ== ==එ== *[[එරබදු]] - a tree ==ඒ== ==ඓ== ==ඔ== ==ඕ== ==ඖ== ==ක== ==ඛ== ==ග== ==ඝ== ==ඞ== ==ඟ== ==ච== ==ඡ== ==ජ== ==ඣ== ==ඤ== ==ඥ== ==ඦ== ==ට== ==ඨ== ==ඩ== ==ඪ== ==ණ== ==ඬ== ==ත== ==ථ== ==ද== ==ධ== ==න== ==ඳ== ==ප== * {{l|si|පවතිනවා}} Verb (infinitive): To last ==ඵ== ==බ== ==භ== ==ම== ==ඹ== ==ය== ==ර== ==ල== ==ව== ==ශ== ==ෂ== ==ස== ==හ== ==ළ== ==ෆ== [[de:Wiktionary:Singhalesisch/Wunschliste]] [[en:Wiktionary:Requested entries (Sinhalese)]] do30f21ked3lq0yi71r7rshwfy7504m 234929 234928 2026-05-26T06:58:12Z Lee 19 Lee විසින් [[වික්ෂනරි:Requested entries (Sinhalese)]] සිට [[වික්ෂනරි:Requested entries (සිංහල)]] වෙත පිටුව ගෙන යන ලදී 234928 wikitext text/x-wiki {{shortcut|WT:RE:si}} {{requested entries preamble|si|genders=yes|inflected=yes|scriptname=සිංහල}} ===Requests=== ==අ== * {{l|si|අඩුව}} Noun: lack, deficiency. From {{l|si|අඩු}} Adj: less, deficient, lower. ==ආ== ==ඇ== ==ඈ== ==ඉ== ==ඊ== ==උ== ==ඌ== ==ඍ== ==ඎ== ==එ== *[[එරබදු]] - a tree ==ඒ== ==ඓ== ==ඔ== ==ඕ== ==ඖ== ==ක== ==ඛ== ==ග== ==ඝ== ==ඞ== ==ඟ== ==ච== ==ඡ== ==ජ== ==ඣ== ==ඤ== ==ඥ== ==ඦ== ==ට== ==ඨ== ==ඩ== ==ඪ== ==ණ== ==ඬ== ==ත== ==ථ== ==ද== ==ධ== ==න== ==ඳ== ==ප== * {{l|si|පවතිනවා}} Verb (infinitive): To last ==ඵ== ==බ== ==භ== ==ම== ==ඹ== ==ය== ==ර== ==ල== ==ව== ==ශ== ==ෂ== ==ස== ==හ== ==ළ== ==ෆ== [[de:Wiktionary:Singhalesisch/Wunschliste]] [[en:Wiktionary:Requested entries (Sinhalese)]] do30f21ked3lq0yi71r7rshwfy7504m celsius 0 15554 234916 49136 2026-05-25T13:40:02Z Lee 19 /* නාම විශේෂණ පදය */ 234916 wikitext text/x-wiki {{also|Celsius|célsius}} == ඉංග්‍රීසි == === නාම විශේෂණ පදය === {{en-adj|-}} # {{alternative case form of|en|Celsius}} #* {{quote-journal|en|date=2009 January 13|newsagency=AAP|title=Enviro-friendly fridges|journal=Herald-Sun|url=http://www.news.com.au/heraldsun/story/0,21985,24906791-662,00.html|passage=Fridges switch themselves on and off regularly as they keep their temperature between 2 and 4 degrees '''celsius'''.|access-date=19 January 2009|archiveurl=https://web.archive.org/web/20090909062204/http://www.news.com.au/heraldsun/story/0,21985,24906791-662,00.html|archivedate=9 September 2009}} ===Anagrams=== * {{anagrams|en|a=ceilssu|sluices}} == ෆින්ලන්ත == === නිරුක්තිය === See {{m|fi|Celsius}}; named after {{w|Anders Celsius}} (27 November 1701 – 25 April 1744), a Swedish astronomer, physicist and mathematician. === උච්චාරණය === {{fi-p|selssius|h=cel.si.us|r=elsːius}} === නාම පදය === {{fi-noun}} # {{lb|fi|as modifier in compound terms}} [[Celsius]] #: {{ux|fi|Lämpötila on 10 '''celsius'''astetta.|The temperature is 10 degrees '''Celsius'''.}} # {{lb|fi|nonstandard}} [[Celsius]] {{gloss|relating to the Celsius scale of temperature}} #: {{ux|fi|Lämpötila on 10 astetta '''celsiusta'''.|The temperature is 10 degrees '''Celsius'''.}} ==== වරනැඟීම ==== {{fi-decl-vastaus|celsiu|a}} ====Compounds==== * {{l|fi|celsiusaste}} * {{l|fi|celsiusasteikko}} == ලතින් == === නාම විශේෂණ පදය === {{head|la|adjective form}} # {{inflection of|la|celsior||nom//acc//voc|n|s}} == ස්පාඤ්ඤ == === නාම පදය === {{es-noun|m|-}} # {{alternative form of|es|Celsius}} 27ajpv2vc6367mfa5dsbqzpx6kwoa9v Module:wuu-pron 828 31818 234940 219958 2026-02-11T13:46:56Z en>沈澄心 0 +Fuyang 234940 Scribunto text/plain local export = {} local data = mw.loadData("Module:wuu-pron/data") --[=[ TODO: - do IPA for glottalised nasal intials (currently the glottal stop is dropped) - FIND DATA FOR 3+ SYLLABLE SANDHI AND RPS!!! (we can settle for trisyllabics right) - northern wu data: FIRST PRIORITY should be - CHUANSHA 川沙 (sandhi found in 當代, needs. understanding) - NEW KUNSHAN 崑山新派 (trisyllabic sandhi needed) - HUZHOU 湖州 (trisyllabic sandhi needed) - XIAOSHAN 蕭山 (大西博子 source doesn't exactly line up with wugniu 市志) - CIXI 慈溪 (慈溪方言研究 PDF exists but currently unretrieved, please inform @ND381 if a working PDF is in your possession ASAP!! zia-zia) - any other northern wu points are good!! pls note the source u used in the EDIT SUMMARY if u do add one zia-zia - MODULES for TAIZHOU & WENZHOU → and then we're done (probably) ]=]-- local loc_names = { -- Basic 聲韻調 Disyll LPS Trisyll LPS Quad+ LPS RPS Logic --NORTHERN ['sh'] = 'Shanghai', -- + + + + + + ['jd'] = 'Jiading', -- + + + - - + ['sj'] = 'Songjiang', -- + + + - - + ['cs'] = 'Chuansha', -- + + + - - - ['cm'] = 'Chongming', -- + + + - + + ['sz'] = 'Suzhou', -- + + + + + + ['ks'] = 'Kunshan', -- + + - - - - Wugniu "新派" ['yx'] = 'Yixing', -- + - - - - - ['cz'] = 'Changzhou', -- + + + - - + ['jj'] = 'Jingjiang', -- + + - - - - ['jx'] = 'Jiaxing', -- + + + - - + ['tx'] = 'Tongxiang', -- + + + - - + ['hn'] = 'Haining', -- + + + - + + Xiashi locality ['hy'] = 'Haiyan', -- + + + - - + ['dq'] = 'Deqing', -- + - - - - - ['hz'] = 'Hangzhou', -- + + + + + + ['xs'] = 'Xiaoshan', -- + - - - - - ['fy'] = 'Fuyang', -- + + - - + - ['sx'] = 'Shaoxing', -- + + + - + + ['cx'] = 'Cixi', -- + + - - - - ['nb'] = 'Ningbo', -- + + + - + + ['zs'] = 'Zhoushan', -- + - - - - - -- Jinhua + + + + + + -- TAIZHOU -- Huangyan + + - - - -- Linhai + + - - - -- Sanmen + - - - - -- Tiantai +/- + - - - -- Wenling + + - - - -- Wenzhou need to reconcile differences between sources } -- default to "<loc_name> dialect" if empty -- specifies the name of the Wikipedia article of the lect local wiki_names = { jd = 'Shanghainese#Classification', sj = 'Shanghainese#Classification', cs = 'Shanghainese#Classification', yx = 'Taihu Wu', jj = 'Taihu Wu', jx = 'Taihu Wu', tx = 'Taihu Wu', hn = 'Taihu Wu', hy = 'Taihu Wu', dq = 'Taihu Wu', xs = 'Taihu Wu', fy = 'Taihu Wu', cx = 'Taihu Wu', zs = 'Taihu Wu', } local minidict = { ['sh'] = true, ['jd'] = true, ['cm'] = true, ['sz'] = true, ['cz'] = true, ['jx'] = true, ['hz'] = true, ['sx'] = true, ['nb'] = true } local order = {'sh', 'jd', 'sj', 'cm', 'cs', 'sz', 'ks', 'yx', 'cz', 'jj', 'jx', 'tx', 'hn', 'hy', 'dq', 'hz', 'xs', 'fy', 'sx', 'cx', 'nb', 'zs'} local ipa_initial = { ["p"] = "p", ["ph"] = "pʰ", ["b"] = "b", ["m"] = "m", ["f"] = "f", ["v"] = "v", ["t"] = "t", ["th"] = "tʰ", ["d"] = "d", ["n"] = "n", ["l"] = "l", ["ts"] = "t͡s", ["tsh"] = "t͡sʰ", ["s"] = "s", ["z"] = "z", ["c"] = "t͡ɕ", ["ch"] = "t͡ɕʰ", ["dz"] = "d͡z", ["j"] = "d͡ʑ", ["gn"] = "n̠ʲ", ["sh"] = "ɕ", ["zh"] = "ʑ", ["k"] = "k", ["kh"] = "kʰ", ["g"] = "ɡ", ["ng"] = "ŋ", ["h"] = "h", ["gh"] = "ɦ", [""] = "", } local ipa_initial_override = { --this always takes priority over the table above --additional unique initials can also be defined here --a question mark means the initial does not exist --there must be empty tables for all locations, even if there is nothing there ['sh'] = { ["dz"] = "?" }, ['jd'] = { ["dz"] = "?", ["zh"] = "?" }, ['sj'] = { ["p"] = "ɓ", ["t"] = "ɗ", ["f"] = "ɸ", ["v"] = "β", ["ch"] = "cʰ", ["c"] = "c", ["j"] = "ɟ", ["sh"] = "ç", ["zh"] = "?", ["dz"] = "?" }, ['cm'] = { ["v"] = "fv", ["z"] = "sz", ["zh"] = "ɕʑ", ["gh"] = "hɦ", }, ['cs'] = { ["p"] = "ɓ", ["t"] = "ɗ", ["f"] = "ɸ", ["v"] = "β", ["dz"] = "?" }, ['sz'] = { ["dz"] = "?", ["zh"] = "?" }, ['ks'] = { ["zh"] = "?", ["h"] = "x" }, ['yx'] = { }, ['cz'] = { }, ['jj'] = { }, ['jx'] = { ['dz'] = "?", ["vh"] = "ʔv" }, ['tx'] = { }, ['hn'] = { }, ['hy'] = { ['dz'] = "?" }, ['dq'] = { ['dz'] = "?" }, ['hz'] = { ["zh"] = "?" }, ['xs'] = { }, ['fy'] = { }, ['sx'] = { }, ['cx'] = { }, ['nb'] = { }, ['zs'] = { }, } local function get_initial(initial, loc) return ipa_initial_override[loc][initial] or ipa_initial[initial] or error('Invalid initial: "' .. initial .. '"') end local function get_final(final, loc) return data.ipa_final[loc][final] or error('Invalid final for ' .. loc .. ' : "' .. final .. '"') end local ipa_syllabic = { ["m"] = "m̩", ["n"] = "n̩", ["ng"] = "ŋ̍", } -- diagnose tone error local function diagnose_tones(word_length, loc, text, tone, tone2, tone3) -- the cap on number of syllables local syl_cap = ({sh=5,jd=3,sj=3,cm=3,cs=3,sz=4,ks=2,yx=1,cz=3,jj=2,jx=3,tx=3,hn=3,hy=3,dq=1,hz=5,xs=1,fy=2,cx=2,nb=3,zs=1})[loc] if syl_cap and word_length > syl_cap then error(("Maximum %d syllables supported for %s."):format(syl_cap, loc)) end -- the cap on number of specified tones local tone_cap = ({sj=3,ks=2,cz=3,jx=3,tx=3,hn=3,hy=2})[loc] if tone_cap then local expected = math.min(tone_cap, word_length) local received = 1 + (tone2 ~= '' and 1 or 0) + (tone3 ~= '' and 1 or 0) if received ~= expected then error(('Expected %d tones, but received %d: "%s:%s".'):format(expected, received, loc, text)) end elseif loc == 'sz' or loc == 'sx' then -- sz: tone is 7 or 8, but second tone not provided error("For " .. loc .. ", second tone must be specified.") end error(('Incorrect tone notation "%s" for %s. See [[WT:AZH/Wu]].'):format(tone..tone2..tone3, loc)) end local function tone_superscript(text) return text:gsub('[1-5]',{['1']='¹',['2']='²',['3']='³',['4']='⁴',['5']='⁵'}) end local function get_tone(text, loc) local word_length = text:gsub("[^ ]+", ""):len() + 1 local tone, tone2, tone3 = text:match("^(.%u*)%w+ ?(%d?%u?)%w* ?(%d?%u?)") if loc == "jx" and tone == "3" then tone = text:find("^3[ptkc]s?h") and "3B" or "3A" elseif loc == "cm" then local result = nil if tone:find("[MP]") then -- Verb + Motion / Verb + Pronoun if word_length ~= 2 then error("cm: Unsupported word length.") end result = data.tone_contours[loc][tone] or error("cm: Wrong motion/pronoun format.") elseif tone:find("R",1,true) then -- Reduplication local main_tone, redup_type, word, sub_tone = text:match("^(%d)R([VCN])(%l+) (%d)%3$") main_tone, sub_tone = tonumber(main_tone), tonumber(sub_tone) local conv_tone = (redup_type == "N" and main_tone%2==0 and word:find("^g?[mnl]") and main_tone-1) or main_tone if sub_tone ~= conv_tone then error("cm: Wrong reduplication format.") end result = data.tone_contours[loc]["R"..redup_type..main_tone] end if result then return tone_superscript(result) end elseif loc == "sx" and tone:find("^%dA$") then return tone_superscript(data.tone_contours[loc][tone]) elseif loc == "cs" and word_length == 3 then tone2 = "" end local result = data.tone_contours[loc][word_length..tone..tone2..tone3] or data.tone_contours[loc][word_length..tone..tone2] or data.tone_contours[loc][word_length..tone] if result == nil and loc == "sx" then local first_tone = { ["1"] = "33", ["2"] = "11", ["3"] = "335", ["4"] = "115", ["5"] = "33", ["6"] = "11", ["7"] = "3", ["8"] = "1" } local middle_tone = { ["nc"] = { ["1"] = "55", ["2"] = "55", ["3"] = "55", ["4"] = "55", ["5"] = "33", ["6"] = "11", ["7"] = "55", ["8"] = "55" }, ["c"] = { ["1"] = "5", ["2"] = "5", ["3"] = "5", ["4"] = "5", ["5"] = "3", ["6"] = "1", ["7"] = "5", ["8"] = "5" } } local last_tone = { ["nc"] = { ["1"] = "52", ["2"] = "52", ["3"] = "52", ["4"] = "52", ["5"] = "33", ["6"] = "11", ["7"] = "52", ["8"] = "52" }, ["c"] = { ["1"] = "54", ["2"] = "54", ["3"] = "54", ["4"] = "54", ["5"] = "3", ["6"] = "1", ["7"] = "54", ["8"] = "54" } } local first = text:match("^(%d)%w+ ") local middle = text:gsub("^(%d)%w+ ", ""):gsub(" (%d)%w+$", "") local last = text:match(" (%d)%w+$") result = first_tone[first] local checked = "" for c in middle:gmatch("(%d)%w+") do if c:match("[123456]") then checked = "nc" elseif c:match("[78]") then checked = "c" end result = result .. " " .. middle_tone[checked][first] end if last:match("[123456]") then checked = "nc" elseif last:match("[78]") then checked = "c" end result = result .. " " .. last_tone[checked][first] end return result and tone_superscript(result) or diagnose_tones(word_length, loc, text, tone, tone2, tone3) end local function RPS_tone_determ(word_length, tone, loc) local result if word_length == 1 then result = data.tone_contours[loc][tone .. "s"] or data.tone_contours[loc]['s'] else result = data.tone_contours[loc]["multiple"] end return tone_superscript(result) end local function rom_check(text, locs) --this checks wugniu if text:match("%f[%l']['qx]") or text:match('ny') or text:match('hh') or text:match("h$") then error('Invalid syllable: ' .. text ..'. Wugniu expected, but another romanisation is being provided.') end if text:match('ghi') and locs ~= 'cm' then error('Invalid initial "ghi". Use "yi" instead.') end if text:match('ghu') and locs ~= 'cm' then error('Invalid initial "ghu". Use "wu" instead.') end if text:match('%f[%l]y%f[%L]') then error('Invalid syllable "y"') end if text:match('%f[%l]y[nq]') then error('Invalid syllable "yn" or "yq"') end if text:match('gn[aeou]') then error('Palatalization expected. Insert an "i" after the "gn".') end if text:match('uw') then error(('Invalid syllable in "%s".'):format(text)) end if locs:find('cm') and (text:find('ueu') or text:find('uon') or text:find('ui')) then error('cm: Mutation-only final found.') end if locs:find('sh') and text:match('[234]') then require("Module:debug").track("wuu-pron/sh-tone-234") --error('sh: Incorrect tone number used.') end for syl in text:gmatch("[%d%l%u]+") do if not syl:match("%d") then require("Module:debug").track("wuu-pron/no-tone") if locs ~= "sh" then require("Module:debug").track("wuu-pron/no-tone-other") end end end return nil end function export.ipa_syl_conv(text, loc, initials, finals, syllabics, i, main_tone, tone) -- get ipa from tables local initial, final = text:match("^([td]?[pbmfvtdnlszcjghk][hng]?)(.+)$") local if_syllabic = syllabics[text] if loc == 'sx' and text == 'gn' then if_syllabic = "ɲ̩" end if not initial or if_syllabic then initial, final = '', text end if loc == 'cm' then -- mutation local mutated_initial = i > 1 and initial == "z" and "z" local preglottal = "" if tone ~= "0" and (mutated_initial or initial:find("^g?[mnl]") or initial == "") then preglottal = (i > 1 or main_tone:find("^[1357]$")) and "ʔ" or "ɦ" end return preglottal .. (mutated_initial or initials(initial,loc)) .. (if_syllabic or finals(final,loc)) end return initials(initial,loc) .. (if_syllabic or finals(final,loc)) end function export.wugniu_to_ipa(original_text, loc, initials, finals, syllabics, tones) local text, conv_text = "", "" local tone_number = "" original_text = original_text:gsub(" (%l+)(%d%u?)", ' %2%1') if loc == 'cm' then original_text = original_text:gsub("%f[%l]yi?","i"):gsub("%f[%l]wu?","u") else original_text = original_text:gsub("%f[%l]yi?","ghi"):gsub("%f[%l]wu?","ghu") end local reading = mw.text.split(original_text, ",", true) local syllable = {} local syl_tone = {} for reading_index = 1, #reading, 1 do local components = mw.text.split(reading[reading_index], "&", true) for component_index = 1, #components do local indep_words = mw.text.split(components[component_index], "+", true) for indep_index = 1, #indep_words do text = indep_words[indep_index] tone_number = text:sub(1, 1) local tone = tones(text, loc) text = text:gsub("[^ %l]+", "") local syllable = mw.text.split(text, " ", true) local syl_tone = mw.text.split(tone, " ", true) for i = 1, #syllable, 1 do --RPS if i == #syllable and indep_words[indep_index + 1] and tone ~= "³³" then syl_tone[i] = RPS_tone_determ(#syllable, tone_number, loc) end syllable[i] = (syllable[i] ~= "" and export.ipa_syl_conv(syllable[i], loc, initials, finals, syllabics, i, tone_number, syl_tone[i]) or "") .. (syl_tone[i] == "0" and "" or syl_tone[i]) end indep_words[indep_index] = table.concat(syllable, " ") end components[component_index] = table.concat(indep_words, " &nbsp;") end reading[reading_index] = table.concat(components, " ") end return table.concat(reading, "/, /") end function export.wikt_to_wugniu(text) require("Module:debug").track("wuu-pron/legacy") if type(text) == "table" then text = text.args[1] end return text --initials :gsub("'+", {["'"]=""}) :gsub("%f[%l][jqx][jx]?", {j="c", jj="j", q="ch", x="sh", xx="zh"}) :gsub("%f[%l]ny", "gn") :gsub("%f[%l]hh", "gh") --vowels :gsub("un", "uen") :gsub("yoe", "ioe") :gsub("y", "iu") :gsub("aan", "aon") :gsub("%f[er]r", "y") --syllabics :gsub("g?h?mm", "m") :gsub("g?h?ngg", "ng") --tones :gsub("[2-5]", {['2']='5', ['3']='6', ['4']='7', ['5']='8'}) --gh rules :gsub("ghi", "yi") :gsub("yi%f[aeou]", "y") :gsub("ghu", "wu") :gsub("wu%f[aeo]", "w") end local function wugniu_to_wikt(text) if type(text) == "table" then text = text.args[1] end --initials return export.wugniu_format(text :gsub("%f[%l][cjszg][nh]?", {c="j", ch="q", j="jj", sh="x", zh="xx", gn="ny", gh="hh"}) :gsub("%f[%l]yi?", "hhi") :gsub("wu?", "hhu") --vowels :gsub("y%f[%L]", "r") :gsub("uen", "un") :gsub("ioe", "yoe") :gsub("iu", "y") :gsub("aon", "aan") --syllabics :gsub("%f[%l][mn]g?%f[%L]", {m="mm",n="nn",ng="ngg"}) --initial hh and ' :gsub("([157])([mnl])", "%1'%2") :gsub("([68])([mn][mng]g?)%f[%L]", "%1hh%2") --tones :gsub("[5-8]", {['5']='2', ['6']='3', ['7']='4', ['8']='5'})) end --[[學堂拼音 → 錢拼 local function wugniu_to_qian(text) if type(text) == "table" then text = text.args[1] end --initials return export.wugniu_format(text gn → n sh zh → x xh gh w y → hh wh yh b d g m n l j → bh dh gh mh nh lh jh ng → nhg v z → fh sh ts tsh c ch → z c j q 'mh 'nh 'lh 'nhg → m n l ng --rimes q → k aon on en → ang ong eng au eu → ao ou (ae/e split, but no way to do this on enwikt) word-initial i and u → yi wu (eg. 一 iq → yik) iuk → yuik rules regarding the i in iu behaves exactly like the diaresis in Pinyin ü --syllabics: NO CHANGE: m n ng er → m n ng er --tones: 5, 6, 7, 8 UNMARKED, 1: APOSTROPHE IN FRONT 天: 'ti, 去 qu, 定 dhin, 不 bek, 日 nik SPACES between syllables, not dashes ]] function export.wugniu_format(text, loc) -- 1a a 1a 1a3 a1 -> ^1a-a-a_1-^1a_3-a_1 -- 1a3-3a5 -> ^1a_3-^3a_5 return text :gsub("[%- &+,]", {["-"]="", [" "]="-", ["&"]=" ", ["+"]=" ", [","]="; "}) :gsub("(%-?)(%d?%u?)('?%l+)(%d?%u?)", function(dash, tone1, main, tone2) if dash == '-' and tone2 == '' then tone1, tone2 = tone2, tone1 end if tone1 ~= '' then tone1 = '<sup>' .. tone1 .. '</sup>' end if tone2 ~= '' then tone2 = '<sub>' .. tone2 .. '</sub>' end return dash .. tone1 .. main .. tone2 end) end local function wikt_format(text) return export.wugniu_format(text) end local function minidict_format(text) -- 1A3 3B5 3C D3 E -> A^3 B^5 C^3 D^3 E -- 1A B -> A^1 B return text :gsub("-", "") :gsub("[&+]", " ") :gsub(",", "; ") :gsub("0", "") :gsub("[1-8]?(%l+)([1-8])", '%1<sup>%2</sup>') :gsub("([1-8])(%l+)", '%2<sup>%1</sup>') :gsub("%f[%l]([mnlr]%l*)(<sup>[1357]</sup>)", "'%1%2") :gsub("[1-8]",{ ["1"]="平",["2"]="平", ["3"]="上",["4"]="上", ["5"]="去",["6"]="去", ["7"]="入",["8"]="入", }) end function export.wugniu_to_minidict(text, loc) if type(text) == "table" then text = text.args[1] end text = text:gsub('%f[%l][yw]', {y = 'yi', w = 'wu'}) if loc == 'sx' then text = text:gsub("[ei]+[nq]",{een="en",en="eon",iq="ieq"}) elseif loc == 'hz' then -- are we dealing with mergers? text = text:gsub("[aeiu]+q?%f[%L]",{eu="ei",ieu="iu",aq="eq",iaq="ieq",iq="ieq",uaq="ueq"}) elseif loc == 'sz' or loc == 'cz' then text = text:gsub("%f[%l]yie%f[%L]", "yiie") -- ye > yie elseif loc == 'nb' then text = text:gsub("yu%f[nq]", "oe") elseif loc == 'sh' then text = text:gsub("ie%f[%L]", "iae") elseif loc == 'cm' then text = text:gsub("<sup>→%l+</sup>", "") elseif loc == 'jd' then text = text:gsub("ue%f[%L]", "uie") end return minidict_format(text --finals & syllabic :gsub("iu([nq])", "iui%1") :gsub("gher", "r") :gsub("er", "r") :gsub("q", "h")) --initials --Glottal stops? text = text:gsub("", "'") :gsub("gn", "ny") :gsub("nyi%f[aeou]", "ny") :gsub('yi([aeiou])', 'y%1') :gsub('wu([aeiou])', 'w%1') end -- various boilerplates function export.name_boilerplate(name, wiki) return '<i>[[w:' .. (wiki or name..' dialect') .. '|' .. name.. ']]</i>' end function export.consolas(text) return '<span class="zhpron-monospace">' .. text .. '</span>' end function export.wugniu_boilerplate(text) return '\n*** <small><i>[[Wiktionary:About Chinese/Wu|Wugniu]]</i></small>: ' .. export.consolas(text) end function export.minidict_boilerplate(text) return '\n*** <small><i>[[Wiktionary:About Chinese/Wu|MiniDict]]</i></small>: ' .. export.consolas(text) end function export.wikt_boilerplate(text) return '\n*** <small><i>[[Wiktionary:About Chinese/Wu|Wiktionary Romanisation]] (Shanghai)</i></small>: ' .. export.consolas(text) end function export.IPA_boilerplate(text, name, wiki) text = text:gsub("(/?[^ /,]*/[^ /,]*/?)", '<span style="white-space: nowrap;">%1</span>') return '\n*** <small>Sinological [[Wiktionary:International Phonetic Alphabet|IPA]]' .. ' (' .. export.name_boilerplate(name, wiki) .. ')</small>: ' .. '<span class="IPA">/' .. text .. '/</span>' end local function preprocess_IPA(text, loc) if loc == 'hz' then return text:gsub("%f[%l]([td]?[sz]h?u)%f[aeonq]", "%1w") elseif loc == 'sx' then return text:gsub("[^,&]+%+[^,&]+", function(chain) local tone1,mode,word1,tone2,word2 = chain:match("^(%d)([AP]?)(%l+)%+(%d)(%l+)$") if not tone1 then error("sx: Wrong chain format.") end if mode == '' then mode = 'O' end if mode == 'A' then return tone1..'A'..word1..'&'..tone2..word2 end return tone1..word1..' '..tone2..mode..word2 end):gsub("#(%d)","%1N") elseif loc == 'cm' then return text:gsub("%f[%l]%l+<(%l*)>","%1") end return text end local function preprocess_wugniu(text, loc) if loc == 'jx' then return text:gsub("3[AB]","3") elseif loc == 'cm' then return text:gsub("[CMPR][VCN]?","") :gsub("%f[%l](%l*)<(%l*)>(%l*)(%d?)","%1%3%4<sup>→%2%3</sup>") elseif loc == 'sx' then return text:gsub("[#CAP]","") end return text end local function preprocess_mutation(text, locs) if locs:find('cm') then text = text:gsub(" (%d?C?)([vzgd]h?)([%w<>]+)", function(tone, initial, final) local mutated_initial = ({v="u",zh="",gh=""})[initial] if mutated_initial == "u" and final:find("^u") then mutated_initial = "" elseif initial == "d" and final:find("^i") then mutated_initial = "l" end if final:find("<") or not mutated_initial then return " "..tone..initial..final end return " "..tone..initial.."<"..mutated_initial..">"..final end) end if text:find("<") and locs ~= "cm" then error("cm: Mutation is incompatible with collapsing.") end return text end function export.make(text, w_count) if not text:match(':') then -- assume Shanghainese text = 'sh:'..text end local show = "" local hide = "" local roms = {} local input_seen, duplicated = {}, false text = mw.text.split(text, ';', true) local show_name = "<i>[[w:Taihu Wu|Northern]]</i>" if #text == 1 and text[1]:find("^..:") then -- single locality local loc = text[1]:sub(1,2) show_name = export.name_boilerplate(loc_names[loc], wiki_names[loc]) end for i = 1,#text,1 do local s = mw.text.split(text[i], ':', true) if not duplicated then if input_seen[s[2]] then duplicated = true end input_seen[s[2]] = true end if #s ~= 2 or #s[1] == 0 then error("Wugniu: prefix is required or too many prefixes") end local locs, t = mw.text.split(s[1], ',', true), s[2] rom_check(t, s[1]) t = preprocess_mutation(t, s[1]) local list = {} local format_text = t for _, loc in ipairs(locs) do if loc_names[loc] then list[loc] = true else error('Wugniu: prefix "' .. loc .. '" is not recognized') end format_text = preprocess_wugniu(format_text, loc) end local wugniu_text = export.wugniu_format(format_text, locs[1]) table.insert(roms,wugniu_text) local names = {} local minidicts = {} local minidicts_seen = {} local IPAs = {} for _, loc in ipairs(order) do if list[loc] then table.insert(names, export.name_boilerplate(loc_names[loc], wiki_names[loc])) if minidict[loc] then local minidict_result = export.wugniu_to_minidict(format_text, loc) if not minidicts_seen[minidict_result] then table.insert(minidicts, minidict_result) minidicts_seen[minidict_result] = true end end local ipa_text = preprocess_IPA(t, loc) ipa_text = export.wugniu_to_ipa(ipa_text, loc, get_initial, get_final, ipa_syllabic, get_tone) table.insert(IPAs,export.IPA_boilerplate(ipa_text, loc_names[loc], wiki_names[loc])) end end hide = hide .. '\n** <small>(<i>[[w:Taihu Wu|Northern]]</i>: ' .. table.concat(names,', ') .. ')</small>' hide = hide .. export.wugniu_boilerplate(wugniu_text) for _,minidict_text in ipairs(minidicts) do hide = hide .. export.minidict_boilerplate(minidict_text) end if list.sh then hide = hide .. export.wikt_boilerplate(wugniu_to_wikt(format_text)) end hide = hide .. table.concat(IPAs, '') end if not w_count or w_count > 1 then show = '\n** <small>('..show_name..')</small>: ' .. export.consolas(table.concat(roms, ' / ')) else show = ' <small>('..show_name..', <i>[[Wiktionary:About Chinese/Wu|Wugniu]]</i>)</small>: ' .. export.consolas(table.concat(roms, ' / ')) end if duplicated then require("Module:debug").track("wuu-pron/duplicated") end return show, hide end return export 2eql4v6n9trt1md10pab14d083vq1ve 234941 234940 2026-05-26T07:12:54Z Lee 19 [[:en:Module:wuu-pron]] වෙතින් එක් සංශෝධනයක් 234940 Scribunto text/plain local export = {} local data = mw.loadData("Module:wuu-pron/data") --[=[ TODO: - do IPA for glottalised nasal intials (currently the glottal stop is dropped) - FIND DATA FOR 3+ SYLLABLE SANDHI AND RPS!!! (we can settle for trisyllabics right) - northern wu data: FIRST PRIORITY should be - CHUANSHA 川沙 (sandhi found in 當代, needs. understanding) - NEW KUNSHAN 崑山新派 (trisyllabic sandhi needed) - HUZHOU 湖州 (trisyllabic sandhi needed) - XIAOSHAN 蕭山 (大西博子 source doesn't exactly line up with wugniu 市志) - CIXI 慈溪 (慈溪方言研究 PDF exists but currently unretrieved, please inform @ND381 if a working PDF is in your possession ASAP!! zia-zia) - any other northern wu points are good!! pls note the source u used in the EDIT SUMMARY if u do add one zia-zia - MODULES for TAIZHOU & WENZHOU → and then we're done (probably) ]=]-- local loc_names = { -- Basic 聲韻調 Disyll LPS Trisyll LPS Quad+ LPS RPS Logic --NORTHERN ['sh'] = 'Shanghai', -- + + + + + + ['jd'] = 'Jiading', -- + + + - - + ['sj'] = 'Songjiang', -- + + + - - + ['cs'] = 'Chuansha', -- + + + - - - ['cm'] = 'Chongming', -- + + + - + + ['sz'] = 'Suzhou', -- + + + + + + ['ks'] = 'Kunshan', -- + + - - - - Wugniu "新派" ['yx'] = 'Yixing', -- + - - - - - ['cz'] = 'Changzhou', -- + + + - - + ['jj'] = 'Jingjiang', -- + + - - - - ['jx'] = 'Jiaxing', -- + + + - - + ['tx'] = 'Tongxiang', -- + + + - - + ['hn'] = 'Haining', -- + + + - + + Xiashi locality ['hy'] = 'Haiyan', -- + + + - - + ['dq'] = 'Deqing', -- + - - - - - ['hz'] = 'Hangzhou', -- + + + + + + ['xs'] = 'Xiaoshan', -- + - - - - - ['fy'] = 'Fuyang', -- + + - - + - ['sx'] = 'Shaoxing', -- + + + - + + ['cx'] = 'Cixi', -- + + - - - - ['nb'] = 'Ningbo', -- + + + - + + ['zs'] = 'Zhoushan', -- + - - - - - -- Jinhua + + + + + + -- TAIZHOU -- Huangyan + + - - - -- Linhai + + - - - -- Sanmen + - - - - -- Tiantai +/- + - - - -- Wenling + + - - - -- Wenzhou need to reconcile differences between sources } -- default to "<loc_name> dialect" if empty -- specifies the name of the Wikipedia article of the lect local wiki_names = { jd = 'Shanghainese#Classification', sj = 'Shanghainese#Classification', cs = 'Shanghainese#Classification', yx = 'Taihu Wu', jj = 'Taihu Wu', jx = 'Taihu Wu', tx = 'Taihu Wu', hn = 'Taihu Wu', hy = 'Taihu Wu', dq = 'Taihu Wu', xs = 'Taihu Wu', fy = 'Taihu Wu', cx = 'Taihu Wu', zs = 'Taihu Wu', } local minidict = { ['sh'] = true, ['jd'] = true, ['cm'] = true, ['sz'] = true, ['cz'] = true, ['jx'] = true, ['hz'] = true, ['sx'] = true, ['nb'] = true } local order = {'sh', 'jd', 'sj', 'cm', 'cs', 'sz', 'ks', 'yx', 'cz', 'jj', 'jx', 'tx', 'hn', 'hy', 'dq', 'hz', 'xs', 'fy', 'sx', 'cx', 'nb', 'zs'} local ipa_initial = { ["p"] = "p", ["ph"] = "pʰ", ["b"] = "b", ["m"] = "m", ["f"] = "f", ["v"] = "v", ["t"] = "t", ["th"] = "tʰ", ["d"] = "d", ["n"] = "n", ["l"] = "l", ["ts"] = "t͡s", ["tsh"] = "t͡sʰ", ["s"] = "s", ["z"] = "z", ["c"] = "t͡ɕ", ["ch"] = "t͡ɕʰ", ["dz"] = "d͡z", ["j"] = "d͡ʑ", ["gn"] = "n̠ʲ", ["sh"] = "ɕ", ["zh"] = "ʑ", ["k"] = "k", ["kh"] = "kʰ", ["g"] = "ɡ", ["ng"] = "ŋ", ["h"] = "h", ["gh"] = "ɦ", [""] = "", } local ipa_initial_override = { --this always takes priority over the table above --additional unique initials can also be defined here --a question mark means the initial does not exist --there must be empty tables for all locations, even if there is nothing there ['sh'] = { ["dz"] = "?" }, ['jd'] = { ["dz"] = "?", ["zh"] = "?" }, ['sj'] = { ["p"] = "ɓ", ["t"] = "ɗ", ["f"] = "ɸ", ["v"] = "β", ["ch"] = "cʰ", ["c"] = "c", ["j"] = "ɟ", ["sh"] = "ç", ["zh"] = "?", ["dz"] = "?" }, ['cm'] = { ["v"] = "fv", ["z"] = "sz", ["zh"] = "ɕʑ", ["gh"] = "hɦ", }, ['cs'] = { ["p"] = "ɓ", ["t"] = "ɗ", ["f"] = "ɸ", ["v"] = "β", ["dz"] = "?" }, ['sz'] = { ["dz"] = "?", ["zh"] = "?" }, ['ks'] = { ["zh"] = "?", ["h"] = "x" }, ['yx'] = { }, ['cz'] = { }, ['jj'] = { }, ['jx'] = { ['dz'] = "?", ["vh"] = "ʔv" }, ['tx'] = { }, ['hn'] = { }, ['hy'] = { ['dz'] = "?" }, ['dq'] = { ['dz'] = "?" }, ['hz'] = { ["zh"] = "?" }, ['xs'] = { }, ['fy'] = { }, ['sx'] = { }, ['cx'] = { }, ['nb'] = { }, ['zs'] = { }, } local function get_initial(initial, loc) return ipa_initial_override[loc][initial] or ipa_initial[initial] or error('Invalid initial: "' .. initial .. '"') end local function get_final(final, loc) return data.ipa_final[loc][final] or error('Invalid final for ' .. loc .. ' : "' .. final .. '"') end local ipa_syllabic = { ["m"] = "m̩", ["n"] = "n̩", ["ng"] = "ŋ̍", } -- diagnose tone error local function diagnose_tones(word_length, loc, text, tone, tone2, tone3) -- the cap on number of syllables local syl_cap = ({sh=5,jd=3,sj=3,cm=3,cs=3,sz=4,ks=2,yx=1,cz=3,jj=2,jx=3,tx=3,hn=3,hy=3,dq=1,hz=5,xs=1,fy=2,cx=2,nb=3,zs=1})[loc] if syl_cap and word_length > syl_cap then error(("Maximum %d syllables supported for %s."):format(syl_cap, loc)) end -- the cap on number of specified tones local tone_cap = ({sj=3,ks=2,cz=3,jx=3,tx=3,hn=3,hy=2})[loc] if tone_cap then local expected = math.min(tone_cap, word_length) local received = 1 + (tone2 ~= '' and 1 or 0) + (tone3 ~= '' and 1 or 0) if received ~= expected then error(('Expected %d tones, but received %d: "%s:%s".'):format(expected, received, loc, text)) end elseif loc == 'sz' or loc == 'sx' then -- sz: tone is 7 or 8, but second tone not provided error("For " .. loc .. ", second tone must be specified.") end error(('Incorrect tone notation "%s" for %s. See [[WT:AZH/Wu]].'):format(tone..tone2..tone3, loc)) end local function tone_superscript(text) return text:gsub('[1-5]',{['1']='¹',['2']='²',['3']='³',['4']='⁴',['5']='⁵'}) end local function get_tone(text, loc) local word_length = text:gsub("[^ ]+", ""):len() + 1 local tone, tone2, tone3 = text:match("^(.%u*)%w+ ?(%d?%u?)%w* ?(%d?%u?)") if loc == "jx" and tone == "3" then tone = text:find("^3[ptkc]s?h") and "3B" or "3A" elseif loc == "cm" then local result = nil if tone:find("[MP]") then -- Verb + Motion / Verb + Pronoun if word_length ~= 2 then error("cm: Unsupported word length.") end result = data.tone_contours[loc][tone] or error("cm: Wrong motion/pronoun format.") elseif tone:find("R",1,true) then -- Reduplication local main_tone, redup_type, word, sub_tone = text:match("^(%d)R([VCN])(%l+) (%d)%3$") main_tone, sub_tone = tonumber(main_tone), tonumber(sub_tone) local conv_tone = (redup_type == "N" and main_tone%2==0 and word:find("^g?[mnl]") and main_tone-1) or main_tone if sub_tone ~= conv_tone then error("cm: Wrong reduplication format.") end result = data.tone_contours[loc]["R"..redup_type..main_tone] end if result then return tone_superscript(result) end elseif loc == "sx" and tone:find("^%dA$") then return tone_superscript(data.tone_contours[loc][tone]) elseif loc == "cs" and word_length == 3 then tone2 = "" end local result = data.tone_contours[loc][word_length..tone..tone2..tone3] or data.tone_contours[loc][word_length..tone..tone2] or data.tone_contours[loc][word_length..tone] if result == nil and loc == "sx" then local first_tone = { ["1"] = "33", ["2"] = "11", ["3"] = "335", ["4"] = "115", ["5"] = "33", ["6"] = "11", ["7"] = "3", ["8"] = "1" } local middle_tone = { ["nc"] = { ["1"] = "55", ["2"] = "55", ["3"] = "55", ["4"] = "55", ["5"] = "33", ["6"] = "11", ["7"] = "55", ["8"] = "55" }, ["c"] = { ["1"] = "5", ["2"] = "5", ["3"] = "5", ["4"] = "5", ["5"] = "3", ["6"] = "1", ["7"] = "5", ["8"] = "5" } } local last_tone = { ["nc"] = { ["1"] = "52", ["2"] = "52", ["3"] = "52", ["4"] = "52", ["5"] = "33", ["6"] = "11", ["7"] = "52", ["8"] = "52" }, ["c"] = { ["1"] = "54", ["2"] = "54", ["3"] = "54", ["4"] = "54", ["5"] = "3", ["6"] = "1", ["7"] = "54", ["8"] = "54" } } local first = text:match("^(%d)%w+ ") local middle = text:gsub("^(%d)%w+ ", ""):gsub(" (%d)%w+$", "") local last = text:match(" (%d)%w+$") result = first_tone[first] local checked = "" for c in middle:gmatch("(%d)%w+") do if c:match("[123456]") then checked = "nc" elseif c:match("[78]") then checked = "c" end result = result .. " " .. middle_tone[checked][first] end if last:match("[123456]") then checked = "nc" elseif last:match("[78]") then checked = "c" end result = result .. " " .. last_tone[checked][first] end return result and tone_superscript(result) or diagnose_tones(word_length, loc, text, tone, tone2, tone3) end local function RPS_tone_determ(word_length, tone, loc) local result if word_length == 1 then result = data.tone_contours[loc][tone .. "s"] or data.tone_contours[loc]['s'] else result = data.tone_contours[loc]["multiple"] end return tone_superscript(result) end local function rom_check(text, locs) --this checks wugniu if text:match("%f[%l']['qx]") or text:match('ny') or text:match('hh') or text:match("h$") then error('Invalid syllable: ' .. text ..'. Wugniu expected, but another romanisation is being provided.') end if text:match('ghi') and locs ~= 'cm' then error('Invalid initial "ghi". Use "yi" instead.') end if text:match('ghu') and locs ~= 'cm' then error('Invalid initial "ghu". Use "wu" instead.') end if text:match('%f[%l]y%f[%L]') then error('Invalid syllable "y"') end if text:match('%f[%l]y[nq]') then error('Invalid syllable "yn" or "yq"') end if text:match('gn[aeou]') then error('Palatalization expected. Insert an "i" after the "gn".') end if text:match('uw') then error(('Invalid syllable in "%s".'):format(text)) end if locs:find('cm') and (text:find('ueu') or text:find('uon') or text:find('ui')) then error('cm: Mutation-only final found.') end if locs:find('sh') and text:match('[234]') then require("Module:debug").track("wuu-pron/sh-tone-234") --error('sh: Incorrect tone number used.') end for syl in text:gmatch("[%d%l%u]+") do if not syl:match("%d") then require("Module:debug").track("wuu-pron/no-tone") if locs ~= "sh" then require("Module:debug").track("wuu-pron/no-tone-other") end end end return nil end function export.ipa_syl_conv(text, loc, initials, finals, syllabics, i, main_tone, tone) -- get ipa from tables local initial, final = text:match("^([td]?[pbmfvtdnlszcjghk][hng]?)(.+)$") local if_syllabic = syllabics[text] if loc == 'sx' and text == 'gn' then if_syllabic = "ɲ̩" end if not initial or if_syllabic then initial, final = '', text end if loc == 'cm' then -- mutation local mutated_initial = i > 1 and initial == "z" and "z" local preglottal = "" if tone ~= "0" and (mutated_initial or initial:find("^g?[mnl]") or initial == "") then preglottal = (i > 1 or main_tone:find("^[1357]$")) and "ʔ" or "ɦ" end return preglottal .. (mutated_initial or initials(initial,loc)) .. (if_syllabic or finals(final,loc)) end return initials(initial,loc) .. (if_syllabic or finals(final,loc)) end function export.wugniu_to_ipa(original_text, loc, initials, finals, syllabics, tones) local text, conv_text = "", "" local tone_number = "" original_text = original_text:gsub(" (%l+)(%d%u?)", ' %2%1') if loc == 'cm' then original_text = original_text:gsub("%f[%l]yi?","i"):gsub("%f[%l]wu?","u") else original_text = original_text:gsub("%f[%l]yi?","ghi"):gsub("%f[%l]wu?","ghu") end local reading = mw.text.split(original_text, ",", true) local syllable = {} local syl_tone = {} for reading_index = 1, #reading, 1 do local components = mw.text.split(reading[reading_index], "&", true) for component_index = 1, #components do local indep_words = mw.text.split(components[component_index], "+", true) for indep_index = 1, #indep_words do text = indep_words[indep_index] tone_number = text:sub(1, 1) local tone = tones(text, loc) text = text:gsub("[^ %l]+", "") local syllable = mw.text.split(text, " ", true) local syl_tone = mw.text.split(tone, " ", true) for i = 1, #syllable, 1 do --RPS if i == #syllable and indep_words[indep_index + 1] and tone ~= "³³" then syl_tone[i] = RPS_tone_determ(#syllable, tone_number, loc) end syllable[i] = (syllable[i] ~= "" and export.ipa_syl_conv(syllable[i], loc, initials, finals, syllabics, i, tone_number, syl_tone[i]) or "") .. (syl_tone[i] == "0" and "" or syl_tone[i]) end indep_words[indep_index] = table.concat(syllable, " ") end components[component_index] = table.concat(indep_words, " &nbsp;") end reading[reading_index] = table.concat(components, " ") end return table.concat(reading, "/, /") end function export.wikt_to_wugniu(text) require("Module:debug").track("wuu-pron/legacy") if type(text) == "table" then text = text.args[1] end return text --initials :gsub("'+", {["'"]=""}) :gsub("%f[%l][jqx][jx]?", {j="c", jj="j", q="ch", x="sh", xx="zh"}) :gsub("%f[%l]ny", "gn") :gsub("%f[%l]hh", "gh") --vowels :gsub("un", "uen") :gsub("yoe", "ioe") :gsub("y", "iu") :gsub("aan", "aon") :gsub("%f[er]r", "y") --syllabics :gsub("g?h?mm", "m") :gsub("g?h?ngg", "ng") --tones :gsub("[2-5]", {['2']='5', ['3']='6', ['4']='7', ['5']='8'}) --gh rules :gsub("ghi", "yi") :gsub("yi%f[aeou]", "y") :gsub("ghu", "wu") :gsub("wu%f[aeo]", "w") end local function wugniu_to_wikt(text) if type(text) == "table" then text = text.args[1] end --initials return export.wugniu_format(text :gsub("%f[%l][cjszg][nh]?", {c="j", ch="q", j="jj", sh="x", zh="xx", gn="ny", gh="hh"}) :gsub("%f[%l]yi?", "hhi") :gsub("wu?", "hhu") --vowels :gsub("y%f[%L]", "r") :gsub("uen", "un") :gsub("ioe", "yoe") :gsub("iu", "y") :gsub("aon", "aan") --syllabics :gsub("%f[%l][mn]g?%f[%L]", {m="mm",n="nn",ng="ngg"}) --initial hh and ' :gsub("([157])([mnl])", "%1'%2") :gsub("([68])([mn][mng]g?)%f[%L]", "%1hh%2") --tones :gsub("[5-8]", {['5']='2', ['6']='3', ['7']='4', ['8']='5'})) end --[[學堂拼音 → 錢拼 local function wugniu_to_qian(text) if type(text) == "table" then text = text.args[1] end --initials return export.wugniu_format(text gn → n sh zh → x xh gh w y → hh wh yh b d g m n l j → bh dh gh mh nh lh jh ng → nhg v z → fh sh ts tsh c ch → z c j q 'mh 'nh 'lh 'nhg → m n l ng --rimes q → k aon on en → ang ong eng au eu → ao ou (ae/e split, but no way to do this on enwikt) word-initial i and u → yi wu (eg. 一 iq → yik) iuk → yuik rules regarding the i in iu behaves exactly like the diaresis in Pinyin ü --syllabics: NO CHANGE: m n ng er → m n ng er --tones: 5, 6, 7, 8 UNMARKED, 1: APOSTROPHE IN FRONT 天: 'ti, 去 qu, 定 dhin, 不 bek, 日 nik SPACES between syllables, not dashes ]] function export.wugniu_format(text, loc) -- 1a a 1a 1a3 a1 -> ^1a-a-a_1-^1a_3-a_1 -- 1a3-3a5 -> ^1a_3-^3a_5 return text :gsub("[%- &+,]", {["-"]="", [" "]="-", ["&"]=" ", ["+"]=" ", [","]="; "}) :gsub("(%-?)(%d?%u?)('?%l+)(%d?%u?)", function(dash, tone1, main, tone2) if dash == '-' and tone2 == '' then tone1, tone2 = tone2, tone1 end if tone1 ~= '' then tone1 = '<sup>' .. tone1 .. '</sup>' end if tone2 ~= '' then tone2 = '<sub>' .. tone2 .. '</sub>' end return dash .. tone1 .. main .. tone2 end) end local function wikt_format(text) return export.wugniu_format(text) end local function minidict_format(text) -- 1A3 3B5 3C D3 E -> A^3 B^5 C^3 D^3 E -- 1A B -> A^1 B return text :gsub("-", "") :gsub("[&+]", " ") :gsub(",", "; ") :gsub("0", "") :gsub("[1-8]?(%l+)([1-8])", '%1<sup>%2</sup>') :gsub("([1-8])(%l+)", '%2<sup>%1</sup>') :gsub("%f[%l]([mnlr]%l*)(<sup>[1357]</sup>)", "'%1%2") :gsub("[1-8]",{ ["1"]="平",["2"]="平", ["3"]="上",["4"]="上", ["5"]="去",["6"]="去", ["7"]="入",["8"]="入", }) end function export.wugniu_to_minidict(text, loc) if type(text) == "table" then text = text.args[1] end text = text:gsub('%f[%l][yw]', {y = 'yi', w = 'wu'}) if loc == 'sx' then text = text:gsub("[ei]+[nq]",{een="en",en="eon",iq="ieq"}) elseif loc == 'hz' then -- are we dealing with mergers? text = text:gsub("[aeiu]+q?%f[%L]",{eu="ei",ieu="iu",aq="eq",iaq="ieq",iq="ieq",uaq="ueq"}) elseif loc == 'sz' or loc == 'cz' then text = text:gsub("%f[%l]yie%f[%L]", "yiie") -- ye > yie elseif loc == 'nb' then text = text:gsub("yu%f[nq]", "oe") elseif loc == 'sh' then text = text:gsub("ie%f[%L]", "iae") elseif loc == 'cm' then text = text:gsub("<sup>→%l+</sup>", "") elseif loc == 'jd' then text = text:gsub("ue%f[%L]", "uie") end return minidict_format(text --finals & syllabic :gsub("iu([nq])", "iui%1") :gsub("gher", "r") :gsub("er", "r") :gsub("q", "h")) --initials --Glottal stops? text = text:gsub("", "'") :gsub("gn", "ny") :gsub("nyi%f[aeou]", "ny") :gsub('yi([aeiou])', 'y%1') :gsub('wu([aeiou])', 'w%1') end -- various boilerplates function export.name_boilerplate(name, wiki) return '<i>[[w:' .. (wiki or name..' dialect') .. '|' .. name.. ']]</i>' end function export.consolas(text) return '<span class="zhpron-monospace">' .. text .. '</span>' end function export.wugniu_boilerplate(text) return '\n*** <small><i>[[Wiktionary:About Chinese/Wu|Wugniu]]</i></small>: ' .. export.consolas(text) end function export.minidict_boilerplate(text) return '\n*** <small><i>[[Wiktionary:About Chinese/Wu|MiniDict]]</i></small>: ' .. export.consolas(text) end function export.wikt_boilerplate(text) return '\n*** <small><i>[[Wiktionary:About Chinese/Wu|Wiktionary Romanisation]] (Shanghai)</i></small>: ' .. export.consolas(text) end function export.IPA_boilerplate(text, name, wiki) text = text:gsub("(/?[^ /,]*/[^ /,]*/?)", '<span style="white-space: nowrap;">%1</span>') return '\n*** <small>Sinological [[Wiktionary:International Phonetic Alphabet|IPA]]' .. ' (' .. export.name_boilerplate(name, wiki) .. ')</small>: ' .. '<span class="IPA">/' .. text .. '/</span>' end local function preprocess_IPA(text, loc) if loc == 'hz' then return text:gsub("%f[%l]([td]?[sz]h?u)%f[aeonq]", "%1w") elseif loc == 'sx' then return text:gsub("[^,&]+%+[^,&]+", function(chain) local tone1,mode,word1,tone2,word2 = chain:match("^(%d)([AP]?)(%l+)%+(%d)(%l+)$") if not tone1 then error("sx: Wrong chain format.") end if mode == '' then mode = 'O' end if mode == 'A' then return tone1..'A'..word1..'&'..tone2..word2 end return tone1..word1..' '..tone2..mode..word2 end):gsub("#(%d)","%1N") elseif loc == 'cm' then return text:gsub("%f[%l]%l+<(%l*)>","%1") end return text end local function preprocess_wugniu(text, loc) if loc == 'jx' then return text:gsub("3[AB]","3") elseif loc == 'cm' then return text:gsub("[CMPR][VCN]?","") :gsub("%f[%l](%l*)<(%l*)>(%l*)(%d?)","%1%3%4<sup>→%2%3</sup>") elseif loc == 'sx' then return text:gsub("[#CAP]","") end return text end local function preprocess_mutation(text, locs) if locs:find('cm') then text = text:gsub(" (%d?C?)([vzgd]h?)([%w<>]+)", function(tone, initial, final) local mutated_initial = ({v="u",zh="",gh=""})[initial] if mutated_initial == "u" and final:find("^u") then mutated_initial = "" elseif initial == "d" and final:find("^i") then mutated_initial = "l" end if final:find("<") or not mutated_initial then return " "..tone..initial..final end return " "..tone..initial.."<"..mutated_initial..">"..final end) end if text:find("<") and locs ~= "cm" then error("cm: Mutation is incompatible with collapsing.") end return text end function export.make(text, w_count) if not text:match(':') then -- assume Shanghainese text = 'sh:'..text end local show = "" local hide = "" local roms = {} local input_seen, duplicated = {}, false text = mw.text.split(text, ';', true) local show_name = "<i>[[w:Taihu Wu|Northern]]</i>" if #text == 1 and text[1]:find("^..:") then -- single locality local loc = text[1]:sub(1,2) show_name = export.name_boilerplate(loc_names[loc], wiki_names[loc]) end for i = 1,#text,1 do local s = mw.text.split(text[i], ':', true) if not duplicated then if input_seen[s[2]] then duplicated = true end input_seen[s[2]] = true end if #s ~= 2 or #s[1] == 0 then error("Wugniu: prefix is required or too many prefixes") end local locs, t = mw.text.split(s[1], ',', true), s[2] rom_check(t, s[1]) t = preprocess_mutation(t, s[1]) local list = {} local format_text = t for _, loc in ipairs(locs) do if loc_names[loc] then list[loc] = true else error('Wugniu: prefix "' .. loc .. '" is not recognized') end format_text = preprocess_wugniu(format_text, loc) end local wugniu_text = export.wugniu_format(format_text, locs[1]) table.insert(roms,wugniu_text) local names = {} local minidicts = {} local minidicts_seen = {} local IPAs = {} for _, loc in ipairs(order) do if list[loc] then table.insert(names, export.name_boilerplate(loc_names[loc], wiki_names[loc])) if minidict[loc] then local minidict_result = export.wugniu_to_minidict(format_text, loc) if not minidicts_seen[minidict_result] then table.insert(minidicts, minidict_result) minidicts_seen[minidict_result] = true end end local ipa_text = preprocess_IPA(t, loc) ipa_text = export.wugniu_to_ipa(ipa_text, loc, get_initial, get_final, ipa_syllabic, get_tone) table.insert(IPAs,export.IPA_boilerplate(ipa_text, loc_names[loc], wiki_names[loc])) end end hide = hide .. '\n** <small>(<i>[[w:Taihu Wu|Northern]]</i>: ' .. table.concat(names,', ') .. ')</small>' hide = hide .. export.wugniu_boilerplate(wugniu_text) for _,minidict_text in ipairs(minidicts) do hide = hide .. export.minidict_boilerplate(minidict_text) end if list.sh then hide = hide .. export.wikt_boilerplate(wugniu_to_wikt(format_text)) end hide = hide .. table.concat(IPAs, '') end if not w_count or w_count > 1 then show = '\n** <small>('..show_name..')</small>: ' .. export.consolas(table.concat(roms, ' / ')) else show = ' <small>('..show_name..', <i>[[Wiktionary:About Chinese/Wu|Wugniu]]</i>)</small>: ' .. export.consolas(table.concat(roms, ' / ')) end if duplicated then require("Module:debug").track("wuu-pron/duplicated") end return show, hide end return export 2eql4v6n9trt1md10pab14d083vq1ve Module:wuu-pron/documentation 828 31822 234948 185489 2025-03-21T19:49:23Z en>ND381 0 /* a */ (using [[MediaWiki:Gadget-AjaxEdit.js|AjaxEdit]]) 234948 wikitext text/x-wiki Generates IPA based on romanisation for Wu Chinese. See {{temp|zh-pron}}. Rimes and tones found in [[Module:wuu-pron/data]]. {{module cat|zh,wuu}} ===a=== {{zh-pron |w=jx:5tha ian2 }} al3qym3fb1kbgmu3phv7u81smhpqd1q 234949 234948 2026-05-26T07:14:57Z Lee 19 [[:en:Module:wuu-pron/documentation]] වෙතින් එක් සංශෝධනයක් 234948 wikitext text/x-wiki Generates IPA based on romanisation for Wu Chinese. See {{temp|zh-pron}}. Rimes and tones found in [[Module:wuu-pron/data]]. {{module cat|zh,wuu}} ===a=== {{zh-pron |w=jx:5tha ian2 }} al3qym3fb1kbgmu3phv7u81smhpqd1q Module:wuu-pron/Jinhua 828 112570 234942 219956 2025-08-10T16:17:12Z en>Surjection 0 Protected "[[Module:wuu-pron/Jinhua]]": Highly visible template/module ([Edit=Allow only autoconfirmed users] (indefinite) [Move=Allow only autoconfirmed users] (indefinite)) 185478 Scribunto text/plain --jinhuanese experiemental module (ignore the "Hangzhou" bit) local w_pron = require("Module:wuu-pron") local export = {} local ipa_initial = { ["p"] = "p", ["ph"] = "pʰ", ["b"] = "b", ["m"] = "m", ["f"] = "f", ["v"] = "v", ["t"] = "t", ["th"] = "tʰ", ["d"] = "d", ["n"] = "n", ["l"] = "l", ["ts"] = "t͡s", ["tsh"] = "t͡sʰ", ["s"] = "s", ["z"] = "z", ["c"] = "t͡ɕ", ["ch"] = "t͡ɕʰ", ["dz"] = "d͡z", ["j"] = "d͡ʑ", ["gn"] = "n̠ʲ", ["sh"] = "ɕ", ["zh"] = "ʑ", ["k"] = "k", ["kh"] = "kʰ", ["g"] = "ɡ", ["ng"] = "ŋ", ["h"] = "h", ["gh"] = "ɦ", [""] = "", } --[""] = "", local ipa_final = { ["oea"] = "ɤa", ["a"] = "ɑ", ["o"] = "o", ["oe"] = "ɤ", ["ou"] = "ɯ", ["ae"] = "ɛ", ["ei"] = "ei", ["au"] = "ɑu", ["eu"] = "eu", ["i"] = "i", ["iaa"] = "ia", ["ia"] = "iɑ", ["ie"] = "ie", ["iei"] = "iɛ", ["iae"] = "iɛ", ["iau"] = "iɑu", ["ieu"] = "iu", ["u"] = "u", ["ua"] = "uɑ", ["uo"] = "uɤ", ["uae"] = "uɛ", ["ui"] = "ui", ["iu"] = "y", ["iua"] = "yɑ", ["ioe"] = "yɤ", ["iuae"] = "yɛ", ["en"] = "əŋ", ["oen"] = "ɤã", ["an"] = "ã", ["aon"] = "ɑŋ", ["on"] = "oŋ", ["in"] = "iŋ", ["ian"] = "iã", ["iaon"] = "iɑŋ", ["ion"] = "ioŋ", ["uen"] = "uəŋ", ["uan"] = "uã", ["uaon"] = "uɑŋ", ["iun"] = "yəŋ", ["iuan"] = "yã", ["iuaon"] = "yɑŋ", ["eq"] = "əʔ", ["oq"] = "oʔ", ["iq"] = "iəʔ", ["ioq"] = "ioʔ", ["ueq"] = "uəʔ", ["iuq"] = "yəʔ", ["er"] = "əl", ["y"] = "z̩", --Erhua rimes (a priori for now, not seen in the dictionary body at wugniu.com) ["ynn"] = "z̩̃", ["inn"] = "ĩ", ["unn"] = "ũ", ["iunn"] = "ỹ", ["ieunn"] = "iũ", ["oenn"] = "ɤ̃", ["enn"] = "ẽ", ["ienn"] = "iẽ", ["uenn"] = "uẽ", ["iuenn"] = "yẽ", ["aunn"] = "ɔ̃", ["iaunn"] = "iɔ̃", ["onn"] = "õ", ["ionn"] = "iõ" } local function get_initial(initial) return ipa_initial[initial] or error('Invalid initial: "' .. initial .. '"') end local function get_final(final) return ipa_final[final] or error('Invalid final: "' .. final .. '"') end local ipa_syllabic = { ["m"] = "m̩", ["ng"] = "ŋ̍", } local tone_contours = { ["10"] = "", ["11"] = "334", ["12"] = "313", ["13"] = "535", ["14"] = "535", ["15"] = "55", ["16"] = "14", ["17"] = "44", ["18"] = "212", ["17A"] = "44", --17A for 一 and only 一 in number sandhi --sandhi: 當代 pp. 657, etc. --Word (Phrase) sandhi: 吳語婺州方言研究 pp. 102 onwards. --disyllabic ["211"] = "33 55", ["212"] = "33 55", ["213"] = "33 535", ["214"] = "33 535", ["215"] = "33 55", ["216"] = "33 55", ["217"] = "33 44", ["218"] = "33 212", ["221"] = "31 55", ["222"] = "31 14", ["223"] = "33 535", ["224"] = "33 535", ["225"] = "31 55", ["225C"] = "33 55", ["226"] = "31 14", ["227"] = "33 44", ["228"] = "33 212", ["231"] = "55 334", ["232"] = "55 313", ["233"] = "53 535", ["234"] = "53 535", ["235"] = "53 55", ["236"] = "55 14", ["237"] = "53 44", ["238"] = "55 212", ["241"] = "55 334", ["242"] = "55 313", ["243"] = "53 535", ["244"] = "33 535", ["245"] = "53 55", ["246"] = "55 14", ["247"] = "534 44", ["248"] = "55 212", ["24A1"] = "53 55", ["251"] = "33 55", ["252"] = "33 14", ["253"] = "33 535", ["254"] = "33 535", ["255"] = "53 55", ["256"] = "55 14", ["257"] = "33 44", ["258"] = "55 212", ["25A2"] = "33 55", ["25A6"] = "33 55", ["25C1"] = "55 0", ["25C3"] = "53 535", ["25C4"] = "53 535", ["261"] = "53 55", ["262"] = "53 14", ["263"] = "53 535", ["264"] = "33 535", ["265"] = "53 55", ["266"] = "55 14", ["267"] = "53 44", ["268"] = "55 212", ["26A2"] = "33 55", ["26A3"] = "33 55", ["26A5"] = "33 55", ["26A6"] = "33 55", ["26C2"] = "55 0", ["271"] = "44 55", ["272"] = "44 55", ["273"] = "44 535", ["274"] = "44 535", ["275"] = "44 55", ["276"] = "44 14", ["277"] = "44 44", ["278"] = "44 212", ["281"] = "21 55", ["282"] = "21 14", ["283"] = "21 535", ["284"] = "21 535", ["285"] = "21 55", ["286"] = "21 14", ["287"] = "21 44", ["288"] = "21 212", --trisyllabic word sandhi. not tabulated but vaguely described in above source ["3111"] = "33 33 55", ["3112"] = "33 33 55", ["3113"] = "33 33 535", ["3114"] = "33 33 535", ["3115"] = "33 33 55", ["3116"] = "33 33 55", ["3117"] = "33 33 44", ["3118"] = "33 33 212", ["3121"] = "33 31 55", ["3122"] = "33 31 14", ["3123"] = "33 33 535", ["3124"] = "33 33 535", ["3125"] = "33 31 55", ["3125C"] = "33 33 55", ["3126"] = "33 31 14", ["3127"] = "33 33 44", ["3128"] = "33 33 212", ["3131"] = "33 55 334", ["3132"] = "33 55 313", ["3133"] = "33 53 535", ["3134"] = "33 53 535", ["3135"] = "33 53 55", ["3136"] = "33 55 14", ["3137"] = "33 53 44", ["3138"] = "33 55 212", ["3141"] = "33 55 334", ["3142"] = "33 55 313", ["3143"] = "33 53 535", ["3144"] = "33 33 535", ["3145"] = "33 53 55", ["3146"] = "33 55 14", ["3147"] = "33 53 44", ["3148"] = "33 55 212", ["314A1"] = "33 53 55", ["3151"] = "33 33 55", ["3152"] = "33 33 14", ["3153"] = "33 33 535", ["3154"] = "33 33 535", ["3155"] = "33 53 55", ["3156"] = "33 55 14", ["3157"] = "33 33 44", ["3158"] = "33 55 212", ["315A2"] = "33 33 55", ["315A6"] = "33 33 55", ["315C1"] = "33 55 0", ["315C3"] = "33 53 535", ["315C4"] = "33 53 535", ["3161"] = "33 53 55", ["3162"] = "33 53 14", ["3163"] = "33 53 535", ["3164"] = "33 33 535", ["3165"] = "33 53 55", ["3166"] = "33 55 14", ["3167"] = "33 53 44", ["3168"] = "33 55 212", ["316A2"] = "33 33 55", ["316A3"] = "33 33 55", ["316A5"] = "33 33 55", ["316A6"] = "33 33 55", ["316C2"] = "33 55 0", ["3171"] = "33 44 55", ["3172"] = "33 44 55", ["3173"] = "33 44 535", ["3174"] = "33 44 535", ["3175"] = "33 44 55", ["3176"] = "33 44 14", ["3177"] = "33 44 44", ["3178"] = "33 44 212", ["3181"] = "33 21 55", ["3182"] = "33 21 14", ["3183"] = "33 21 535", ["3184"] = "33 21 535", ["3185"] = "33 21 55", ["3186"] = "33 21 14", ["3187"] = "33 21 44", ["3188"] = "33 21 212", ["3211"] = "33 33 55", ["3212"] = "33 33 55", ["3213"] = "33 33 535", ["3214"] = "33 33 535", ["3215"] = "33 33 55", ["3216"] = "33 33 55", ["3217"] = "33 33 44", ["3218"] = "33 33 212", ["3221"] = "33 31 55", ["3222"] = "33 31 14", ["3223"] = "33 33 535", ["3224"] = "33 33 535", ["3225"] = "33 31 55", ["3225C"] = "33 33 55", ["3226"] = "33 31 14", ["3227"] = "33 33 44", ["3228"] = "33 33 212", ["3231"] = "33 55 334", ["3232"] = "33 55 313", ["3233"] = "33 53 535", ["3234"] = "33 53 535", ["3235"] = "33 53 55", ["3236"] = "33 55 14", ["3237"] = "33 53 44", ["3238"] = "33 55 212", ["3241"] = "33 55 334", ["3242"] = "33 55 313", ["3243"] = "33 53 535", ["3244"] = "33 33 535", ["3245"] = "33 53 55", ["3246"] = "33 55 14", ["3247"] = "33 53 44", ["3248"] = "33 55 212", ["324A1"] = "33 53 55", ["3251"] = "33 33 55", ["3252"] = "33 33 14", ["3253"] = "33 33 535", ["3254"] = "33 33 535", ["3255"] = "33 53 55", ["3256"] = "33 55 14", ["3257"] = "33 33 44", ["3258"] = "33 55 212", ["325A2"] = "33 33 55", ["325A6"] = "33 33 55", ["325C1"] = "33 55 0", ["325C3"] = "33 53 535", ["325C4"] = "33 53 535", ["3261"] = "33 53 55", ["3262"] = "33 53 14", ["3263"] = "33 53 535", ["3264"] = "33 33 535", ["3265"] = "33 53 55", ["3266"] = "33 55 14", ["3267"] = "33 53 44", ["3268"] = "33 55 212", ["326A2"] = "33 33 55", ["326A3"] = "33 33 55", ["326A5"] = "33 33 55", ["326A6"] = "33 33 55", ["326C2"] = "33 55 0", ["3271"] = "33 44 55", ["3272"] = "33 44 55", ["3273"] = "33 44 535", ["3274"] = "33 44 535", ["3275"] = "33 44 55", ["3276"] = "33 44 14", ["3277"] = "33 44 44", ["3278"] = "33 44 212", ["3281"] = "33 21 55", ["3282"] = "33 21 14", ["3283"] = "33 21 535", ["3284"] = "33 21 535", ["3285"] = "33 21 55", ["3286"] = "33 21 14", ["3287"] = "33 21 44", ["3288"] = "33 21 212", ["3311"] = "55 33 55", ["3312"] = "55 33 55", ["3313"] = "55 33 535", ["3314"] = "55 33 535", ["3315"] = "55 33 55", ["3316"] = "55 33 55", ["3317"] = "55 33 44", ["3218"] = "55 33 212", ["3321"] = "55 31 55", ["3322"] = "55 31 14", ["3323"] = "55 33 535", ["3324"] = "55 33 535", ["3325"] = "55 31 55", ["3325C"] = "55 33 55", ["3326"] = "55 31 14", ["3327"] = "55 33 44", ["3328"] = "55 33 212", ["3331"] = "55 55 334", ["3332"] = "55 55 313", ["3333"] = "55 53 535", ["3334"] = "55 53 535", ["3335"] = "55 53 55", ["3336"] = "55 55 14", ["3337"] = "55 53 44", ["3338"] = "55 55 212", ["3341"] = "55 55 334", ["3342"] = "55 55 313", ["3343"] = "55 53 535", ["3344"] = "55 33 535", ["3345"] = "55 53 55", ["3346"] = "55 55 14", ["3347"] = "55 53 44", ["3348"] = "55 55 212", ["334A1"] = "55 53 55", ["3351"] = "55 33 55", ["3352"] = "55 33 14", ["3353"] = "55 33 535", ["3354"] = "55 33 535", ["3355"] = "55 53 55", ["3356"] = "55 55 14", ["3357"] = "55 33 44", ["3358"] = "55 55 212", ["335A2"] = "55 33 55", ["335A6"] = "55 33 55", ["335C1"] = "55 55 0", ["335C3"] = "55 53 535", ["335C4"] = "55 53 535", ["3361"] = "55 53 55", ["3362"] = "55 53 14", ["3363"] = "55 53 535", ["3364"] = "55 33 535", ["3365"] = "55 53 55", ["3366"] = "55 55 14", ["3367"] = "55 53 44", ["3368"] = "55 55 212", ["336A2"] = "55 33 55", ["336A3"] = "55 33 55", ["336A5"] = "55 33 55", ["336A6"] = "55 33 55", ["336C2"] = "55 55 0", ["3371"] = "55 44 55", ["3372"] = "55 44 55", ["3373"] = "55 44 535", ["3374"] = "55 44 535", ["3375"] = "55 44 55", ["3376"] = "55 44 14", ["3377"] = "55 44 44", ["3378"] = "55 44 212", ["3381"] = "55 21 55", ["3382"] = "55 21 14", ["3383"] = "55 21 535", ["3384"] = "55 21 535", ["3385"] = "55 21 55", ["3386"] = "55 21 14", ["3387"] = "55 21 44", ["3388"] = "55 21 212", ["3411"] = "55 33 55", ["3412"] = "55 33 55", ["3413"] = "55 33 535", ["3414"] = "55 33 535", ["3415"] = "55 33 55", ["3416"] = "55 33 55", ["3417"] = "55 33 44", ["3218"] = "55 33 212", ["3421"] = "55 31 55", ["3422"] = "55 31 14", ["3423"] = "55 33 535", ["3424"] = "55 33 535", ["3425"] = "55 31 55", ["3425C"] = "55 33 55", ["3426"] = "55 31 14", ["3427"] = "55 33 44", ["3428"] = "55 33 212", ["3431"] = "55 55 334", ["3432"] = "55 55 313", ["3433"] = "55 53 535", ["3434"] = "55 53 535", ["3435"] = "55 53 55", ["3436"] = "55 55 14", ["3437"] = "55 53 44", ["3438"] = "55 55 212", ["3441"] = "55 55 334", ["3442"] = "55 55 313", ["3443"] = "55 53 535", ["3444"] = "55 33 535", ["3445"] = "55 53 55", ["3446"] = "55 55 14", ["3447"] = "55 53 44", ["3448"] = "55 55 212", ["334A1"] = "55 53 55", ["3451"] = "55 33 55", ["3452"] = "55 33 14", ["3453"] = "55 33 535", ["3454"] = "55 33 535", ["3455"] = "55 53 55", ["3456"] = "55 55 14", ["3457"] = "55 33 44", ["3458"] = "55 55 212", ["345A2"] = "55 33 55", ["345A6"] = "55 33 55", ["345C1"] = "55 55 0", ["345C3"] = "55 53 535", ["345C4"] = "55 53 535", ["3461"] = "55 53 55", ["3462"] = "55 53 14", ["3463"] = "55 53 535", ["3464"] = "55 33 535", ["3465"] = "55 53 55", ["3466"] = "55 55 14", ["3467"] = "55 53 44", ["3468"] = "55 55 212", ["346A2"] = "55 33 55", ["346A3"] = "55 33 55", ["346A5"] = "55 33 55", ["346A6"] = "55 33 55", ["346C2"] = "55 55 0", ["3471"] = "55 44 55", ["3472"] = "55 44 55", ["3473"] = "55 44 535", ["3474"] = "55 44 535", ["3475"] = "55 44 55", ["3476"] = "55 44 14", ["3477"] = "55 44 44", ["3478"] = "55 44 212", ["3481"] = "55 21 55", ["3482"] = "55 21 14", ["3483"] = "55 21 535", ["3484"] = "55 21 535", ["3485"] = "55 21 55", ["3486"] = "55 21 14", ["3487"] = "55 21 44", ["3488"] = "55 21 212", ["3511"] = "33 33 55", ["3512"] = "33 33 55", ["3513"] = "33 33 535", ["3514"] = "33 33 535", ["3515"] = "33 33 55", ["3516"] = "33 33 55", ["3517"] = "33 33 44", ["3218"] = "33 33 212", ["3521"] = "33 31 55", ["3522"] = "33 31 14", ["3523"] = "33 33 535", ["3524"] = "33 33 535", ["3525"] = "33 31 55", ["3525C"] = "33 33 55", ["3526"] = "33 31 14", ["3527"] = "33 33 44", ["3528"] = "33 33 212", ["3531"] = "33 55 334", ["3532"] = "33 55 313", ["3533"] = "33 53 535", ["3534"] = "33 53 535", ["3535"] = "33 53 55", ["3536"] = "33 55 14", ["3537"] = "33 53 44", ["3538"] = "33 55 212", ["3541"] = "33 55 334", ["3542"] = "33 55 313", ["3543"] = "33 53 535", ["3544"] = "33 33 535", ["3545"] = "33 53 55", ["3546"] = "33 55 14", ["3547"] = "33 53 44", ["3548"] = "33 55 212", ["354A1"] = "33 53 55", ["3551"] = "33 33 55", ["3552"] = "33 33 14", ["3553"] = "33 33 535", ["3554"] = "33 33 535", ["3555"] = "33 53 55", ["3556"] = "33 55 14", ["3557"] = "33 33 44", ["3258"] = "33 55 212", ["355A2"] = "33 33 55", ["355A6"] = "33 33 55", ["355C1"] = "33 55 0", ["355C3"] = "33 53 535", ["355C4"] = "33 53 535", ["3561"] = "33 53 55", ["3562"] = "33 53 14", ["3563"] = "33 53 535", ["3564"] = "33 33 535", ["3565"] = "33 53 55", ["3566"] = "33 55 14", ["3567"] = "33 53 44", ["3568"] = "33 55 212", ["356A2"] = "33 33 55", ["356A3"] = "33 33 55", ["356A5"] = "33 33 55", ["356A6"] = "33 33 55", ["356C2"] = "33 55 0", ["3571"] = "33 44 55", ["3572"] = "33 44 55", ["3573"] = "33 44 535", ["3574"] = "33 44 535", ["3575"] = "33 44 55", ["3576"] = "33 44 14", ["3577"] = "33 44 44", ["3578"] = "33 44 212", ["3581"] = "33 21 55", ["3582"] = "33 21 14", ["3583"] = "33 21 535", ["3584"] = "33 21 535", ["3585"] = "33 21 55", ["3586"] = "33 21 14", ["3587"] = "33 21 44", ["3588"] = "33 21 212", ["3611"] = "55 33 55", ["3612"] = "55 33 55", ["3613"] = "55 33 535", ["3614"] = "55 33 535", ["3615"] = "55 33 55", ["3616"] = "55 33 55", ["3617"] = "55 33 44", ["3218"] = "55 33 212", ["3621"] = "55 31 55", ["3622"] = "55 31 14", ["3623"] = "55 33 535", ["3624"] = "55 33 535", ["3625"] = "55 31 55", ["3625C"] = "55 33 55", ["3626"] = "55 31 14", ["3627"] = "55 33 44", ["3628"] = "55 33 212", ["3631"] = "55 55 334", ["3632"] = "55 55 313", ["3633"] = "55 53 535", ["3634"] = "55 53 535", ["3635"] = "55 53 55", ["3636"] = "55 55 14", ["3637"] = "55 53 44", ["3638"] = "55 55 212", ["3641"] = "55 55 334", ["3642"] = "55 55 313", ["3643"] = "55 53 535", ["3644"] = "55 33 535", ["3645"] = "55 53 55", ["3646"] = "55 55 14", ["3647"] = "55 53 44", ["3648"] = "55 55 212", ["364A1"] = "55 53 55", ["3651"] = "55 33 55", ["3652"] = "55 33 14", ["3653"] = "55 33 535", ["3654"] = "55 33 535", ["3655"] = "55 53 55", ["3656"] = "55 55 14", ["3657"] = "55 33 44", ["3658"] = "55 55 212", ["365A2"] = "55 33 55", ["365A6"] = "55 33 55", ["365C1"] = "55 55 0", ["365C3"] = "55 53 535", ["365C4"] = "55 53 535", ["3661"] = "55 53 55", ["3662"] = "55 53 14", ["3663"] = "55 53 535", ["3664"] = "55 33 535", ["3665"] = "55 53 55", ["3666"] = "55 55 14", ["3667"] = "55 53 44", ["3668"] = "55 55 212", ["366A2"] = "55 33 55", ["366A3"] = "55 33 55", ["366A5"] = "55 33 55", ["366A6"] = "55 33 55", ["366C2"] = "55 55 0", ["3671"] = "55 44 55", ["3672"] = "55 44 55", ["3673"] = "55 44 535", ["3674"] = "55 44 535", ["3675"] = "55 44 55", ["3676"] = "55 44 14", ["3677"] = "55 44 44", ["3678"] = "55 44 212", ["3681"] = "55 21 55", ["3682"] = "55 21 14", ["3683"] = "55 21 535", ["3684"] = "55 21 535", ["3685"] = "55 21 55", ["3686"] = "55 21 14", ["3687"] = "55 21 44", ["3688"] = "55 21 212", --according to p.104: 「陽去在陰去(5)、陽去(6)前有時變[33]」 ["36A51"] = "33 33 55", ["36A52"] = "33 33 14", ["36A53"] = "33 33 535", ["36A54"] = "33 33 535", ["36A55"] = "33 53 55", ["36A56"] = "33 55 14", ["36A57"] = "33 33 44", ["36A58"] = "33 55 212", ["36A5A2"] = "33 33 55", ["36A5A6"] = "33 33 55", ["36A5C1"] = "33 55 0", ["36A5C3"] = "33 53 535", ["36A5C4"] = "33 53 535", ["36A61"] = "33 53 55", ["36A62"] = "33 53 14", ["36A63"] = "33 53 535", ["36A64"] = "33 33 535", ["36A65"] = "33 53 55", ["36A66"] = "33 55 14", ["36A67"] = "33 53 44", ["36A68"] = "33 55 212", ["36A6A2"] = "33 33 55", ["36A6A3"] = "33 33 55", ["36A6A5"] = "33 33 55", ["36A6A6"] = "33 33 55", ["36A6C2"] = "33 55 0", ["3711"] = "44 33 55", ["3712"] = "44 33 55", ["3713"] = "44 33 535", ["3714"] = "44 33 535", ["3715"] = "44 33 55", ["3716"] = "44 33 55", ["3717"] = "44 33 44", ["3218"] = "44 33 212", ["3721"] = "44 31 55", ["3722"] = "44 31 14", ["3723"] = "44 33 535", ["3724"] = "44 33 535", ["3725"] = "44 31 55", ["3725C"] = "44 33 55", ["3726"] = "44 31 14", ["3727"] = "44 33 44", ["3728"] = "44 33 212", ["3731"] = "44 44 334", ["3732"] = "44 44 313", ["3733"] = "44 53 535", ["3734"] = "44 53 535", ["3735"] = "44 53 55", ["3736"] = "44 55 14", ["3737"] = "44 53 44", ["3738"] = "44 55 212", ["3741"] = "44 44 334", ["3742"] = "44 44 313", ["3743"] = "44 53 535", ["3744"] = "44 33 535", ["3745"] = "44 53 55", ["3746"] = "44 55 14", ["3747"] = "44 53 44", ["3748"] = "44 55 212", ["374A1"] = "44 53 55", ["3751"] = "44 33 55", ["3752"] = "44 33 14", ["3753"] = "44 33 535", ["3754"] = "44 33 535", ["3755"] = "44 53 55", ["3756"] = "44 55 14", ["3757"] = "44 33 44", ["3758"] = "44 55 212", ["375A2"] = "44 33 55", ["375A6"] = "44 33 55", ["375C1"] = "44 55 0", ["375C3"] = "44 53 535", ["375C4"] = "44 53 535", ["3761"] = "44 53 55", ["3762"] = "44 53 14", ["3763"] = "44 53 535", ["3764"] = "44 33 535", ["3765"] = "44 53 55", ["3766"] = "44 55 14", ["3767"] = "44 53 44", ["3768"] = "44 55 212", ["376A2"] = "44 33 55", ["376A3"] = "44 33 55", ["376A5"] = "44 33 55", ["376A6"] = "44 33 55", ["376C2"] = "44 55 0", ["3771"] = "44 44 55", ["3772"] = "44 44 55", ["3773"] = "44 44 535", ["3774"] = "44 44 535", ["3775"] = "44 44 55", ["3776"] = "44 44 14", ["3777"] = "44 44 44", ["3778"] = "44 44 212", ["3781"] = "44 21 55", ["3782"] = "44 21 14", ["3783"] = "44 21 535", ["3784"] = "44 21 535", ["3785"] = "44 21 55", ["3786"] = "44 21 14", ["3787"] = "44 21 44", ["3788"] = "44 21 212", ["3811"] = "21 33 55", ["3812"] = "21 33 55", ["3813"] = "21 33 535", ["3814"] = "21 33 535", ["3815"] = "21 33 55", ["3816"] = "21 33 55", ["3817"] = "21 33 44", ["3218"] = "21 33 212", ["3821"] = "21 31 55", ["3822"] = "21 31 14", ["3823"] = "21 33 535", ["3824"] = "21 33 535", ["3825"] = "21 31 55", ["3825C"] = "21 33 55", ["3826"] = "21 31 14", ["3827"] = "21 33 44", ["3828"] = "21 33 212", ["3831"] = "21 44 334", ["3832"] = "21 44 313", ["3833"] = "21 53 535", ["3834"] = "21 53 535", ["3835"] = "21 53 55", ["3836"] = "21 55 14", ["3837"] = "21 53 44", ["3838"] = "21 55 212", ["3841"] = "21 44 334", ["3842"] = "21 44 313", ["3843"] = "21 53 535", ["3844"] = "21 33 535", ["3845"] = "21 53 55", ["3846"] = "21 55 14", ["3847"] = "21 53 44", ["3848"] = "21 55 212", ["384A1"] = "21 53 55", ["3851"] = "21 33 55", ["3852"] = "21 33 14", ["3853"] = "21 33 535", ["3854"] = "21 33 535", ["3855"] = "21 53 55", ["3856"] = "21 55 14", ["3857"] = "21 33 44", ["3858"] = "21 55 212", ["385A2"] = "21 33 55", ["385A6"] = "21 33 55", ["385C1"] = "21 55 0", ["385C3"] = "21 53 535", ["385C4"] = "21 53 535", ["3861"] = "21 53 55", ["3862"] = "21 53 14", ["3863"] = "21 53 535", ["3864"] = "21 33 535", ["3865"] = "21 53 55", ["3866"] = "21 55 14", ["3867"] = "21 53 44", ["3868"] = "21 55 212", ["386A2"] = "21 33 55", ["386A3"] = "21 33 55", ["386A5"] = "21 33 55", ["386A6"] = "21 33 55", ["386C2"] = "21 55 0", ["3871"] = "21 44 55", ["3872"] = "21 44 55", ["3873"] = "21 44 535", ["3874"] = "21 44 535", ["3875"] = "21 44 55", ["3876"] = "21 44 14", ["3877"] = "21 4 44", ["3878"] = "21 44 212", ["3881"] = "21 21 55", ["3882"] = "21 21 14", ["3883"] = "21 21 535", ["3884"] = "21 21 535", ["3885"] = "21 21 55", ["3886"] = "21 21 14", ["3887"] = "21 21 44", ["3888"] = "21 21 212", --PREDICATE-OBJECT SANDHI (述賓式) p. 105 --EACH BLOCK MARKED WITH P AFTER END SYLLABLE FOR NOW. CAN CHANGE LATER ACCORDING TO CODE SPECIFICS --DISYLLABIC ONLY ["211P"] = "33 334", ["212P"] = "33 313", ["213P"] = "33 535", ["214P"] = "33 535", ["215P"] = "33 55", ["216P"] = "33 14", ["217P"] = "33 44", ["218P"] = "33 212", ["221P"] = "33 334", ["222P"] = "33 313", ["223P"] = "33 535", ["224P"] = "33 535", ["225P"] = "31 55", ["225CP"] = "33 55", ["226P"] = "33 14", ["227P"] = "33 44", ["228P"] = "33 212", ["231P"] = "55 334", ["232P"] = "55 313", ["233P"] = "53 535", ["234P"] = "53 535", ["235P"] = "53 55", ["236P"] = "55 14", ["237P"] = "53 44", ["238P"] = "55 212", ["241P"] = "55 334", ["242P"] = "55 313", ["243P"] = "53 535", ["244P"] = "33 535", ["245P"] = "53 55", ["246P"] = "55 14", ["247P"] = "534 44", ["248P"] = "55 212", ["24A1P"] = "53 55", ["251P"] = "33 334", ["252P"] = "33 313", ["253P"] = "33 535", ["254P"] = "33 535", ["255P"] = "33 55", ["256P"] = "33 14", ["257P"] = "33 44", ["258P"] = "55 212", ["25C1P"] = "55 334", ["25C2P"] = "55 313", ["261P"] = "55 334", ["262P"] = "55 313", ["263P"] = "53 535", ["264P"] = "33 535", ["265P"] = "53 55", ["266P"] = "55 14", ["267P"] = "53 44", ["268P"] = "55 212", ["271P"] = "44 334", ["272P"] = "44 313", ["273P"] = "44 535", ["274P"] = "44 535", ["275P"] = "44 55", ["276P"] = "44 14", ["277P"] = "44 44", ["278P"] = "44 212", ["281P"] = "21 334", ["282P"] = "21 313", ["283P"] = "21 535", ["284P"] = "21 535", ["285P"] = "21 55", ["286P"] = "21 14", ["287P"] = "21 44", ["288P"] = "21 212", --Also like half of this is basically the same as the word tone sandhi. i've kept most patterns that are identical to the word tone sandhis here in the P table, but if needs be and they end up being redundancies i can remove the duplicate ones (might end up with the input acting up but eh) --none of the 24x's are different from word tone so that row is directly deleteable if its not gonna be useful --CLASSIFIER SANDHI (數量式) pp.105-106 --THE ACTUAL NUMBERS THEMSELVES TAKE ON WORD SANDHI --CITATION TONE OF THE BOUNDARY CHARACTER + CITATION TONE OF CLASSIFIER CHARACTER -> BOTH DETERMINE THE POST-SANDHI VALUE ON THE CLASSIFIER CHARACTER TOGETHER. --MOST LIKELY WE WILL NEED SOME KIND OF AN ALGORITHM+OPERATOR TO CHECK THE !!!CITATION!!! TONE CATEGORY OF THESE TWO CHARACTERS, BEFORE GETTING FROM THIS DATA TO CALCULATE THE CORRECT POST-SANDHI TONE FOR THE CLASSIFIER. ["11#1"] = "55", ["13#1"] = "55", ["14#1"] = "55", ["15#1"] = "55", ["16#1"] = "55", ["17#1"] = "55", ["18#1"] = "55", ["11#2"] = "55", ["13#2"] = "313", ["14#2"] = "313", ["15#2"] = "313", ["16#2"] = "313", ["17#2"] = "55", ["17A#2"] = "313", ["18#2"] = "313", ["11#3"] = "55", ["13#3"] = "55", ["14#3"] = "55", ["15#3"] = "55", ["16#3"] = "55", ["17#3"] = "55", ["18#3"] = "55", ["11#4"] = "55", ["13#4"] = "14", ["14#4"] = "14", ["15#4"] = "14", ["16#4"] = "14", ["17#4"] = "55", ["17A#4"] = "14", ["18#4"] = "14", ["11#5"] = "55", ["13#5"] = "55", ["14#5"] = "55", ["15#5"] = "55", ["16#5"] = "55", ["17#5"] = "55", ["18#5"] = "55", ["11#6"] = "55", ["13#6"] = "14", ["14#6"] = "14", ["15#6"] = "14", ["16#6"] = "14", ["17#6"] = "55", ["17A#6"] = "14", ["18#6"] = "14", ["11#7"] = "44", ["13#7"] = "44", ["14#7"] = "44", ["15#7"] = "44", ["16#7"] = "44", ["17#7"] = "44", ["18#7"] = "44", ["11#8"] = "44", ["13#8"] = "212", ["14#8"] = "212", ["15#8"] = "212", ["16#8"] = "212", ["17#8"] = "44", ["17A#8"] = "212", ["18#8"] = "212", --no 12#x because there is no number word that is tone 2 --17A#2/4/6/8 - for 一 - this behaves differently from 百 and 七. --一+classifier - 17#x for 1/3/5/7, 一&2 -> 7iq&2[...] (4 313), 一&4 -> 7iq&6[...]4 (4 313), 一&6 -> 7iq&6[...] (4 14), 一&8 -> 7iq&8[...] (4 212) --NONCONCRETE TAIL~NEUTRALISED TAIL SANDHI (實虛式) pp.106-108 --mark with N? but clashes with numeral (n) in northern wu sandbox and c for numeral-classifier also clashes with 5C etc in word tone --OK yknow what i'm using T for this ["211T"] = "33 55", ["212T"] = "33 55", ["213T"] = "33 55", ["214T"] = "33 55", ["215T"] = "33 55", ["216T"] = "33 55", ["217T"] = "33 44", ["218T"] = "33 212", ["221T"] = "33 55", ["222T"] = "31 55", ["223T"] = "31 55", ["223AT"] = "53 55", ["224T"] = "31 55", ["224AT"] = "31 14", ["225T"] = "31 55", ["225CT"] = "33 55", ["226T"] = "31 14", ["227T"] = "33 44", ["228T"] = "33 212", ["231T"] = "55 334", ["232T"] = "53 14", ["232AT"] = "55 14", ["233T"] = "53 55", ["234T"] = "53 55", ["235T"] = "53 55", ["236T"] = "55 14", ["237T"] = "53 44", ["238T"] = "55 212", ["241T"] = "55 334", ["242T"] = "55 313", ["243T"] = "53 535", ["244T"] = "55 14", ["245T"] = "53 55", ["246T"] = "55 14", ["247T"] = "534 44", ["248T"] = "55 212", ["24A1T"] = "53 55", ["251T"] = "33 55", ["252T"] = "33 14", ["253T"] = "33 55", ["254T"] = "33 14", ["255T"] = "55 0", ["256T"] = "55 0", ["257T"] = "33 44", ["258T"] = "55 0", ["25A2T"] = "33 55", ["25A6T"] = "33 55", ["25C1T"] = "55 0", ["25C3T"] = "53 535", ["25C4T"] = "53 535", ["261T"] = "53 55", ["262T"] = "53 14", ["263T"] = "53 535", ["264T"] = "14 0", ["265T"] = "53 55", ["266T"] = "14 0", ["267T"] = "53 44", ["268T"] = "55 212", ["26A2T"] = "33 55", ["26A3T"] = "33 55", ["26A5T"] = "33 55", ["26A6T"] = "33 55", ["26C2T"] = "55 0", ["271T"] = "44 0", ["272T"] = "44 55", ["273T"] = "44 535", ["274T"] = "44 535", ["275T"] = "44 55", ["276T"] = "44 55", ["277T"] = "44 44", ["278T"] = "44 212", ["281T"] = "21 55", ["282T"] = "21 14", ["283T"] = "21 55", ["284T"] = "21 55", ["284AT"] = "21 14", ["285T"] = "21 55", ["286T"] = "21 14", ["287T"] = "21 44", ["288T"] = "21 212", --25Ax, 25Cx, 26Ax and 26Cx all same as word sandhi --there are some 2xxAT's in here, which i'm not sure if it's going to be a problem but for what its worth --ERHUA DIMINUTIVE TONES (小稱調) p. 110 --i'm marking this with an xR for now --1R 2R 5R 6R = no change from original tone. can delete if need be ["1R"] = "334", ["2R"] = "313", ["3R"] = "55", ["4R"] = "14", ["5R"] = "55", ["5AR"] = "535", ["6R"] = "14", ["7R"] = "55", ["8R"] = "14", } --diagnose_tones (if needed) local function tone_superscript(text) return text:gsub('[1-5]',{['1']='¹',['2']='²',['3']='³',['4']='⁴',['5']='⁵'}) end -- TODO: RPS local function get_tone(text) text = text:gsub("(%d)%l+%d","%1"):gsub("%l+","") local word_length = text:gsub("[^ ]+",""):len() + 1 local _, erhua = text:gsub("R","") local result = tone_contours[word_length .. text:gsub("[ R]+","")] or error("Tone input incorrect: " .. word_length .. text:gsub("[ R]+","")) if erhua > 0 then local tone = text:match("%dA?R") result = result:gsub("%d+$",tone_contours[tone]) end return tone_superscript(result) end local function rom_check(text) --this checks wugniu if text:match('ghi') then error('Invalid initial "ghi". Use "yi" instead.') end if text:match('ghu') then error('Invalid initial "ghu". Use "wu" instead.') end if text:match('%f[%l]y%f[%L]') then error('Invalid syllable "y"') end if text:match('gn[aeou]') then error('Palatalization expected. Insert an "i" after the "gn".') end return nil end function export.make(text, w_count) rom_check(text) -- preprocess local ipa_text = text :gsub(" (%l+)(%d%u*)", " %2%1") :gsub("(%d%u?)(%l+)#", "%1%2&%1#") local format_text = text :gsub("([34567])[AC]?", function(tone) return tone == "4" and "3" or tone end) :gsub("#","&") :gsub("[PT]","") format_text = w_pron.wugniu_format(format_text) :gsub("R","R") local show if not w_count or w_count > 1 then show = '\n** <small>(' .. w_pron.name_boilerplate('Jinhua') .. ')</small>' else show = ' <small>(' .. w_pron.name_boilerplate('Jinhua') .. ', <i>[[Wiktionary:About Chinese/Wu|Wugniu]]</i>)</small>' end local hide = '\n** <small>(' .. w_pron.name_boilerplate('Jinhua') .. ')</small>' show = show .. ': ' .. w_pron.consolas(format_text) hide = hide .. w_pron.wugniu_boilerplate(format_text) .. w_pron.IPA_boilerplate(w_pron.wugniu_to_ipa(ipa_text, 'jh', get_initial, get_final, ipa_syllabic, get_tone), 'Jinhua') return show,hide end return export fxnwlz1zhgigxjk76xlzp5sot0pqvob 234943 234942 2026-05-26T07:13:38Z Lee 19 [[:en:Module:wuu-pron/Jinhua]] වෙතින් එක් සංශෝධනයක් 185478 Scribunto text/plain --jinhuanese experiemental module (ignore the "Hangzhou" bit) local w_pron = require("Module:wuu-pron") local export = {} local ipa_initial = { ["p"] = "p", ["ph"] = "pʰ", ["b"] = "b", ["m"] = "m", ["f"] = "f", ["v"] = "v", ["t"] = "t", ["th"] = "tʰ", ["d"] = "d", ["n"] = "n", ["l"] = "l", ["ts"] = "t͡s", ["tsh"] = "t͡sʰ", ["s"] = "s", ["z"] = "z", ["c"] = "t͡ɕ", ["ch"] = "t͡ɕʰ", ["dz"] = "d͡z", ["j"] = "d͡ʑ", ["gn"] = "n̠ʲ", ["sh"] = "ɕ", ["zh"] = "ʑ", ["k"] = "k", ["kh"] = "kʰ", ["g"] = "ɡ", ["ng"] = "ŋ", ["h"] = "h", ["gh"] = "ɦ", [""] = "", } --[""] = "", local ipa_final = { ["oea"] = "ɤa", ["a"] = "ɑ", ["o"] = "o", ["oe"] = "ɤ", ["ou"] = "ɯ", ["ae"] = "ɛ", ["ei"] = "ei", ["au"] = "ɑu", ["eu"] = "eu", ["i"] = "i", ["iaa"] = "ia", ["ia"] = "iɑ", ["ie"] = "ie", ["iei"] = "iɛ", ["iae"] = "iɛ", ["iau"] = "iɑu", ["ieu"] = "iu", ["u"] = "u", ["ua"] = "uɑ", ["uo"] = "uɤ", ["uae"] = "uɛ", ["ui"] = "ui", ["iu"] = "y", ["iua"] = "yɑ", ["ioe"] = "yɤ", ["iuae"] = "yɛ", ["en"] = "əŋ", ["oen"] = "ɤã", ["an"] = "ã", ["aon"] = "ɑŋ", ["on"] = "oŋ", ["in"] = "iŋ", ["ian"] = "iã", ["iaon"] = "iɑŋ", ["ion"] = "ioŋ", ["uen"] = "uəŋ", ["uan"] = "uã", ["uaon"] = "uɑŋ", ["iun"] = "yəŋ", ["iuan"] = "yã", ["iuaon"] = "yɑŋ", ["eq"] = "əʔ", ["oq"] = "oʔ", ["iq"] = "iəʔ", ["ioq"] = "ioʔ", ["ueq"] = "uəʔ", ["iuq"] = "yəʔ", ["er"] = "əl", ["y"] = "z̩", --Erhua rimes (a priori for now, not seen in the dictionary body at wugniu.com) ["ynn"] = "z̩̃", ["inn"] = "ĩ", ["unn"] = "ũ", ["iunn"] = "ỹ", ["ieunn"] = "iũ", ["oenn"] = "ɤ̃", ["enn"] = "ẽ", ["ienn"] = "iẽ", ["uenn"] = "uẽ", ["iuenn"] = "yẽ", ["aunn"] = "ɔ̃", ["iaunn"] = "iɔ̃", ["onn"] = "õ", ["ionn"] = "iõ" } local function get_initial(initial) return ipa_initial[initial] or error('Invalid initial: "' .. initial .. '"') end local function get_final(final) return ipa_final[final] or error('Invalid final: "' .. final .. '"') end local ipa_syllabic = { ["m"] = "m̩", ["ng"] = "ŋ̍", } local tone_contours = { ["10"] = "", ["11"] = "334", ["12"] = "313", ["13"] = "535", ["14"] = "535", ["15"] = "55", ["16"] = "14", ["17"] = "44", ["18"] = "212", ["17A"] = "44", --17A for 一 and only 一 in number sandhi --sandhi: 當代 pp. 657, etc. --Word (Phrase) sandhi: 吳語婺州方言研究 pp. 102 onwards. --disyllabic ["211"] = "33 55", ["212"] = "33 55", ["213"] = "33 535", ["214"] = "33 535", ["215"] = "33 55", ["216"] = "33 55", ["217"] = "33 44", ["218"] = "33 212", ["221"] = "31 55", ["222"] = "31 14", ["223"] = "33 535", ["224"] = "33 535", ["225"] = "31 55", ["225C"] = "33 55", ["226"] = "31 14", ["227"] = "33 44", ["228"] = "33 212", ["231"] = "55 334", ["232"] = "55 313", ["233"] = "53 535", ["234"] = "53 535", ["235"] = "53 55", ["236"] = "55 14", ["237"] = "53 44", ["238"] = "55 212", ["241"] = "55 334", ["242"] = "55 313", ["243"] = "53 535", ["244"] = "33 535", ["245"] = "53 55", ["246"] = "55 14", ["247"] = "534 44", ["248"] = "55 212", ["24A1"] = "53 55", ["251"] = "33 55", ["252"] = "33 14", ["253"] = "33 535", ["254"] = "33 535", ["255"] = "53 55", ["256"] = "55 14", ["257"] = "33 44", ["258"] = "55 212", ["25A2"] = "33 55", ["25A6"] = "33 55", ["25C1"] = "55 0", ["25C3"] = "53 535", ["25C4"] = "53 535", ["261"] = "53 55", ["262"] = "53 14", ["263"] = "53 535", ["264"] = "33 535", ["265"] = "53 55", ["266"] = "55 14", ["267"] = "53 44", ["268"] = "55 212", ["26A2"] = "33 55", ["26A3"] = "33 55", ["26A5"] = "33 55", ["26A6"] = "33 55", ["26C2"] = "55 0", ["271"] = "44 55", ["272"] = "44 55", ["273"] = "44 535", ["274"] = "44 535", ["275"] = "44 55", ["276"] = "44 14", ["277"] = "44 44", ["278"] = "44 212", ["281"] = "21 55", ["282"] = "21 14", ["283"] = "21 535", ["284"] = "21 535", ["285"] = "21 55", ["286"] = "21 14", ["287"] = "21 44", ["288"] = "21 212", --trisyllabic word sandhi. not tabulated but vaguely described in above source ["3111"] = "33 33 55", ["3112"] = "33 33 55", ["3113"] = "33 33 535", ["3114"] = "33 33 535", ["3115"] = "33 33 55", ["3116"] = "33 33 55", ["3117"] = "33 33 44", ["3118"] = "33 33 212", ["3121"] = "33 31 55", ["3122"] = "33 31 14", ["3123"] = "33 33 535", ["3124"] = "33 33 535", ["3125"] = "33 31 55", ["3125C"] = "33 33 55", ["3126"] = "33 31 14", ["3127"] = "33 33 44", ["3128"] = "33 33 212", ["3131"] = "33 55 334", ["3132"] = "33 55 313", ["3133"] = "33 53 535", ["3134"] = "33 53 535", ["3135"] = "33 53 55", ["3136"] = "33 55 14", ["3137"] = "33 53 44", ["3138"] = "33 55 212", ["3141"] = "33 55 334", ["3142"] = "33 55 313", ["3143"] = "33 53 535", ["3144"] = "33 33 535", ["3145"] = "33 53 55", ["3146"] = "33 55 14", ["3147"] = "33 53 44", ["3148"] = "33 55 212", ["314A1"] = "33 53 55", ["3151"] = "33 33 55", ["3152"] = "33 33 14", ["3153"] = "33 33 535", ["3154"] = "33 33 535", ["3155"] = "33 53 55", ["3156"] = "33 55 14", ["3157"] = "33 33 44", ["3158"] = "33 55 212", ["315A2"] = "33 33 55", ["315A6"] = "33 33 55", ["315C1"] = "33 55 0", ["315C3"] = "33 53 535", ["315C4"] = "33 53 535", ["3161"] = "33 53 55", ["3162"] = "33 53 14", ["3163"] = "33 53 535", ["3164"] = "33 33 535", ["3165"] = "33 53 55", ["3166"] = "33 55 14", ["3167"] = "33 53 44", ["3168"] = "33 55 212", ["316A2"] = "33 33 55", ["316A3"] = "33 33 55", ["316A5"] = "33 33 55", ["316A6"] = "33 33 55", ["316C2"] = "33 55 0", ["3171"] = "33 44 55", ["3172"] = "33 44 55", ["3173"] = "33 44 535", ["3174"] = "33 44 535", ["3175"] = "33 44 55", ["3176"] = "33 44 14", ["3177"] = "33 44 44", ["3178"] = "33 44 212", ["3181"] = "33 21 55", ["3182"] = "33 21 14", ["3183"] = "33 21 535", ["3184"] = "33 21 535", ["3185"] = "33 21 55", ["3186"] = "33 21 14", ["3187"] = "33 21 44", ["3188"] = "33 21 212", ["3211"] = "33 33 55", ["3212"] = "33 33 55", ["3213"] = "33 33 535", ["3214"] = "33 33 535", ["3215"] = "33 33 55", ["3216"] = "33 33 55", ["3217"] = "33 33 44", ["3218"] = "33 33 212", ["3221"] = "33 31 55", ["3222"] = "33 31 14", ["3223"] = "33 33 535", ["3224"] = "33 33 535", ["3225"] = "33 31 55", ["3225C"] = "33 33 55", ["3226"] = "33 31 14", ["3227"] = "33 33 44", ["3228"] = "33 33 212", ["3231"] = "33 55 334", ["3232"] = "33 55 313", ["3233"] = "33 53 535", ["3234"] = "33 53 535", ["3235"] = "33 53 55", ["3236"] = "33 55 14", ["3237"] = "33 53 44", ["3238"] = "33 55 212", ["3241"] = "33 55 334", ["3242"] = "33 55 313", ["3243"] = "33 53 535", ["3244"] = "33 33 535", ["3245"] = "33 53 55", ["3246"] = "33 55 14", ["3247"] = "33 53 44", ["3248"] = "33 55 212", ["324A1"] = "33 53 55", ["3251"] = "33 33 55", ["3252"] = "33 33 14", ["3253"] = "33 33 535", ["3254"] = "33 33 535", ["3255"] = "33 53 55", ["3256"] = "33 55 14", ["3257"] = "33 33 44", ["3258"] = "33 55 212", ["325A2"] = "33 33 55", ["325A6"] = "33 33 55", ["325C1"] = "33 55 0", ["325C3"] = "33 53 535", ["325C4"] = "33 53 535", ["3261"] = "33 53 55", ["3262"] = "33 53 14", ["3263"] = "33 53 535", ["3264"] = "33 33 535", ["3265"] = "33 53 55", ["3266"] = "33 55 14", ["3267"] = "33 53 44", ["3268"] = "33 55 212", ["326A2"] = "33 33 55", ["326A3"] = "33 33 55", ["326A5"] = "33 33 55", ["326A6"] = "33 33 55", ["326C2"] = "33 55 0", ["3271"] = "33 44 55", ["3272"] = "33 44 55", ["3273"] = "33 44 535", ["3274"] = "33 44 535", ["3275"] = "33 44 55", ["3276"] = "33 44 14", ["3277"] = "33 44 44", ["3278"] = "33 44 212", ["3281"] = "33 21 55", ["3282"] = "33 21 14", ["3283"] = "33 21 535", ["3284"] = "33 21 535", ["3285"] = "33 21 55", ["3286"] = "33 21 14", ["3287"] = "33 21 44", ["3288"] = "33 21 212", ["3311"] = "55 33 55", ["3312"] = "55 33 55", ["3313"] = "55 33 535", ["3314"] = "55 33 535", ["3315"] = "55 33 55", ["3316"] = "55 33 55", ["3317"] = "55 33 44", ["3218"] = "55 33 212", ["3321"] = "55 31 55", ["3322"] = "55 31 14", ["3323"] = "55 33 535", ["3324"] = "55 33 535", ["3325"] = "55 31 55", ["3325C"] = "55 33 55", ["3326"] = "55 31 14", ["3327"] = "55 33 44", ["3328"] = "55 33 212", ["3331"] = "55 55 334", ["3332"] = "55 55 313", ["3333"] = "55 53 535", ["3334"] = "55 53 535", ["3335"] = "55 53 55", ["3336"] = "55 55 14", ["3337"] = "55 53 44", ["3338"] = "55 55 212", ["3341"] = "55 55 334", ["3342"] = "55 55 313", ["3343"] = "55 53 535", ["3344"] = "55 33 535", ["3345"] = "55 53 55", ["3346"] = "55 55 14", ["3347"] = "55 53 44", ["3348"] = "55 55 212", ["334A1"] = "55 53 55", ["3351"] = "55 33 55", ["3352"] = "55 33 14", ["3353"] = "55 33 535", ["3354"] = "55 33 535", ["3355"] = "55 53 55", ["3356"] = "55 55 14", ["3357"] = "55 33 44", ["3358"] = "55 55 212", ["335A2"] = "55 33 55", ["335A6"] = "55 33 55", ["335C1"] = "55 55 0", ["335C3"] = "55 53 535", ["335C4"] = "55 53 535", ["3361"] = "55 53 55", ["3362"] = "55 53 14", ["3363"] = "55 53 535", ["3364"] = "55 33 535", ["3365"] = "55 53 55", ["3366"] = "55 55 14", ["3367"] = "55 53 44", ["3368"] = "55 55 212", ["336A2"] = "55 33 55", ["336A3"] = "55 33 55", ["336A5"] = "55 33 55", ["336A6"] = "55 33 55", ["336C2"] = "55 55 0", ["3371"] = "55 44 55", ["3372"] = "55 44 55", ["3373"] = "55 44 535", ["3374"] = "55 44 535", ["3375"] = "55 44 55", ["3376"] = "55 44 14", ["3377"] = "55 44 44", ["3378"] = "55 44 212", ["3381"] = "55 21 55", ["3382"] = "55 21 14", ["3383"] = "55 21 535", ["3384"] = "55 21 535", ["3385"] = "55 21 55", ["3386"] = "55 21 14", ["3387"] = "55 21 44", ["3388"] = "55 21 212", ["3411"] = "55 33 55", ["3412"] = "55 33 55", ["3413"] = "55 33 535", ["3414"] = "55 33 535", ["3415"] = "55 33 55", ["3416"] = "55 33 55", ["3417"] = "55 33 44", ["3218"] = "55 33 212", ["3421"] = "55 31 55", ["3422"] = "55 31 14", ["3423"] = "55 33 535", ["3424"] = "55 33 535", ["3425"] = "55 31 55", ["3425C"] = "55 33 55", ["3426"] = "55 31 14", ["3427"] = "55 33 44", ["3428"] = "55 33 212", ["3431"] = "55 55 334", ["3432"] = "55 55 313", ["3433"] = "55 53 535", ["3434"] = "55 53 535", ["3435"] = "55 53 55", ["3436"] = "55 55 14", ["3437"] = "55 53 44", ["3438"] = "55 55 212", ["3441"] = "55 55 334", ["3442"] = "55 55 313", ["3443"] = "55 53 535", ["3444"] = "55 33 535", ["3445"] = "55 53 55", ["3446"] = "55 55 14", ["3447"] = "55 53 44", ["3448"] = "55 55 212", ["334A1"] = "55 53 55", ["3451"] = "55 33 55", ["3452"] = "55 33 14", ["3453"] = "55 33 535", ["3454"] = "55 33 535", ["3455"] = "55 53 55", ["3456"] = "55 55 14", ["3457"] = "55 33 44", ["3458"] = "55 55 212", ["345A2"] = "55 33 55", ["345A6"] = "55 33 55", ["345C1"] = "55 55 0", ["345C3"] = "55 53 535", ["345C4"] = "55 53 535", ["3461"] = "55 53 55", ["3462"] = "55 53 14", ["3463"] = "55 53 535", ["3464"] = "55 33 535", ["3465"] = "55 53 55", ["3466"] = "55 55 14", ["3467"] = "55 53 44", ["3468"] = "55 55 212", ["346A2"] = "55 33 55", ["346A3"] = "55 33 55", ["346A5"] = "55 33 55", ["346A6"] = "55 33 55", ["346C2"] = "55 55 0", ["3471"] = "55 44 55", ["3472"] = "55 44 55", ["3473"] = "55 44 535", ["3474"] = "55 44 535", ["3475"] = "55 44 55", ["3476"] = "55 44 14", ["3477"] = "55 44 44", ["3478"] = "55 44 212", ["3481"] = "55 21 55", ["3482"] = "55 21 14", ["3483"] = "55 21 535", ["3484"] = "55 21 535", ["3485"] = "55 21 55", ["3486"] = "55 21 14", ["3487"] = "55 21 44", ["3488"] = "55 21 212", ["3511"] = "33 33 55", ["3512"] = "33 33 55", ["3513"] = "33 33 535", ["3514"] = "33 33 535", ["3515"] = "33 33 55", ["3516"] = "33 33 55", ["3517"] = "33 33 44", ["3218"] = "33 33 212", ["3521"] = "33 31 55", ["3522"] = "33 31 14", ["3523"] = "33 33 535", ["3524"] = "33 33 535", ["3525"] = "33 31 55", ["3525C"] = "33 33 55", ["3526"] = "33 31 14", ["3527"] = "33 33 44", ["3528"] = "33 33 212", ["3531"] = "33 55 334", ["3532"] = "33 55 313", ["3533"] = "33 53 535", ["3534"] = "33 53 535", ["3535"] = "33 53 55", ["3536"] = "33 55 14", ["3537"] = "33 53 44", ["3538"] = "33 55 212", ["3541"] = "33 55 334", ["3542"] = "33 55 313", ["3543"] = "33 53 535", ["3544"] = "33 33 535", ["3545"] = "33 53 55", ["3546"] = "33 55 14", ["3547"] = "33 53 44", ["3548"] = "33 55 212", ["354A1"] = "33 53 55", ["3551"] = "33 33 55", ["3552"] = "33 33 14", ["3553"] = "33 33 535", ["3554"] = "33 33 535", ["3555"] = "33 53 55", ["3556"] = "33 55 14", ["3557"] = "33 33 44", ["3258"] = "33 55 212", ["355A2"] = "33 33 55", ["355A6"] = "33 33 55", ["355C1"] = "33 55 0", ["355C3"] = "33 53 535", ["355C4"] = "33 53 535", ["3561"] = "33 53 55", ["3562"] = "33 53 14", ["3563"] = "33 53 535", ["3564"] = "33 33 535", ["3565"] = "33 53 55", ["3566"] = "33 55 14", ["3567"] = "33 53 44", ["3568"] = "33 55 212", ["356A2"] = "33 33 55", ["356A3"] = "33 33 55", ["356A5"] = "33 33 55", ["356A6"] = "33 33 55", ["356C2"] = "33 55 0", ["3571"] = "33 44 55", ["3572"] = "33 44 55", ["3573"] = "33 44 535", ["3574"] = "33 44 535", ["3575"] = "33 44 55", ["3576"] = "33 44 14", ["3577"] = "33 44 44", ["3578"] = "33 44 212", ["3581"] = "33 21 55", ["3582"] = "33 21 14", ["3583"] = "33 21 535", ["3584"] = "33 21 535", ["3585"] = "33 21 55", ["3586"] = "33 21 14", ["3587"] = "33 21 44", ["3588"] = "33 21 212", ["3611"] = "55 33 55", ["3612"] = "55 33 55", ["3613"] = "55 33 535", ["3614"] = "55 33 535", ["3615"] = "55 33 55", ["3616"] = "55 33 55", ["3617"] = "55 33 44", ["3218"] = "55 33 212", ["3621"] = "55 31 55", ["3622"] = "55 31 14", ["3623"] = "55 33 535", ["3624"] = "55 33 535", ["3625"] = "55 31 55", ["3625C"] = "55 33 55", ["3626"] = "55 31 14", ["3627"] = "55 33 44", ["3628"] = "55 33 212", ["3631"] = "55 55 334", ["3632"] = "55 55 313", ["3633"] = "55 53 535", ["3634"] = "55 53 535", ["3635"] = "55 53 55", ["3636"] = "55 55 14", ["3637"] = "55 53 44", ["3638"] = "55 55 212", ["3641"] = "55 55 334", ["3642"] = "55 55 313", ["3643"] = "55 53 535", ["3644"] = "55 33 535", ["3645"] = "55 53 55", ["3646"] = "55 55 14", ["3647"] = "55 53 44", ["3648"] = "55 55 212", ["364A1"] = "55 53 55", ["3651"] = "55 33 55", ["3652"] = "55 33 14", ["3653"] = "55 33 535", ["3654"] = "55 33 535", ["3655"] = "55 53 55", ["3656"] = "55 55 14", ["3657"] = "55 33 44", ["3658"] = "55 55 212", ["365A2"] = "55 33 55", ["365A6"] = "55 33 55", ["365C1"] = "55 55 0", ["365C3"] = "55 53 535", ["365C4"] = "55 53 535", ["3661"] = "55 53 55", ["3662"] = "55 53 14", ["3663"] = "55 53 535", ["3664"] = "55 33 535", ["3665"] = "55 53 55", ["3666"] = "55 55 14", ["3667"] = "55 53 44", ["3668"] = "55 55 212", ["366A2"] = "55 33 55", ["366A3"] = "55 33 55", ["366A5"] = "55 33 55", ["366A6"] = "55 33 55", ["366C2"] = "55 55 0", ["3671"] = "55 44 55", ["3672"] = "55 44 55", ["3673"] = "55 44 535", ["3674"] = "55 44 535", ["3675"] = "55 44 55", ["3676"] = "55 44 14", ["3677"] = "55 44 44", ["3678"] = "55 44 212", ["3681"] = "55 21 55", ["3682"] = "55 21 14", ["3683"] = "55 21 535", ["3684"] = "55 21 535", ["3685"] = "55 21 55", ["3686"] = "55 21 14", ["3687"] = "55 21 44", ["3688"] = "55 21 212", --according to p.104: 「陽去在陰去(5)、陽去(6)前有時變[33]」 ["36A51"] = "33 33 55", ["36A52"] = "33 33 14", ["36A53"] = "33 33 535", ["36A54"] = "33 33 535", ["36A55"] = "33 53 55", ["36A56"] = "33 55 14", ["36A57"] = "33 33 44", ["36A58"] = "33 55 212", ["36A5A2"] = "33 33 55", ["36A5A6"] = "33 33 55", ["36A5C1"] = "33 55 0", ["36A5C3"] = "33 53 535", ["36A5C4"] = "33 53 535", ["36A61"] = "33 53 55", ["36A62"] = "33 53 14", ["36A63"] = "33 53 535", ["36A64"] = "33 33 535", ["36A65"] = "33 53 55", ["36A66"] = "33 55 14", ["36A67"] = "33 53 44", ["36A68"] = "33 55 212", ["36A6A2"] = "33 33 55", ["36A6A3"] = "33 33 55", ["36A6A5"] = "33 33 55", ["36A6A6"] = "33 33 55", ["36A6C2"] = "33 55 0", ["3711"] = "44 33 55", ["3712"] = "44 33 55", ["3713"] = "44 33 535", ["3714"] = "44 33 535", ["3715"] = "44 33 55", ["3716"] = "44 33 55", ["3717"] = "44 33 44", ["3218"] = "44 33 212", ["3721"] = "44 31 55", ["3722"] = "44 31 14", ["3723"] = "44 33 535", ["3724"] = "44 33 535", ["3725"] = "44 31 55", ["3725C"] = "44 33 55", ["3726"] = "44 31 14", ["3727"] = "44 33 44", ["3728"] = "44 33 212", ["3731"] = "44 44 334", ["3732"] = "44 44 313", ["3733"] = "44 53 535", ["3734"] = "44 53 535", ["3735"] = "44 53 55", ["3736"] = "44 55 14", ["3737"] = "44 53 44", ["3738"] = "44 55 212", ["3741"] = "44 44 334", ["3742"] = "44 44 313", ["3743"] = "44 53 535", ["3744"] = "44 33 535", ["3745"] = "44 53 55", ["3746"] = "44 55 14", ["3747"] = "44 53 44", ["3748"] = "44 55 212", ["374A1"] = "44 53 55", ["3751"] = "44 33 55", ["3752"] = "44 33 14", ["3753"] = "44 33 535", ["3754"] = "44 33 535", ["3755"] = "44 53 55", ["3756"] = "44 55 14", ["3757"] = "44 33 44", ["3758"] = "44 55 212", ["375A2"] = "44 33 55", ["375A6"] = "44 33 55", ["375C1"] = "44 55 0", ["375C3"] = "44 53 535", ["375C4"] = "44 53 535", ["3761"] = "44 53 55", ["3762"] = "44 53 14", ["3763"] = "44 53 535", ["3764"] = "44 33 535", ["3765"] = "44 53 55", ["3766"] = "44 55 14", ["3767"] = "44 53 44", ["3768"] = "44 55 212", ["376A2"] = "44 33 55", ["376A3"] = "44 33 55", ["376A5"] = "44 33 55", ["376A6"] = "44 33 55", ["376C2"] = "44 55 0", ["3771"] = "44 44 55", ["3772"] = "44 44 55", ["3773"] = "44 44 535", ["3774"] = "44 44 535", ["3775"] = "44 44 55", ["3776"] = "44 44 14", ["3777"] = "44 44 44", ["3778"] = "44 44 212", ["3781"] = "44 21 55", ["3782"] = "44 21 14", ["3783"] = "44 21 535", ["3784"] = "44 21 535", ["3785"] = "44 21 55", ["3786"] = "44 21 14", ["3787"] = "44 21 44", ["3788"] = "44 21 212", ["3811"] = "21 33 55", ["3812"] = "21 33 55", ["3813"] = "21 33 535", ["3814"] = "21 33 535", ["3815"] = "21 33 55", ["3816"] = "21 33 55", ["3817"] = "21 33 44", ["3218"] = "21 33 212", ["3821"] = "21 31 55", ["3822"] = "21 31 14", ["3823"] = "21 33 535", ["3824"] = "21 33 535", ["3825"] = "21 31 55", ["3825C"] = "21 33 55", ["3826"] = "21 31 14", ["3827"] = "21 33 44", ["3828"] = "21 33 212", ["3831"] = "21 44 334", ["3832"] = "21 44 313", ["3833"] = "21 53 535", ["3834"] = "21 53 535", ["3835"] = "21 53 55", ["3836"] = "21 55 14", ["3837"] = "21 53 44", ["3838"] = "21 55 212", ["3841"] = "21 44 334", ["3842"] = "21 44 313", ["3843"] = "21 53 535", ["3844"] = "21 33 535", ["3845"] = "21 53 55", ["3846"] = "21 55 14", ["3847"] = "21 53 44", ["3848"] = "21 55 212", ["384A1"] = "21 53 55", ["3851"] = "21 33 55", ["3852"] = "21 33 14", ["3853"] = "21 33 535", ["3854"] = "21 33 535", ["3855"] = "21 53 55", ["3856"] = "21 55 14", ["3857"] = "21 33 44", ["3858"] = "21 55 212", ["385A2"] = "21 33 55", ["385A6"] = "21 33 55", ["385C1"] = "21 55 0", ["385C3"] = "21 53 535", ["385C4"] = "21 53 535", ["3861"] = "21 53 55", ["3862"] = "21 53 14", ["3863"] = "21 53 535", ["3864"] = "21 33 535", ["3865"] = "21 53 55", ["3866"] = "21 55 14", ["3867"] = "21 53 44", ["3868"] = "21 55 212", ["386A2"] = "21 33 55", ["386A3"] = "21 33 55", ["386A5"] = "21 33 55", ["386A6"] = "21 33 55", ["386C2"] = "21 55 0", ["3871"] = "21 44 55", ["3872"] = "21 44 55", ["3873"] = "21 44 535", ["3874"] = "21 44 535", ["3875"] = "21 44 55", ["3876"] = "21 44 14", ["3877"] = "21 4 44", ["3878"] = "21 44 212", ["3881"] = "21 21 55", ["3882"] = "21 21 14", ["3883"] = "21 21 535", ["3884"] = "21 21 535", ["3885"] = "21 21 55", ["3886"] = "21 21 14", ["3887"] = "21 21 44", ["3888"] = "21 21 212", --PREDICATE-OBJECT SANDHI (述賓式) p. 105 --EACH BLOCK MARKED WITH P AFTER END SYLLABLE FOR NOW. CAN CHANGE LATER ACCORDING TO CODE SPECIFICS --DISYLLABIC ONLY ["211P"] = "33 334", ["212P"] = "33 313", ["213P"] = "33 535", ["214P"] = "33 535", ["215P"] = "33 55", ["216P"] = "33 14", ["217P"] = "33 44", ["218P"] = "33 212", ["221P"] = "33 334", ["222P"] = "33 313", ["223P"] = "33 535", ["224P"] = "33 535", ["225P"] = "31 55", ["225CP"] = "33 55", ["226P"] = "33 14", ["227P"] = "33 44", ["228P"] = "33 212", ["231P"] = "55 334", ["232P"] = "55 313", ["233P"] = "53 535", ["234P"] = "53 535", ["235P"] = "53 55", ["236P"] = "55 14", ["237P"] = "53 44", ["238P"] = "55 212", ["241P"] = "55 334", ["242P"] = "55 313", ["243P"] = "53 535", ["244P"] = "33 535", ["245P"] = "53 55", ["246P"] = "55 14", ["247P"] = "534 44", ["248P"] = "55 212", ["24A1P"] = "53 55", ["251P"] = "33 334", ["252P"] = "33 313", ["253P"] = "33 535", ["254P"] = "33 535", ["255P"] = "33 55", ["256P"] = "33 14", ["257P"] = "33 44", ["258P"] = "55 212", ["25C1P"] = "55 334", ["25C2P"] = "55 313", ["261P"] = "55 334", ["262P"] = "55 313", ["263P"] = "53 535", ["264P"] = "33 535", ["265P"] = "53 55", ["266P"] = "55 14", ["267P"] = "53 44", ["268P"] = "55 212", ["271P"] = "44 334", ["272P"] = "44 313", ["273P"] = "44 535", ["274P"] = "44 535", ["275P"] = "44 55", ["276P"] = "44 14", ["277P"] = "44 44", ["278P"] = "44 212", ["281P"] = "21 334", ["282P"] = "21 313", ["283P"] = "21 535", ["284P"] = "21 535", ["285P"] = "21 55", ["286P"] = "21 14", ["287P"] = "21 44", ["288P"] = "21 212", --Also like half of this is basically the same as the word tone sandhi. i've kept most patterns that are identical to the word tone sandhis here in the P table, but if needs be and they end up being redundancies i can remove the duplicate ones (might end up with the input acting up but eh) --none of the 24x's are different from word tone so that row is directly deleteable if its not gonna be useful --CLASSIFIER SANDHI (數量式) pp.105-106 --THE ACTUAL NUMBERS THEMSELVES TAKE ON WORD SANDHI --CITATION TONE OF THE BOUNDARY CHARACTER + CITATION TONE OF CLASSIFIER CHARACTER -> BOTH DETERMINE THE POST-SANDHI VALUE ON THE CLASSIFIER CHARACTER TOGETHER. --MOST LIKELY WE WILL NEED SOME KIND OF AN ALGORITHM+OPERATOR TO CHECK THE !!!CITATION!!! TONE CATEGORY OF THESE TWO CHARACTERS, BEFORE GETTING FROM THIS DATA TO CALCULATE THE CORRECT POST-SANDHI TONE FOR THE CLASSIFIER. ["11#1"] = "55", ["13#1"] = "55", ["14#1"] = "55", ["15#1"] = "55", ["16#1"] = "55", ["17#1"] = "55", ["18#1"] = "55", ["11#2"] = "55", ["13#2"] = "313", ["14#2"] = "313", ["15#2"] = "313", ["16#2"] = "313", ["17#2"] = "55", ["17A#2"] = "313", ["18#2"] = "313", ["11#3"] = "55", ["13#3"] = "55", ["14#3"] = "55", ["15#3"] = "55", ["16#3"] = "55", ["17#3"] = "55", ["18#3"] = "55", ["11#4"] = "55", ["13#4"] = "14", ["14#4"] = "14", ["15#4"] = "14", ["16#4"] = "14", ["17#4"] = "55", ["17A#4"] = "14", ["18#4"] = "14", ["11#5"] = "55", ["13#5"] = "55", ["14#5"] = "55", ["15#5"] = "55", ["16#5"] = "55", ["17#5"] = "55", ["18#5"] = "55", ["11#6"] = "55", ["13#6"] = "14", ["14#6"] = "14", ["15#6"] = "14", ["16#6"] = "14", ["17#6"] = "55", ["17A#6"] = "14", ["18#6"] = "14", ["11#7"] = "44", ["13#7"] = "44", ["14#7"] = "44", ["15#7"] = "44", ["16#7"] = "44", ["17#7"] = "44", ["18#7"] = "44", ["11#8"] = "44", ["13#8"] = "212", ["14#8"] = "212", ["15#8"] = "212", ["16#8"] = "212", ["17#8"] = "44", ["17A#8"] = "212", ["18#8"] = "212", --no 12#x because there is no number word that is tone 2 --17A#2/4/6/8 - for 一 - this behaves differently from 百 and 七. --一+classifier - 17#x for 1/3/5/7, 一&2 -> 7iq&2[...] (4 313), 一&4 -> 7iq&6[...]4 (4 313), 一&6 -> 7iq&6[...] (4 14), 一&8 -> 7iq&8[...] (4 212) --NONCONCRETE TAIL~NEUTRALISED TAIL SANDHI (實虛式) pp.106-108 --mark with N? but clashes with numeral (n) in northern wu sandbox and c for numeral-classifier also clashes with 5C etc in word tone --OK yknow what i'm using T for this ["211T"] = "33 55", ["212T"] = "33 55", ["213T"] = "33 55", ["214T"] = "33 55", ["215T"] = "33 55", ["216T"] = "33 55", ["217T"] = "33 44", ["218T"] = "33 212", ["221T"] = "33 55", ["222T"] = "31 55", ["223T"] = "31 55", ["223AT"] = "53 55", ["224T"] = "31 55", ["224AT"] = "31 14", ["225T"] = "31 55", ["225CT"] = "33 55", ["226T"] = "31 14", ["227T"] = "33 44", ["228T"] = "33 212", ["231T"] = "55 334", ["232T"] = "53 14", ["232AT"] = "55 14", ["233T"] = "53 55", ["234T"] = "53 55", ["235T"] = "53 55", ["236T"] = "55 14", ["237T"] = "53 44", ["238T"] = "55 212", ["241T"] = "55 334", ["242T"] = "55 313", ["243T"] = "53 535", ["244T"] = "55 14", ["245T"] = "53 55", ["246T"] = "55 14", ["247T"] = "534 44", ["248T"] = "55 212", ["24A1T"] = "53 55", ["251T"] = "33 55", ["252T"] = "33 14", ["253T"] = "33 55", ["254T"] = "33 14", ["255T"] = "55 0", ["256T"] = "55 0", ["257T"] = "33 44", ["258T"] = "55 0", ["25A2T"] = "33 55", ["25A6T"] = "33 55", ["25C1T"] = "55 0", ["25C3T"] = "53 535", ["25C4T"] = "53 535", ["261T"] = "53 55", ["262T"] = "53 14", ["263T"] = "53 535", ["264T"] = "14 0", ["265T"] = "53 55", ["266T"] = "14 0", ["267T"] = "53 44", ["268T"] = "55 212", ["26A2T"] = "33 55", ["26A3T"] = "33 55", ["26A5T"] = "33 55", ["26A6T"] = "33 55", ["26C2T"] = "55 0", ["271T"] = "44 0", ["272T"] = "44 55", ["273T"] = "44 535", ["274T"] = "44 535", ["275T"] = "44 55", ["276T"] = "44 55", ["277T"] = "44 44", ["278T"] = "44 212", ["281T"] = "21 55", ["282T"] = "21 14", ["283T"] = "21 55", ["284T"] = "21 55", ["284AT"] = "21 14", ["285T"] = "21 55", ["286T"] = "21 14", ["287T"] = "21 44", ["288T"] = "21 212", --25Ax, 25Cx, 26Ax and 26Cx all same as word sandhi --there are some 2xxAT's in here, which i'm not sure if it's going to be a problem but for what its worth --ERHUA DIMINUTIVE TONES (小稱調) p. 110 --i'm marking this with an xR for now --1R 2R 5R 6R = no change from original tone. can delete if need be ["1R"] = "334", ["2R"] = "313", ["3R"] = "55", ["4R"] = "14", ["5R"] = "55", ["5AR"] = "535", ["6R"] = "14", ["7R"] = "55", ["8R"] = "14", } --diagnose_tones (if needed) local function tone_superscript(text) return text:gsub('[1-5]',{['1']='¹',['2']='²',['3']='³',['4']='⁴',['5']='⁵'}) end -- TODO: RPS local function get_tone(text) text = text:gsub("(%d)%l+%d","%1"):gsub("%l+","") local word_length = text:gsub("[^ ]+",""):len() + 1 local _, erhua = text:gsub("R","") local result = tone_contours[word_length .. text:gsub("[ R]+","")] or error("Tone input incorrect: " .. word_length .. text:gsub("[ R]+","")) if erhua > 0 then local tone = text:match("%dA?R") result = result:gsub("%d+$",tone_contours[tone]) end return tone_superscript(result) end local function rom_check(text) --this checks wugniu if text:match('ghi') then error('Invalid initial "ghi". Use "yi" instead.') end if text:match('ghu') then error('Invalid initial "ghu". Use "wu" instead.') end if text:match('%f[%l]y%f[%L]') then error('Invalid syllable "y"') end if text:match('gn[aeou]') then error('Palatalization expected. Insert an "i" after the "gn".') end return nil end function export.make(text, w_count) rom_check(text) -- preprocess local ipa_text = text :gsub(" (%l+)(%d%u*)", " %2%1") :gsub("(%d%u?)(%l+)#", "%1%2&%1#") local format_text = text :gsub("([34567])[AC]?", function(tone) return tone == "4" and "3" or tone end) :gsub("#","&") :gsub("[PT]","") format_text = w_pron.wugniu_format(format_text) :gsub("R","R") local show if not w_count or w_count > 1 then show = '\n** <small>(' .. w_pron.name_boilerplate('Jinhua') .. ')</small>' else show = ' <small>(' .. w_pron.name_boilerplate('Jinhua') .. ', <i>[[Wiktionary:About Chinese/Wu|Wugniu]]</i>)</small>' end local hide = '\n** <small>(' .. w_pron.name_boilerplate('Jinhua') .. ')</small>' show = show .. ': ' .. w_pron.consolas(format_text) hide = hide .. w_pron.wugniu_boilerplate(format_text) .. w_pron.IPA_boilerplate(w_pron.wugniu_to_ipa(ipa_text, 'jh', get_initial, get_final, ipa_syllabic, get_tone), 'Jinhua') return show,hide end return export fxnwlz1zhgigxjk76xlzp5sot0pqvob Module:wuu-pron/data 828 112573 234946 185487 2026-04-24T15:08:19Z en>沈澄心 0 [IPE-NEXT] Quick edit 234946 Scribunto text/plain local data = {} --[[ sh - Shanghai 上海市區方言誌 jd - Jiading 嘉定方言研究 sj - Songjiang 松江方言研究 cm - Chongming 崇明方言研究 cs - Chuansha 上海地區方言調查研究 + 川沙方言同音字表 + 川沙縣誌 sz - Suzhou 蘇州方言語音研究 ks - Kunshan 吳氏:崑山方言研究 + 當代吳語研究 yx - Yixing 宜興方言同音字彙 + 宜興縣誌 cz - Changzhou 當代吳語研究 jj - Jingjiang 靖江縣誌 jx - Jiaxing 當代吳語研究 tx - Tongxiang 桐鄉方言誌 hn - Haining (Xiashi) 海寧方言誌 hy - Haiyan 海鹽方言誌 dq - Deqing 德清縣誌 + 德清話聲韻調之研究 hz - Hangzhou 杭州方言音檔 + 杭州方言の聲調 xs - Xiaoshan 蕭山方言同音字彙 + 蕭山方言研究 + 蕭山市志 fy - Fuyang 富陽方言研究 sx - Shaoxing 紹興方言研究 cx - Cixi 慈溪市誌 + 浙江慈溪方言聲調實驗研究 (RPS understanding needed) nb - Ningbo 當代吳語研究 zs - Zhoushan 舟山方言兩字組的連讀變調 + 舟山方言研究 + 舟山方言 (samdhi understanding needed) ]] data.ipa_final = { ['sh'] = { ["a"] = "a", ["o"] = "o", ["au"] = "ɔ", ["eu"] = "ɤ", ["e"] = "e", ["oe"] = "ø", ["i"] = "i", ["ia"] = "ia", ["io"] = "io", ["iau"] = "iɔ", ["ieu"] = "iɤ", ["ie"] = "ie", ["u"] = "u", ["ua"] = "ua", ["ue"] = "ue", ["uoe"] = "uø", ["iu"] = "y", ["ioe"] = "yø", ["an"] = "ã", ["aon"] = "ɑ̃", ["en"] = "ən", ["on"] = "oŋ", ["aq"] = "aʔ", ["oq"] = "oʔ", ["eq"] = "əʔ", ["ian"] = "iã", ["iaon"] = "iɑ̃", ["in"] = "in", ["ion"] = "ioŋ", ["iaq"] = "iaʔ", ["ioq"] = "ioʔ", ["iq"] = "iɪʔ", ["uan"] = "uã", ["uaon"] = "uɑ̃", ["uen"] = "uən", ["uaq"] = "uaʔ", ["ueq"] = "uəʔ", ["iun"] = "yn", ["iuq"] = "yɪʔ", ["er"] = "əl", ["y"] = "z̩" }, ['jd'] = { ["a"] = "a", ["o"] = "o", ["au"] = "ɔ", ["ae"] = "e", ["oe"] = "ø", ["i"] = "i", ["ia"] = "ia", ["iae"] = "ie̞", ["io"] = "iu", ["iau"] = "iɔ", ["ie"] = "ɪ", ["u"] = "u", ["ua"] = "ua", ["uae"] = "ue̞", ["ue"] = "uɪ", ["iu"] = "y", ["ioe"] = "yø", ["an"] = "ã", ["aon"] = "ɑ̃", ["en"] = "əŋ", ["on"] = "oŋ", ["aq"] = "aʔ", ["aoq"] = "ɔʔ", ["oq"] = "oʔ", ["eq"] = "əʔ", ["ian"] = "iã", ["iaon"] = "iɑ̃", ["in"] = "iŋ", ["ion"] = "ioŋ", ["iaq"] = "iaʔ", ["iaoq"] = "iɔʔ", ["ioq"] = "ioʔ", ["iq"] = "iɪʔ", ["uan"] = "uã", ["uaon"] = "uɑ̃", ["uen"] = "uəŋ", ["uaq"] = "uaʔ", ["uaoq"] = "uɔʔ", ["uoq"] = "uoʔ", ["ueq"] = "uəʔ", ["iun"] = "yŋ", ["er"] = "øl", ["y"] = "z̩", ["yu"] = "z̩ʷ" }, ['sj'] = { ["a"] = "ɑ", ["ae"] = "ɛ", ["e"] = "e", ["oe"] = "ø", ["au"] = "ɔ", ["o"] = "o", ["eu"] = "ɯ", ["i"] = "i", ["ia"] = "iɑ", ["iae"] = "iɛ", ["ie"] = "ie", ["iau"] = "iɔ", ["io"] = "io", ["iu"] = "iu", ["ieu"] = "iɯ", ["u"] = "u", ["ua"] = "uɑ", ["uae"] = "uɛ", ["ue"] = "ue", ["uiau"] = "uiɔ", --uiau: necessary? ["iu"] = "y", ["ioe"] = "yø", ["an"] = "æ̃", ["aon"] = "ɒ̃", ["en"] = "əŋ", ["on"] = "oŋ", ["ian"] = "iæ̃", ["iaon"] = "iɒ̃", ["in"] = "iŋ", ["ion"] = "ioŋ", ["uan"] = "uæ̃", ["uaon"] = "uɒ̃", ["uen"] = "uəŋ", ["iun"] = "yœ̃", ["aq"] = "aʔ", ["aeq"] = "æʔ", ["oeq"] = "œʔ", ["aoq"] = "ɒʔ", ["eoq"] = "ʌʔ", ["eq"] = "əʔ", ["oq"] = "oʔ", ["iaq"] = "iaʔ", ["iaeq"] = "iæʔ", ["iaoq"] = "iɒʔ", ["ieq"] = "iʌʔ", ["iq"] = "iɪʔ", ["ioq"] = "ioʔ", ["uaq"] = "uaʔ", ["uaeq"] = "uæʔ", ["uaoq"] = "uɒʔ", ["ueq"] = "uəʔ", ["iuq"] = "yœʔ", ["er"] = "əl", ["y"] = "z̩" }, ['cm'] = { ["a"] = "ɑ", ["e"] = "e", ["oe"] = "ø", ["ai"] = "ɛ", ["ae"] = "æ", ["eu"] = "ɵ", ["au"] = "ɔ", ["o"] = "o", ["ei"] = "ei", ["i"] = "i", ["ia"] = "iɑ", ["ie"] = "ie", ["iai"] = "iɛ", ["iae"] = "iæ", ["ieu"] = "iɵ", ["iau"] = "iɔ", ["io"] = "io", ["u"] = "u", ["ua"] = "uɑ", ["ue"] = "ue", ["uai"] = "uɛ", ["uae"] = "uæ", ["uo"] = "uo", ["uei"] = "uei", ["iu"] = "y", ["ioe"] = "yø", ["en"] = "ən", ["an"] = "ã", ["aon"] = "ɑ̃", ["on"] = "oŋ", ["in"] = "in", ["ian"] = "iã", ["iaon"] = "iɑ̃", ["uen"] = "uən", ["uan"] = "uã", ["uaon"] = "uɑ̃", ["iun"] = "yn", ["ion"] = "yoŋ", --missing ɔ~, iɔ~ ["aeq"] = "æʔ", ["aq"] = "ɑʔ", ["eq"] = "əʔ", ["oeq"] = "øʔ", ["oq"] = "oʔ", ["iaq"] = "iɑʔ", ["iq"] = "iəʔ", ["uaeq"] = "uæʔ", ["uaq"] = "uɑʔ", ["ueq"] = "uəʔ", ["uoq"] = "uoʔ", ["ioeq"] = "yøʔ", ["ioq"] = "yoʔ", ["er"] = "əl", ["y"] = "z̩", -- only used in mutations: ["ueu"] = "uɵ", ["uon"] = "uoŋ", ["ui"] = "ui" }, ['cs'] = { -- 與學堂一致:io = iau, uo = o; uoeq, ieon, eoq 皆存 ["a"] = "a", ["o"] = "o", ["au"] = "ɔ", ["eu"] = "ɤ", ["e"] = "e", ["ae"] = "ɛ", ["oe"] = "ø", ["i"] = "i", ["iuu"] = "iu", ["ia"] = "ia", ["iau"] = "iɔ", ["ieu"] = "iɤ", ["ioe"] = "yø", ["u"] = "u", ["ua"] = "ua", ["ue"] = "ue", ["uae"] = "uɛ", ["iu"] = "y", ["an"] = "ã", ["aon"] = "ɑ", ["en"] = "ən", ["on"] = "oŋ", ["ian"] = "iã", ["iaon"] = "iɑ", ["in"] = "in", ["ieon"] = "iʌŋ", ["ion"] = "ioŋ", ["uan"] = "uã", ["uaon"] = "uɑ", ["uen"] = "uən", ["iun"] = "yn", ["aq"] = "aʔ", ["aeq"] = "æʔ", ["oeq"] = "œʔ", ["eq"] = "əʔ", ["eoq"] = "ʌʔ", ["oq"] = "oʔ", ["aoq"] = "ɔʔ", ["iaq"] = "iaʔ", ["iaeq"] = "iæʔ", ["ioeq"] = "yœʔ", ["iq"] = "iɪʔ", ["ieq"] = "iʌʔ", ["ioq"] = "ioʔ", ["iaoq"] = "iɔʔ", ["uaq"] = "uaʔ", ["uaeq"] = "uæʔ", ["uoeq"] = "uœʔ", ["ueq"] = "uəʔ", ["uaoq"] = "uɔʔ", ["er"] = "əl", ["y"] = "z̩", }, ['sz'] = { ["a"] = "ɑ", ["o"] = "o", ["au"] = "æ", ["eu"] = "øy", ["e"] = "e", ["oe"] = "ø", ["ou"] = "əu", ["i"] = "i", ["ia"] = "iɑ", ["io"] = "io", ["iau"] = "iæ", ["ieu"] = "ʏ", ["ioe"] = "iø", ["ie"] = "ɪ", ["u"] = "u", ["ua"] = "uɑ", ["ue"] = "ue", ["uoe"] = "uø", ["iu"] = "y", ["ioe"] = "yø", ["an"] = "ã", ["aon"] = "ɑ̃", ["en"] = "ən", ["on"] = "oŋ", ["aq"] = "ɑʔ", ["oq"] = "oʔ", ["eq"] = "əʔ", ["aeq"] = "aʔ", ["ian"] = "iã", ["iaon"] = "iɑ̃", ["in"] = "in", ["ion"] = "ioŋ", ["iaq"] = "iɑʔ", ["ioq"] = "ioʔ", ["iq"] = "iɪʔ", ["iaeq"] = "iaʔ", ["uan"] = "uã", ["uaon"] = "uɑ̃", ["uen"] = "uən", ["ueq"] = "uəʔ", ["uaeq"] = "uaʔ", ["iun"] = "yn", ["iuq"] = "yəʔ", ["iuaeq"] = "yaʔ", ["er"] = "əl", ["y"] = "z̩", ["yu"] = "z̩ʷ" }, ['ks'] = { ["a"] = "a", ["au"] = "ɔ", ["ae"] = "ɛ", ["oe"] = "ø", ["o"] = "o", ["e"] = "ei", ["ou"] = "əu", ["i"] = "i", ["ia"] = "ia", ["iau"] = "iɔ", ["ie"] = "ɪ", ["ioe"] = "iø", ["u"] = "u", ["ua"] = "ua", ["uae"] = "uɛ", ["uoe"] = "uø", ["ue"] = "uei", ["iu"] = "y", ["en"] = "ən", ["an"] = "ã", ["on"] = "oŋ", ["in"] = "in", ["ian"] = "iã", ["ion"] = "ioŋ", ["uen"] = "uən", ["uan"] = "uã", ["iun"] = "yn", ["eq"] = "əʔ", ["aq"] = "aʔ", ["oq"] = "oʔ", ["iq"] = "iəʔ", ["iaq"] = "iaʔ", ["ioq"] = "ioʔ", ["ueq"] = "uəʔ", ["uaq"] = "uaʔ", ["iuq"] = "yəʔ", ["er"] = "əl", ["y"] = "z̩", ["yu"] = "z̩ʷ" }, ['yx'] = { ["a"] = "a", ["o"] = "o", ["ou"] = "ʊ", ["ai"] = "ɛ", ["e"] = "ə", ["e"] = "ə", ["au"] = "au", ["eu"] = "əu", ["i"] = "i", ["ia"] = "ia", ["io"] = "io", ["ie"] = "iɪ", ["iau"] = "iau", ["ieu"] = "iəu", ["u"] = "u", ["ua"] = "ua", ["uai"] = "uɛ", ["ue"] = "uə", ["iu"] = "y", ["an"] = "aŋ", ["en"] = "ən", ["on"] = "oŋ", ["ian"] = "iaŋ", ["in"] = "in", ["ion"] = "ioŋ", ["uan"] = "uaŋ", ["uen"] = "uən", ["iun"] = "yən", ["aq"] = "aʔ", ["oq"] = "oʔ", ["eq"] = "əʔ", ["iaq"] = "iaʔ", ["ioq"] = "ioʔ", ["iq"] = "iəʔ", ["uaq"] = "uaʔ", ["ueq"] = "uəʔ", ["iuq"] = "yəʔ", ["er"] = "əl", ["y"] = "z̩", }, ['cz'] = { ["a"] = "a", ["ae"] = "ɛ", ["oe"] = "ɵ", ["o"] = "o", ["ie"] = "ɪ", ["ai"] = "ai", ["ei"] = "ei", ["au"] = "aɯ", ["ou"] = "ɤɯ", ["i"] = "i", ["ia"] = "ia", ["ioe"] = "iɵ", ["io"] = "io", ["iau"] = "iaɯ", ["iou"] = "iɤɯ", ["u"] = "u", ["ua"] = "ua", ["uae"] = "uɛ", ["uoe"] = "uɵ", ["uai"] = "uai", ["iu"] = "y", ["an"] = "aŋ", ["en"] = "əŋ", ["on"] = "oŋ", ["ian"] = "iaŋ", ["in"] = "iŋ", ["ion"] = "ioŋ", ["uan"] = "uaŋ", ["uen"] = "uəŋ", ["iun"] = "yiŋ", ["aq"] = "aʔ", ["eq"] = "əʔ", ["oq"] = "oʔ", ["iaq"] = "iaʔ", ["iq"] = "iɪʔ", ["ioq"] = "ioʔ", ["ueq"] = "uəʔ", ["iuq"] = "yeʔ", ["er"] = "əl", ["y"] = "z̩", ["yu"] = "z̩ʷ" }, ['jj'] = { ["a"] = "a", ["au"] = "ɔ", ["ai"] = "ɛ", ["ou"] = "ə", ["o"] = "o", ["e"] = "e", ["eu"] = "ʏ", ["i"] = "i", ["ia"] = "ia", ["iau"] = "iɔ", ["iai"] = "iɛ", ["ieu"] = "iʏ", ["u"] = "u", ["ua"] = "ua", ["uai"] = "uɛ", ["ue"] = "ue", ["iu"] = "y", ["iua"] = "ya", ["iuai"] = "yɛ", ["iou"] = "yə", ["iue"] = "ye", ["aen"] = "ã", ["oen"] = "ũ", ["en"] = "əŋ", ["on"] = "oŋ", ["an"] = "aŋ", ["ienn"] = "iɪ̃", ["iaen"] = "iã", ["ioen"] = "iũ", ["in"] = "iŋ", ["ien"] = "iəŋ", ["ion"] = "ioŋ", ["ian"] = "iaŋ", ["uaen"] = "uã", ["uen"] = "uəŋ", ["uan"] = "uaŋ", ["iun"] = "yəŋ", ["iuan"] = "yaŋ", ["aq"] = "aʔ", ["oq"] = "ɔʔ", ["eq"] = "əʔ", ["oeq"] = "oʔ", ["iq"] = "ieʔ", ["iaq"] = "iaʔ", ["ioq"] = "iɔʔ", ["ieq"] = "iəʔ", ["uaq"] = "uaʔ", ["ueq"] = "uəʔ", ["iuaq"] = "yaʔ", ["ioeq"] = "yoʔ", ["er"] = "er", ["y"] = "z̩", }, ['jx'] = { ["a"] = "a", ["ae"] = "ɛ", ["e"] = "e", ["au"] = "ɔ", ["oe"] = "ɤə", ["o"] = "o", ["i"] = "i", ["ia"] = "ia", ["iae"] = "iɛ", ["ie"] = "ie", ["iau"] = "iɔ", ["ieu"] = "iəu", ["u"] = "u", ["ua"] = "ua", ["uae"] = "uɛ", ["ue"] = "ue", ["uoe"] = "uɤə", ["iu"] = "y", ["ioe"] = "yɤə", ["en"] = "ən", ["an"] = "ã", ["aon"] = "ɑ̃", ["on"] = "oŋ", ["in"] = "in", ["ian"] = "iã", ["iaon"] = "iɑ̃", ["ion"] = "ioŋ", ["uen"] = "un", ["yan"] = "uã", ["uaon"] = "uɑ̃", ["iun"] = "yn", ["eq"] = "əʔ", ["aq"] = "aʔ", ["oq"] = "oʔ", ["iq"] = "iɪʔ", ["iaq"] = "iaʔ", ["ioq"] = "ioʔ", ["ueq"] = "uəʔ", ["uaq"] = "uaʔ", ["iuq"] = "yəʔ", ["er"] = "l̩", ["y"] = "z̩", ["yu"] = "z̩ʷ" }, ['tx'] = { ["a"] = "a", ["ae"] = "æ", ["e"] = "ɛ", ["au"] = "ɔ", ["o"] = "o", ["eu"] = "əɯ", ["i"] = "i", ["ia"] = "ia", ["iae"] = "iæ", ["ie"] = "iɛ", ["iau"] = "iɔ", ["ieu"] = "iəɯ", ["u"] = "u", ["ua"] = "ua", ["uae"] = "uæ", ["ui"] = "ui", ["ue"] = "uɛ", ["an"] = "ã", ["aon"] = "ɔ̃", ["en"] = "ən", ["on"] = "õ", ["ian"] = "iã", ["iaon"] = "iɔ̃", ["in"] = "in", ["ion"] = "ion", ["uan"] = "uã", ["uaon"] = "uɔ̃", ["uen"] = "un", ["aq"] = "aʔ", ["oq"] = "oʔ", ["eq"] = "əʔ", ["iaq"] = "iaʔ", ["ioq"] = "ioʔ", ["iq"] = "iəʔ", ["uaq"] = "uaʔ", ["ueq"] = "uəʔ", ["er"] = "əl", ["y"] = "z̩" }, ['hn'] = { ["a"] = "a", ["o"] = "o", ["e"] = "e", ["oe"] = "ɤ", ["ae"] = "ɛ", ["au"] = "ɔ", ["eu"] = "ɤɯ", ["i"] = "i", ["ia"] = "ia", ["ie"] = "ie", ["iae"] = "iɛ", ["iau"] = "iɔ", ["ieu"] = "iɤɯ", ["u"] = "u", ["ua"] = "ua", ["ue"] = "ue", ["uoe"] = "uɤ", ["uae"] = "uɛ", ["en"] = "ən", ["an"] = "ã", ["aon"] = "ɑ̃", ["on"] = "õ", ["in"] = "in", ["ian"] = "iã", ["iaon"] = "iɑ̃", ["ion"] = "ion", ["uen"] = "uən", ["uan"] = "uã", ["uaon"] = "uɑ̃", ["aq"] = "aʔ", ["eq"] = "əʔ", ["oq"] = "oʔ", ["iaq"] = "iaʔ", ["iq"] = "iəʔ", ["ioq"] = "ioʔ", ["uaq"] = "uaʔ", ["ueq"] = "uəʔ", ["er"] = "əl", ["y"] = "z̩" }, ['hy'] = { ["a"] = "a", ["ae"] = "ɛ", ["o"] = "o", ["e"] = "e", ["oe"] = "ə", ["au"] = "ɔ", ["i"] = "i", ["ia"] = "ia", ["ie"] = "iɛ", ["iau"] = "iɔ", ["ieu"] = "iɤ", ["u"] = "u", ["ua"] = "ua", ["uae"] = "uɛ", ["ue"] = "ue", ["uoe"] = "uə", ["iu"] = "y", ["ioe"] = "yə", ["an"] = "ã", ["en"] = "ən", ["aon"] = "ɔ̃", ["on"] = "õ", ["ian"] = "iã", ["in"] = "iən", ["iaon"] = "iɔ̃", ["ion"] = "iõ", ["uan"] = "ã", ["uen"] = "uən", ["uaon"] = "ɔ̃", ["iun"] = "yən", ["aq"] = "aʔ", ["eq"] = "əʔ", ["oq"] = "oʔ", ["iaq"] = "iaʔ", ["iq"] = "iəʔ", ["ioq"] = "ioʔ", ["uaq"] = "uaʔ", ["er"] = "l̩", ["y"] = "z̩" }, ['dq'] = { ["a"] = "a", ["au"] = "ɔ", ["uo"] = "uɔ", ["e"] = "ɛ", ["oe"] = "ɤ", ["i"] = "i", ["ieu"] = "iʏ", ["ia"] = "ia", ["iau"] = "iɔ", ["ie"] = "ie", ["u"] = "u", ["ua"] = "ua", ["uo"] = "uɔ", ["ue"] = "uɛ", ["uoe"] = "uɤ", ["an"] = "ã", ["en"] = "ən", ["on"] = "oŋ", ["ian"] = "iã", ["in"] = "in", ["ion"] = "ioŋ", ["uan"] = "uã", ["uen"] = "uən", ["aq"] = "aʔ", ["eq"] = "əʔ", ["oq"] = "oʔ", ["iaq"] = "iaʔ", ["iq"] = "iəʔ", ["ioq"] = "ioʔ", ["uaq"] = "uaʔ", ["uoq"] = "uoʔ", ["er"] = "əl", ["y"] = "z̩" }, ['hz'] = { ["a"] = "ɑ", ["e"] = "ɛ", ["au"] = "ɔ", ["o"] = "o", ["ei"] = "ei", ["i"] = "i", ["ia"] = "iɑ", ["ie"] = "iɛ", ["iau"] = "iɔ", ["ieu"] = "iø", ["u"] = "u", ["ua"] = "ua", ["ue"] = "uɛ", ["uo"] = "uo", ["uei"] = "ui", ["iu"] = "y", ["aen"] = "ẽ̞", ["en"] = "en", ["an"] = "ɑŋ", ["on"] = "oŋ", ["aq"] = "ɑʔ", ["eq"] = "əʔ", ["oq"] = "oʔ", ["ien"] = "iẽ̞", ["in"] = "in", ["ian"] = "iæ̃", ["ion"] = "ioŋ", ["iaq"] = "iɑʔ", ["iq"] = "iəʔ", ["ioq"] = "ioʔ", ["uen"] = "un", ["uan"] = "uæ̃", ["uon"] = "uõ", ["uaq"] = "uɑʔ", ["uoq"] = "uoʔ", ["iuon"] = "yõ", ["iun"] = "yn", ["iuq"] = "yəʔ", ["er"] = "əl", ["y"] = "z̩", ["yu"] = "z̩ʷ", -- old period, no official wugniu: ["eu"] = "ey", -- zw stuff ["uwa"] = "zʷa", ["uwe"] = "zʷɛ", ["uwei"] = "zʷei", ["uwan"] = "zʷæ̃", ["uwaq"] = "zʷɑʔ", ["uwon"] = "zʷõ", ["uwen"] = "zʷen", ["uweq"] = "zʷəʔ", }, ['xs'] = { --與學堂城厢點大體一致,欠大西之 eʔ 及 ieʔ,添 yo,但 ae 及 oe 具鼻音化 ["a"] = "a", ["e"] = "e", ["o"] = "o", ["au"] = "ɒ", ["i"] = "i", ["ia"] = "ia", ["io"] = "io", ["iau"] = "iɒ", ["u"] = "u", ["ua"] = "ua", ["ue"] = "ue", ["uo"] = "uo", ["iu"] = "y", ["iuo"] = "yo", ["ae"] = "ɛ̃", ["oe"] = "ə̃", ["ie"] = "iɛ̃", ["ioe"] = "yə̃", ["uae"] = "uɛ̃", ["uoe"] = "uə̃", ["an"] = "ã", ["aon"] = "ɒ̃", ["en"] = "əŋ", ["on"] = "oŋ", ["ian"] = "ã", ["in"] = "iŋ", ["uan"] = "uã", ["uaon"] = "uɒ̃", ["uen"] = "uəŋ", ["uon"] = "uoŋ", ["iuaon"] = "yɒ̃", ["iun"] = "yŋ", ["ion"] = "yoŋ", ["aq"] = "aʔ", ["oq"] = "oʔ", ["eq"] = "əʔ", ["iaq"] = "iaʔ", ["ioq"] = "yoʔ", ["iq"] = "iəʔ", ["uaq"] = "uaʔ", ["uoq"] = "uoʔ", ["er"] = "ɚ", ["y"] = "z̩" }, ['fy'] = { ["a"] = "a", ["ae"] = "ɛ", ["au"] = "ɔ", ["o"] = "o", ["ou"] = "ʊ", ["ei"] = "ei", ["i"] = "i", ["ia"] = "ia", ["iae"] = "iɛ", ["iau"] = "iɔ", ["iou"] = "iʊ", ["u"] = "u", ["ua"] = "ua", ["uae"] = "uɛ", ["uo"] = "uo", ["iu"] = "y", ["iuae"] = "yɛ", ["iuo"] = "yo", ["an"] = "ã", ["aen"] = "ɛ̃", ["aon"] = "ɔ̃", ["en"] = "eŋ", ["on"] = "oŋ", ["ian"] = "iã", ["iaen"] = "iɛ̃", ["in"] = "iŋ", ["uan"] = "uã", ["uaen"] = "uɛ̃", ["uaon"] = "uɔ̃", ["uen"] = "ueŋ", ["iuaen"] = "yɛ̃", ["iaon"] = "yɔ̃", ["iun"] = "yŋ", ["ion"] = "yoŋ", ["aq"] = "ɐʔ", ["eq"] = "eʔ", ["eoq"] = "əʔ", ["oq"] = "oʔ", ["iaq"] = "iɐʔ", ["iq"] = "iɪʔ", ["ioq"] = "yoʔ", ["uaq"] = "uɐʔ", ["uoq"] = "uoʔ", ["er"] = "l̩", ["y"] = "z̩" }, ['sx'] = { ["a"] = "a", ["e"] = "e", ["eu"] = "ɤ", ["au"] = "ɒ", ["o"] = "o", ["i"] = "i", ["ia"] = "ia", ["ie"] = "ie", ["ieu"] = "iɤ", ["iau"] = "iɒ", ["io"] = "io", ["u"] = "u", ["ua"] = "ua", ["ue"] = "ue", ["uo"] = "uo", ["iu"] = "y", ["aen"] = "æ̃", ["een"] = "ẽ", ["oen"] = "ø̃", ["an"] = "aŋ", ["en"] = "əŋ", ["aon"] = "ɒŋ", ["on"] = "oŋ", ["iaen"] = "iæ̃", ["ien"] = "iẽ", ["ioen"] = "iø̃", ["ian"] = "iaŋ", ["in"] = "iŋ", ["iaon"] = "iɒŋ", ["ion"] = "ioŋ", ["uaen"] = "uæ̃", ["uen"] = "uẽ", ["uoen"] = "uø̃", ["uan"] = "uaŋ", ["uaon"] = "uɒŋ", ["uon"] = "uoŋ", ["aq"] = "aʔ", ["aeq"] = "æʔ", ["eq"] = "eʔ", ["eoq"] = "əʔ", ["oeq"] = "øʔ", ["oq"] = "oʔ", ["iaq"] = "iaʔ", ["iq"] = "ieʔ", ["ioeq"] = "iøʔ", ["ioq"] = "ioʔ", ["uaq"] = "uaʔ", ["uaeq"] = "uæʔ", ["ueq"] = "ueʔ", ["uoeq"] = "uøʔ", ["uoq"] = "uoʔ", ["er"] = "əl", ["y"] = "z̩" }, ['cx'] = { --check btwn sources ["a"] = "a", ["o"] = "o", ["au"] = "ɔ", ["e"] = "e", ["eu"] = "ɤ", ["i"] = "i", ["ia"] = "ia", ["io"] = "io", ["iau"] = "iɔ", ["ieu"] = "iɤ", ["u"] = "u", ["ua"] = "ua", ["uo"] = "uo", ["ue"] = "ue", ["iu"] = "y", ["an"] = "ã", ["aen"] = "æ̃", ["een"] = "ẽ", ["oen"] = "œ̃", ["aon"] = "ɔ̃", ["en"] = "əŋ", ["on"] = "oŋ", ["ian"] = "iã", ["ien"] = "iẽ", ["ioen"] = "yœ̃", ["iaon"] = "iɔ̃", ["in"] = "iŋ", ["iun"] = "yəŋ", ["ion"] = "ioŋ", ["uan"] = "uã", ["uaen"] = "uæ̃", ["uoen"] = "uœ̃", ["uaon"] = "uɔ̃", ["uen"] = "uəŋ", ["aq"] = "aʔ", ["oq"] = "oʔ", ["eq"] = "eʔ", ["iaq"] = "iaʔ", ["ioq"] = "yoʔ", ["iq"] = "ieʔ", ["iuq"] = "yeʔ", ["uaq"] = "uaʔ", ["ueq"] = "ueʔ", ["er"] = "əl", ["y"] = "z̩", ["yu"] = "z̩ʷ" }, ['nb'] = { ["a"] = "a", ["o"] = "o", ["au"] = "ɔ", ["e"] = "e", ["ae"] = "ɛ", ["oe"] = "ø", ["ei"] = "ɐɪ", ["eu"] = "œʏ", ["ou"] = "əu", ["i"] = "i", ["ia"] = "ia", ["iau"] = "iɔ", ["ie"] = "ie", ["ieu"] = "iʏ", ["u"] = "u", ["ua"] = "ua", ["uo"] = "uo", ["uae"] = "uɛ", ["uei"] = "uɐɪ", ["iu"] = "y", ["io"] = "yo", ["an"] = "ã", ["aon"] = "ɔ̃", ["en"] = "əŋ", ["on"] = "oŋ", ["aq"] = "ɐʔ", ["oq"] = "oʔ", ["ian"] = "iã", ["in"] = "iŋ", ["iaq"] = "iɐʔ", ["iq"] = "iɪʔ", ["un"] = "ũ", ["uan"] = "uã", ["uaon"] = "uɔ̃", ["uen"] = "uəŋ", ["uaq"] = "uɐʔ", ["iun"] = "yəŋ", ["ion"] = "yoŋ", ["iuq"] = "yəʔ", ["ioq"] = "yoʔ", ["yun"] = "z̩ʷøŋ", ["yuq"] = "z̩ʷœʔ", ["er"] = "əl", ["y"] = "z̩", ["yu"] = "z̩ʷ" }, ['zs'] = { --與學堂一致, ai = a~i, uɛ~ = uɛ ["a"] = "a", ["au"] = "ɔ", ["o"] = "o", ["e"] = "e", ["ei"] = "ai", ["ou"] = "au", ["ae"] = "ɛ", ["i"] = "i", ["ia"] = "ia", ["iau"] = "iɔ", ["ieu"] = "iu", ["iae"] = "iɛ", ["u"] = "u", ["ua"] = "ua", ["uo"] = "uo", ["ue"] = "ɔ", ["uei"] = "uai", ["uae"] = "uɛ", ["iu"] = "y", ["oen"] = "ø", ["an"] = "ã", ["aon"] = "ɔ", ["en"] = "ɐŋ", ["on"] = "oŋ", ["ien"] = "ĩ", ["ioen"] = "ỹ", ["ian"] = "iã", ["in"] = "iŋ", ["ion"] = "yoŋ", ["un"] = "ũ", ["uan"] = "uã", ["uaon"] = "uɔ", ["uen"] = "uɐŋ", ["aq"] = "ɐʔ", ["oq"] = "oʔ", ["iaq"] = "iɐʔ", ["iq"] = "iəʔ", ["uaq"] = "uɐʔ", ["iuq"] = "yɐʔ", ["er"] = "əl", ["y"] = "z̩", ["yu"] = "z̩ʷ" }, } data.tone_contours = { --if a lect is missing tone sandhi then uhh i'll add them later ['sh'] = { ["10"] = "", ["1-"] = "33", ["11"] = "53", ["21"] = "55 21", ["31"] = "55 33 21", ["41"] = "55 33 33 21", ["51"] = "55 33 33 33 21", ["15"] = "34", ["25"] = "33 44", ["35"] = "33 55 21", ["45"] = "33 55 33 21", ["55"] = "33 55 33 33 21", ["16"] = "23", ["26"] = "22 44", ["36"] = "22 55 21", ["46"] = "22 55 33 21", ["56"] = "22 55 33 33 21", ["17"] = "55", ["27"] = "33 44", ["37"] = "33 55 21", ["47"] = "33 55 33 21", ["57"] = "33 55 33 33 21", ["18"] = "12", ["28"] = "11 23", ["38"] = "11 22 23", ["48"] = "11 22 22 23", ["58"] = "22 55 33 33 21", --RPS ["1s"] = "44", ["5s"] = "44", ["6s"] = "33", ["7s"] = "44", ["8s"] = "22", ["multiple"] = "33" }, ['jd'] = { ["10"] = "", ["11"] = "53", ["12"] = "31", ["13"] = "34", ["14"] = "13", ["15"] = "34", ["16"] = "13", ["17"] = "55", ["18"] = "12", ["211"] = "55 21", ["212"] = "55 21", ["213"] = "45 21", ["214"] = "45 21", ["215"] = "33 44", ["216"] = "33 44", ["217"] = "55 21", ["218"] = "55 21", ["221"] = "22 53", ["222"] = "22 53", ["223"] = "24 21", ["224"] = "24 21", ["225"] = "23 44", ["226"] = "23 44", ["227"] = "24 21", ["228"] = "24 21", ["231"] = "35 21", ["232"] = "35 21", ["233"] = "35 21", ["234"] = "35 21", ["235"] = "33 53", ["236"] = "33 53", ["237"] = "35 21", ["238"] = "35 21", ["241"] = "22 53", ["242"] = "22 53", ["243"] = "24 21", ["244"] = "24 21", ["245"] = "22 24", ["246"] = "22 24", ["247"] = "24 21", ["248"] = "24 21", ["251"] = "35 21", ["252"] = "35 21", ["253"] = "35 21", ["254"] = "35 21", ["255"] = "44 44", ["256"] = "44 44", ["257"] = "35 21", ["258"] = "35 21", ["261"] = "22 53", ["262"] = "22 53", ["263"] = "24 21", ["264"] = "24 21", ["265"] = "24 44", ["266"] = "24 44", ["267"] = "24 21", ["268"] = "24 21", ["271"] = "44 53", ["272"] = "44 53", ["273"] = "44 21", ["274"] = "44 21", ["275"] = "44 44", ["276"] = "44 44", ["277"] = "44 21", ["278"] = "44 21", ["281"] = "11 24", ["282"] = "11 24", ["283"] = "11 24", ["284"] = "11 24", ["285"] = "11 24", ["286"] = "11 24", ["287"] = "22 44", ["288"] = "22 44", ["3111"] = "55 33 21", ["3112"] = "55 33 21", ["3113"] = "55 33 21", ["3114"] = "55 33 21", ["3115"] = "55 33 21", ["3116"] = "55 33 21", ["3117"] = "55 33 21", ["3118"] = "55 33 21", ["3121"] = "55 33 21", ["3122"] = "55 33 21", ["3123"] = "55 33 21", ["3124"] = "55 33 21", ["3125"] = "55 33 21", ["3126"] = "55 33 21", ["3127"] = "55 33 21", ["3128"] = "55 33 21", ["3131"] = "35 33 21", ["3132"] = "35 33 21", ["3133"] = "35 33 21", ["3134"] = "35 33 21", ["3135"] = "35 33 21", ["3136"] = "35 33 21", ["3137"] = "35 33 21", ["3138"] = "35 33 21", ["3141"] = "35 33 21", ["3142"] = "35 33 21", ["3143"] = "35 33 21", ["3144"] = "35 33 21", ["3145"] = "35 33 21", ["3146"] = "35 33 21", ["3147"] = "35 33 21", ["3148"] = "35 33 21", ["3151"] = "55 33 21", ["3152"] = "55 33 21", ["3153"] = "55 33 21", ["3154"] = "55 33 21", ["3155"] = "55 33 21", ["3156"] = "55 33 21", ["3157"] = "55 33 21", ["3158"] = "55 33 21", ["3161"] = "55 33 21", ["3162"] = "55 33 21", ["3163"] = "55 33 21", ["3164"] = "55 33 21", ["3165"] = "55 33 21", ["3166"] = "55 33 21", ["3167"] = "55 33 21", ["3168"] = "55 33 21", ["3171"] = "55 33 21", ["3172"] = "55 33 21", ["3173"] = "55 33 21", ["3174"] = "55 33 21", ["3175"] = "55 33 21", ["3176"] = "55 33 21", ["3177"] = "55 33 21", ["3178"] = "55 33 21", ["3181"] = "55 33 21", ["3182"] = "55 33 21", ["3183"] = "55 33 21", ["3184"] = "55 33 21", ["3185"] = "55 33 21", ["3186"] = "55 33 21", ["3187"] = "55 33 21", ["3188"] = "55 33 21", ["3211"] = "22 55 21", ["3212"] = "22 55 21", ["3213"] = "22 55 21", ["3214"] = "22 55 21", ["3215"] = "22 55 44", ["3216"] = "22 55 44", ["3217"] = "22 55 21", ["3218"] = "22 55 21", ["3221"] = "22 55 21", ["3222"] = "22 55 21", ["3223"] = "22 55 21", ["3224"] = "22 55 21", ["3225"] = "22 55 44", ["3226"] = "22 55 44", ["3227"] = "22 55 21", ["3228"] = "22 55 21", ["3231"] = "24 33 21", ["3232"] = "24 33 21", ["3233"] = "24 33 21", ["3234"] = "24 33 21", ["3235"] = "24 33 21", ["3236"] = "24 33 21", ["3237"] = "24 33 21", ["3238"] = "24 33 21", ["3241"] = "24 33 21", ["3242"] = "24 33 21", ["3243"] = "24 33 21", ["3244"] = "24 33 21", ["3245"] = "24 33 21", ["3246"] = "24 33 21", ["3247"] = "24 33 21", ["3248"] = "24 33 21", ["3251"] = "22 55 21", ["3252"] = "22 55 21", ["3253"] = "22 55 21", ["3254"] = "22 55 21", ["3255"] = "22 55 44", ["3256"] = "22 55 44", ["3257"] = "22 55 21", ["3258"] = "22 55 21", ["3261"] = "22 55 21", ["3262"] = "22 55 21", ["3263"] = "22 55 21", ["3264"] = "22 55 21", ["3265"] = "22 55 44", ["3266"] = "22 55 44", ["3267"] = "22 55 21", ["3268"] = "22 55 21", ["3271"] = "22 55 21", ["3272"] = "22 55 21", ["3273"] = "22 55 21", ["3274"] = "22 55 21", ["3275"] = "22 55 44", ["3276"] = "22 55 44", ["3277"] = "22 55 21", ["3278"] = "22 55 21", ["3281"] = "22 55 21", ["3282"] = "22 55 21", ["3283"] = "22 55 21", ["3284"] = "22 55 21", ["3285"] = "22 55 44", ["3286"] = "22 55 44", ["3287"] = "22 55 21", ["3288"] = "22 55 21", ["3311"] = "33 55 21", ["3312"] = "33 55 21", ["3313"] = "33 55 21", ["3314"] = "33 55 21", ["3315"] = "35 33 21", ["3316"] = "35 33 21", ["3317"] = "33 55 21", ["3318"] = "33 55 21", ["3321"] = "33 55 21", ["3322"] = "33 55 21", ["3323"] = "33 55 21", ["3324"] = "33 55 21", ["3325"] = "35 33 21", ["3326"] = "35 33 21", ["3327"] = "33 55 21", ["3328"] = "33 55 21", ["3331"] = "33 55 21", ["3332"] = "33 55 21", ["3333"] = "33 55 21", ["3334"] = "33 55 21", ["3335"] = "35 33 21", ["3336"] = "35 33 21", ["3337"] = "33 55 21", ["3338"] = "33 55 21", ["3341"] = "33 55 21", ["3342"] = "33 55 21", ["3343"] = "33 55 21", ["3344"] = "33 55 21", ["3345"] = "35 33 21", ["3346"] = "35 33 21", ["3347"] = "33 55 21", ["3348"] = "33 55 21", ["3351"] = "33 55 21", ["3352"] = "33 55 21", ["3353"] = "33 55 21", ["3354"] = "33 55 21", ["3355"] = "33 55 21", ["3356"] = "33 55 21", ["3357"] = "33 55 21", ["3358"] = "33 55 21", ["3361"] = "33 55 21", ["3362"] = "33 55 21", ["3363"] = "33 55 21", ["3364"] = "33 55 21", ["3365"] = "33 55 21", ["3366"] = "33 55 21", ["3367"] = "33 55 21", ["3368"] = "33 55 21", ["3371"] = "33 55 21", ["3372"] = "33 55 21", ["3373"] = "33 55 21", ["3374"] = "33 55 21", ["3375"] = "35 33 21", ["3376"] = "35 33 21", ["3377"] = "33 55 21", ["3378"] = "33 55 21", ["3381"] = "33 55 21", ["3382"] = "33 55 21", ["3383"] = "33 55 21", ["3384"] = "33 55 21", ["3385"] = "35 33 21", ["3386"] = "35 33 21", ["3387"] = "33 55 21", ["3388"] = "33 55 21", ["3411"] = "22 55 21", ["3412"] = "22 55 21", ["3413"] = "22 55 21", ["3414"] = "22 55 21", ["3415"] = "22 55 44", ["3416"] = "22 55 44", ["3417"] = "22 55 21", ["3418"] = "22 55 21", ["3421"] = "22 55 21", ["3422"] = "22 55 21", ["3423"] = "22 55 21", ["3424"] = "22 55 21", ["3425"] = "22 55 44", ["3426"] = "22 55 44", ["3427"] = "22 55 21", ["3428"] = "22 55 21", ["3431"] = "22 55 21", ["3432"] = "22 55 21", ["3433"] = "22 55 21", ["3434"] = "22 55 21", ["3435"] = "35 33 21", ["3436"] = "35 33 21", ["3437"] = "35 33 21", ["3438"] = "35 33 21", ["3441"] = "22 55 21", ["3442"] = "22 55 21", ["3443"] = "22 55 21", ["3444"] = "22 55 21", ["3445"] = "35 33 21", ["3446"] = "35 33 21", ["3447"] = "35 33 21", ["3448"] = "35 33 21", ["3451"] = "22 55 21", ["3452"] = "22 55 21", ["3453"] = "22 55 21", ["3454"] = "22 55 21", ["3455"] = "22 55 44", ["3456"] = "22 55 44", ["3457"] = "22 55 21", ["3458"] = "22 55 21", ["3461"] = "22 55 21", ["3462"] = "22 55 21", ["3463"] = "22 55 21", ["3464"] = "22 55 21", ["3465"] = "22 55 44", ["3466"] = "22 55 44", ["3467"] = "22 55 21", ["3468"] = "22 55 21", ["3471"] = "22 55 21", ["3472"] = "22 55 21", ["3473"] = "22 55 21", ["3474"] = "22 55 21", ["3475"] = "22 55 44", ["3476"] = "22 55 44", ["3477"] = "22 55 21", ["3478"] = "22 55 21", ["3481"] = "22 55 21", ["3482"] = "22 55 21", ["3483"] = "22 55 21", ["3484"] = "22 55 21", ["3485"] = "22 55 44", ["3486"] = "22 55 44", ["3487"] = "22 55 21", ["3488"] = "22 55 21", ["3511"] = "33 55 21", ["3512"] = "33 55 21", ["3513"] = "33 55 21", ["3514"] = "33 55 21", ["3515"] = "24 33 21", ["3516"] = "24 33 21", ["3517"] = "33 55 21", ["3518"] = "33 55 21", ["3521"] = "33 55 21", ["3522"] = "33 55 21", ["3523"] = "33 55 21", ["3524"] = "33 55 21", ["3525"] = "24 33 21", ["3526"] = "24 33 21", ["3527"] = "33 55 21", ["3528"] = "33 55 21", ["3531"] = "55 33 21", ["3532"] = "55 33 21", ["3533"] = "35 33 21", ["3534"] = "35 33 21", ["3535"] = "35 33 21", ["3536"] = "35 33 21", ["3537"] = "35 33 21", ["3538"] = "35 33 21", ["3541"] = "24 33 21", ["3542"] = "24 33 21", ["3543"] = "24 33 21", ["3544"] = "24 33 21", ["3545"] = "24 33 21", ["3546"] = "24 33 21", ["3547"] = "24 33 21", ["3548"] = "24 33 21", ["3551"] = "44 44 53", ["3552"] = "44 44 53", ["3553"] = "44 44 53", ["3554"] = "44 44 53", ["3555"] = "44 44 53", ["3556"] = "44 44 53", ["3557"] = "44 44 53", ["3558"] = "44 44 53", ["3561"] = "44 44 53", ["3562"] = "44 44 53", ["3563"] = "44 44 53", ["3564"] = "44 44 53", ["3565"] = "44 44 53", ["3566"] = "44 44 53", ["3567"] = "44 44 53", ["3568"] = "44 44 53", ["3571"] = "33 55 21", ["3572"] = "33 55 21", ["3573"] = "33 55 21", ["3574"] = "33 55 21", ["3575"] = "35 33 21", ["3576"] = "35 33 21", ["3577"] = "33 55 21", ["3578"] = "33 55 21", ["3581"] = "33 55 21", ["3582"] = "33 55 21", ["3583"] = "33 55 21", ["3584"] = "33 55 21", ["3585"] = "35 33 21", ["3586"] = "35 33 21", ["3587"] = "33 55 21", ["3588"] = "33 55 21", ["3611"] = "22 55 21", ["3612"] = "22 55 21", ["3613"] = "22 55 21", ["3614"] = "22 55 21", ["3615"] = "22 55 44", ["3616"] = "22 55 44", ["3617"] = "22 55 21", ["3618"] = "22 55 21", ["3621"] = "22 55 21", ["3622"] = "22 55 21", ["3623"] = "22 55 21", ["3624"] = "22 55 21", ["3625"] = "22 55 44", ["3626"] = "22 55 44", ["3627"] = "22 55 21", ["3628"] = "22 55 21", ["3631"] = "22 55 21", ["3632"] = "22 55 21", ["3633"] = "22 55 21", ["3634"] = "22 55 21", ["3635"] = "24 33 21", ["3636"] = "24 33 21", ["3637"] = "24 33 21", ["3638"] = "24 33 21", ["3641"] = "24 33 21", ["3642"] = "24 33 21", ["3643"] = "24 33 21", ["3644"] = "24 33 21", ["3645"] = "24 33 21", ["3646"] = "24 33 21", ["3647"] = "24 33 21", ["3648"] = "24 33 21", ["3651"] = "22 55 21", ["3652"] = "22 55 21", ["3653"] = "22 55 21", ["3654"] = "22 55 21", ["3655"] = "22 55 44", ["3656"] = "22 55 44", ["3657"] = "22 55 21", ["3658"] = "22 55 21", ["3661"] = "22 55 21", ["3662"] = "22 55 21", ["3663"] = "22 55 21", ["3664"] = "22 55 21", ["3665"] = "22 55 44", ["3666"] = "22 55 44", ["3667"] = "22 55 21", ["3668"] = "22 55 21", ["3671"] = "22 55 21", ["3672"] = "22 55 21", ["3673"] = "22 55 21", ["3674"] = "22 55 21", ["3675"] = "22 55 44", ["3676"] = "22 55 44", ["3677"] = "22 55 21", ["3678"] = "22 55 21", ["3681"] = "22 55 21", ["3682"] = "22 55 21", ["3683"] = "22 55 21", ["3684"] = "22 55 21", ["3685"] = "22 55 44", ["3686"] = "22 55 44", ["3687"] = "22 55 21", ["3688"] = "22 55 21", ["3711"] = "33 55 21", ["3712"] = "33 55 21", ["3713"] = "33 55 21", ["3714"] = "33 55 21", ["3715"] = "33 55 44", ["3716"] = "33 55 44", ["3717"] = "33 55 21", ["3718"] = "33 55 21", ["3721"] = "33 55 21", ["3722"] = "33 55 21", ["3723"] = "33 55 21", ["3724"] = "33 55 21", ["3725"] = "33 55 44", ["3726"] = "33 55 44", ["3727"] = "33 55 21", ["3728"] = "33 55 21", ["3731"] = "33 55 21", ["3732"] = "33 55 21", ["3733"] = "33 55 21", ["3734"] = "33 55 21", ["3735"] = "33 55 21", ["3736"] = "33 55 21", ["3737"] = "33 55 21", ["3738"] = "33 55 21", ["3741"] = "33 55 21", ["3742"] = "33 55 21", ["3743"] = "33 55 21", ["3744"] = "33 55 21", ["3745"] = "33 55 21", ["3746"] = "33 55 21", ["3747"] = "33 55 21", ["3748"] = "33 55 21", ["3751"] = "33 55 21", ["3752"] = "33 55 21", ["3753"] = "33 55 21", ["3754"] = "33 55 21", ["3755"] = "33 55 44", ["3756"] = "33 55 44", ["3757"] = "33 55 21", ["3758"] = "33 55 21", ["3761"] = "33 55 21", ["3762"] = "33 55 21", ["3763"] = "33 55 21", ["3764"] = "33 55 21", ["3765"] = "33 55 44", ["3766"] = "33 55 44", ["3727"] = "33 55 21", ["3768"] = "33 55 21", ["3771"] = "33 55 21", ["3772"] = "33 55 21", ["3773"] = "33 55 21", ["3774"] = "33 55 21", ["3775"] = "33 55 44", ["3776"] = "33 55 44", ["3777"] = "33 55 21", ["3778"] = "33 55 21", ["3781"] = "33 55 21", ["3782"] = "33 55 21", ["3783"] = "33 55 21", ["3784"] = "33 55 21", ["3785"] = "33 55 44", ["3786"] = "33 55 44", ["3787"] = "33 55 21", ["3788"] = "33 55 21", ["3811"] = "11 11 24", ["3812"] = "11 11 24", ["3813"] = "11 11 24", ["3814"] = "11 11 24", ["3815"] = "11 11 24", ["3816"] = "11 11 24", ["3817"] = "11 11 24", ["3818"] = "11 11 24", ["3821"] = "11 11 24", ["3822"] = "11 11 24", ["3823"] = "11 11 24", ["3824"] = "11 11 24", ["3825"] = "11 11 24", ["3826"] = "11 11 24", ["3827"] = "11 11 24", ["3828"] = "11 11 24", ["3831"] = "22 55 21", ["3832"] = "22 55 21", ["3833"] = "22 55 21", ["3834"] = "22 55 21", ["3835"] = "22 55 21", ["3836"] = "22 55 21", ["3837"] = "22 55 21", ["3838"] = "22 55 21", ["3841"] = "22 55 21", ["3842"] = "22 55 21", ["3843"] = "22 55 21", ["3844"] = "22 55 21", ["3845"] = "22 55 21", ["3846"] = "22 55 21", ["3847"] = "22 55 21", ["3848"] = "22 55 21", ["3851"] = "22 55 21", ["3852"] = "22 55 21", ["3853"] = "22 55 21", ["3854"] = "22 55 21", ["3855"] = "22 55 21", ["3856"] = "22 55 21", ["3857"] = "22 55 21", ["3858"] = "22 55 21", ["3861"] = "22 55 21", ["3862"] = "22 55 21", ["3863"] = "22 55 21", ["3864"] = "22 55 21", ["3865"] = "22 55 21", ["3866"] = "22 55 21", ["3867"] = "22 55 21", ["3868"] = "22 55 21", ["3871"] = "11 11 24", ["3872"] = "11 11 24", ["3873"] = "11 11 24", ["3874"] = "11 11 24", ["3875"] = "11 11 24", ["3876"] = "11 11 24", ["3877"] = "11 11 24", ["3878"] = "11 11 24", ["3881"] = "11 11 24", ["3882"] = "11 11 24", ["3883"] = "11 11 24", ["3884"] = "11 11 24", ["3885"] = "11 11 24", ["3886"] = "11 11 24", ["3887"] = "11 11 24", ["3888"] = "11 11 24", }, ['sj'] = { ["10"] = "", ["11"] = "53", ["12"] = "31", ["13"] = "44", ["14"] = "22", ["15"] = "35", ["16"] = "13", ["17"] = "44", ["18"] = "22", ["211"] = "35 53", ["212"] = "35 53", ["213"] = "35 53", ["214"] = "35 53", ["215"] = "55 31", ["216"] = "55 31", ["217"] = "53 31", ["218"] = "53 31", ["221"] = "15 53", ["222"] = "15 53", ["223"] = "15 53", ["224"] = "15 53", ["225"] = "24 31", ["226"] = "24 31", ["227"] = "22 22", ["228"] = "22 22", ["231"] = "35 31", ["232"] = "35 31", ["233"] = "35 31", ["234"] = "35 31", ["235"] = "44 44", ["236"] = "44 44", ["237"] = "35 31", ["238"] = "35 31", ["241"] = "24 31", ["242"] = "24 31", ["243"] = "24 31", ["244"] = "24 31", ["245"] = "22 35", ["246"] = "22 35", ["247"] = "24 31", ["248"] = "24 31", ["251"] = "53 31", ["252"] = "53 31", ["253"] = "53 31", ["254"] = "53 31", ["255"] = "44 44", ["256"] = "44 44", ["257"] = "35 31", ["258"] = "35 31", ["261"] = "22 22", ["262"] = "22 22", ["263"] = "22 22", ["264"] = "22 22", ["265"] = "22 35", ["266"] = "22 35", ["267"] = "24 31", ["268"] = "24 31", ["271"] = "44 53", ["272"] = "44 53", ["273"] = "44 44", ["274"] = "44 44", ["275"] = "44 35", ["276"] = "44 35", ["277"] = "44 44", ["278"] = "44 44", ["281"] = "22 53", ["282"] = "22 53", ["283"] = "22 22", ["284"] = "22 22", ["285"] = "22 35", ["286"] = "22 35", ["287"] = "22 22", ["288"] = "22 22", ["3111"] = "35 55 31", ["3112"] = "35 55 31", ["3113"] = "35 55 31", ["3114"] = "35 55 31", ["3115"] = "35 55 31", ["3116"] = "35 55 31", ["3117"] = "55 33 31", ["3118"] = "55 33 31", ["3121"] = "35 55 31", ["3122"] = "35 55 31", ["3123"] = "35 55 31", ["3124"] = "35 55 31", ["3125"] = "35 55 31", ["3126"] = "35 55 31", ["3127"] = "55 33 31", ["3128"] = "55 33 31", ["3131"] = "55 33 31", ["3132"] = "55 33 31", ["3133"] = "55 33 31", ["3134"] = "55 33 31", ["3135"] = "35 55 31", ["3136"] = "35 55 31", ["3137"] = "55 33 31", ["3138"] = "55 33 31", ["3141"] = "55 33 31", ["3142"] = "55 33 31", ["3143"] = "55 33 31", ["3144"] = "55 33 31", ["3145"] = "35 55 31", ["3146"] = "35 55 31", ["3147"] = "55 33 31", ["3148"] = "55 33 31", ["3151"] = "55 33 31", ["3152"] = "55 33 31", ["3153"] = "55 33 31", ["3154"] = "55 33 31", ["3155"] = "55 33 31", ["3156"] = "55 33 31", ["3157"] = "55 33 31", ["3158"] = "55 33 31", ["3161"] = "55 33 31", ["3162"] = "55 33 31", ["3163"] = "55 33 31", ["3164"] = "55 33 31", ["3165"] = "55 33 31", ["3166"] = "55 33 31", ["3167"] = "55 33 31", ["3168"] = "55 33 31", ["3171"] = "35 55 31", ["3172"] = "35 55 31", ["3173"] = "55 33 31", ["3174"] = "55 33 31", ["3175"] = "55 33 31", ["3176"] = "55 33 31", ["3177"] = "55 33 31", ["3178"] = "55 33 31", ["3181"] = "35 55 31", ["3182"] = "35 55 31", ["3183"] = "55 33 31", ["3184"] = "55 33 31", ["3185"] = "55 33 31", ["3186"] = "55 33 31", ["3187"] = "55 33 31", ["3188"] = "55 33 31", ["3211"] = "13 55 31", ["3212"] = "13 55 31", ["3213"] = "13 55 31", ["3214"] = "13 55 31", ["3215"] = "13 55 31", ["3216"] = "13 55 31", ["3217"] = "22 22 22", ["3218"] = "22 22 22", ["3221"] = "13 55 31", ["3222"] = "13 55 31", ["3223"] = "13 55 31", ["3224"] = "13 55 31", ["3225"] = "13 55 31", ["3226"] = "13 55 31", ["3227"] = "22 22 22", ["3228"] = "22 22 22", ["3231"] = "24 33 31", ["3232"] = "24 33 31", ["3233"] = "24 33 31", ["3234"] = "24 33 31", ["3235"] = "13 55 31", ["3236"] = "13 55 31", ["3237"] = "24 33 31", ["3238"] = "24 33 31", ["3241"] = "24 33 31", ["3242"] = "24 33 31", ["3243"] = "24 33 31", ["3244"] = "24 33 31", ["3245"] = "13 55 31", ["3246"] = "13 55 31", ["3247"] = "24 33 31", ["3248"] = "24 33 31", ["3251"] = "24 33 31", ["3252"] = "24 33 31", ["3253"] = "24 33 31", ["3254"] = "24 33 31", ["3255"] = "24 33 31", ["3256"] = "24 33 31", ["3257"] = "24 33 31", ["3258"] = "24 33 31", ["3261"] = "24 33 31", ["3262"] = "24 33 31", ["3263"] = "24 33 31", ["3264"] = "24 33 31", ["3265"] = "24 33 31", ["3266"] = "24 33 31", ["3267"] = "22 22 22", ["3268"] = "22 22 22", ["3271"] = "13 55 31", ["3272"] = "13 55 31", ["3273"] = "22 22 22", ["3274"] = "22 22 22", ["3275"] = "22 22 22", ["3276"] = "22 22 22", ["3277"] = "22 22 22", ["3278"] = "22 22 22", ["3281"] = "13 55 31", ["3282"] = "13 55 31", ["3283"] = "22 22 22", ["3284"] = "22 22 22", ["3285"] = "22 22 22", ["3286"] = "22 22 22", ["3287"] = "22 22 22", ["3288"] = "22 22 22", ["3311"] = "33 55 31", ["3312"] = "33 55 31", ["3313"] = "33 55 31", ["3314"] = "33 55 31", ["3315"] = "35 33 31", ["3316"] = "35 33 31", ["3317"] = "33 55 31", ["3318"] = "33 55 31", ["3321"] = "33 55 31", ["3322"] = "33 55 31", ["3323"] = "33 55 31", ["3324"] = "33 55 31", ["3325"] = "35 33 31", ["3326"] = "35 33 31", ["3327"] = "33 55 31", ["3328"] = "33 55 31", ["3331"] = "33 55 31", ["3332"] = "33 55 31", ["3333"] = "33 55 31", ["3334"] = "33 55 31", ["3335"] = "35 33 31", ["3336"] = "35 33 31", ["3337"] = "33 55 31", ["3338"] = "33 55 31", ["3341"] = "33 55 31", ["3342"] = "33 55 31", ["3343"] = "33 55 31", ["3344"] = "33 55 31", ["3345"] = "35 33 31", ["3346"] = "35 33 31", ["3347"] = "33 55 31", ["3348"] = "33 55 31", ["3351"] = "33 55 31", ["3352"] = "33 55 31", ["3353"] = "33 55 31", ["3354"] = "33 55 31", ["3355"] = "35 33 31", ["3356"] = "35 33 31", ["3357"] = "33 55 31", ["3358"] = "33 55 31", ["3361"] = "33 55 31", ["3362"] = "33 55 31", ["3363"] = "33 55 31", ["3364"] = "33 55 31", ["3365"] = "35 33 31", ["3366"] = "35 33 31", ["3367"] = "33 55 31", ["3368"] = "33 55 31", ["3371"] = "33 55 53", ["3372"] = "33 55 53", ["3373"] = "33 55 31", ["3374"] = "33 55 31", ["3375"] = "35 33 31", ["3376"] = "35 33 31", ["3377"] = "33 55 31", ["3378"] = "33 55 31", ["3381"] = "33 55 53", ["3382"] = "33 55 53", ["3383"] = "33 55 31", ["3384"] = "33 55 31", ["3385"] = "35 33 31", ["3386"] = "35 33 31", ["3387"] = "33 55 31", ["3388"] = "33 55 31", ["3411"] = "22 55 31", ["3412"] = "22 55 31", ["3413"] = "22 55 31", ["3414"] = "22 55 31", ["3415"] = "24 33 31", ["3416"] = "24 33 31", ["3417"] = "22 55 31", ["3418"] = "22 55 31", ["3421"] = "22 55 31", ["3422"] = "22 55 31", ["3423"] = "22 55 31", ["3424"] = "22 55 31", ["3425"] = "24 33 31", ["3426"] = "24 33 31", ["3427"] = "22 55 31", ["3428"] = "22 55 31", ["3431"] = "22 55 31", ["3432"] = "22 55 31", ["3433"] = "22 55 31", ["3434"] = "22 55 31", ["3435"] = "24 33 31", ["3436"] = "24 33 31", ["3437"] = "22 55 31", ["3438"] = "22 55 31", ["3441"] = "22 55 31", ["3442"] = "22 55 31", ["3443"] = "22 55 31", ["3444"] = "22 55 31", ["3445"] = "24 33 31", ["3446"] = "24 33 31", ["3447"] = "22 55 31", ["3448"] = "22 55 31", ["3451"] = "22 55 31", ["3452"] = "22 55 31", ["3453"] = "22 55 31", ["3454"] = "22 55 31", ["3455"] = "24 33 31", ["3456"] = "24 33 31", ["3457"] = "22 55 31", ["3458"] = "22 55 31", ["3461"] = "22 55 31", ["3462"] = "22 55 31", ["3463"] = "22 55 31", ["3464"] = "22 55 31", ["3465"] = "24 33 31", ["3466"] = "24 33 31", ["3467"] = "22 55 31", ["3468"] = "22 55 31", ["3471"] = "22 55 53", ["3472"] = "22 55 53", ["3473"] = "22 55 31", ["3474"] = "22 55 31", ["3475"] = "24 33 31", ["3476"] = "24 33 31", ["3477"] = "22 55 31", ["3478"] = "22 55 31", ["3481"] = "22 55 53", ["3482"] = "22 55 53", ["3483"] = "22 55 31", ["3484"] = "22 55 31", ["3485"] = "24 33 31", ["3486"] = "24 33 31", ["3487"] = "22 55 31", ["3488"] = "22 55 31", ["3511"] = "55 33 31", ["3512"] = "55 33 31", ["3513"] = "55 33 31", ["3514"] = "55 33 31", ["3515"] = "55 33 31", ["3516"] = "55 33 31", ["3517"] = "55 33 31", ["3518"] = "55 33 31", ["3521"] = "55 33 31", ["3522"] = "55 33 31", ["3523"] = "55 33 31", ["3524"] = "55 33 31", ["3525"] = "55 33 31", ["3526"] = "55 33 31", ["3527"] = "55 33 31", ["3528"] = "55 33 31", ["3531"] = "44 44 53", ["3532"] = "44 44 53", ["3533"] = "44 44 53", ["3534"] = "44 44 53", ["3535"] = "55 33 31", ["3536"] = "55 33 31", ["3537"] = "44 44 53", ["3538"] = "44 44 53", ["3541"] = "33 55 31", ["3542"] = "33 55 31", ["3543"] = "33 55 31", ["3544"] = "33 55 31", ["3545"] = "55 33 31", ["3546"] = "55 33 31", ["3547"] = "44 44 53", ["3548"] = "44 44 53", ["3551"] = "33 55 31", ["3552"] = "33 55 31", ["3553"] = "33 55 31", ["3554"] = "33 55 31", ["3555"] = "35 33 31", ["3556"] = "35 33 31", ["3557"] = "44 44 53", ["3558"] = "44 44 53", ["3561"] = "33 55 31", ["3562"] = "33 55 31", ["3563"] = "33 55 31", ["3564"] = "33 55 31", ["3565"] = "35 33 31", ["3566"] = "35 33 31", ["3567"] = "44 44 53", ["3568"] = "44 44 53", ["3571"] = "33 55 53", ["3572"] = "33 55 53", ["3573"] = "33 55 31", ["3574"] = "33 55 31", ["3575"] = "35 33 31", ["3576"] = "35 33 31", ["3577"] = "33 55 31", ["3578"] = "33 55 31", ["3581"] = "33 55 53", ["3582"] = "33 55 53", ["3583"] = "33 55 31", ["3584"] = "33 55 31", ["3585"] = "35 33 31", ["3586"] = "35 33 31", ["3587"] = "33 55 31", ["3588"] = "33 55 31", ["3611"] = "22 22 22", ["3612"] = "22 22 22", ["3613"] = "22 22 22", ["3614"] = "22 22 22", ["3615"] = "22 22 22", ["3616"] = "22 22 22", ["3617"] = "22 22 22", ["3618"] = "22 22 22", ["3621"] = "22 22 22", ["3622"] = "22 22 22", ["3623"] = "22 22 22", ["3624"] = "22 22 22", ["3625"] = "22 22 22", ["3626"] = "22 22 22", ["3627"] = "22 22 22", ["3628"] = "22 22 22", ["3631"] = "22 55 53", ["3632"] = "22 55 53", ["3633"] = "22 55 53", ["3634"] = "22 55 53", ["3635"] = "22 22 22", ["3636"] = "22 22 22", ["3637"] = "22 55 53", ["3638"] = "22 55 53", ["3641"] = "22 55 53", ["3642"] = "22 55 53", ["3643"] = "22 55 53", ["3644"] = "22 55 53", ["3645"] = "22 22 22", ["3646"] = "22 22 22", ["3647"] = "22 55 53", ["3648"] = "22 55 53", ["3651"] = "22 55 31", ["3652"] = "22 55 31", ["3653"] = "22 55 31", ["3654"] = "22 55 31", ["3655"] = "24 33 31", ["3656"] = "24 33 31", ["3657"] = "22 55 31", ["3658"] = "22 55 31", ["3661"] = "22 55 31", ["3662"] = "22 55 31", ["3663"] = "22 55 31", ["3664"] = "22 55 31", ["3665"] = "24 33 31", ["3666"] = "24 33 31", ["3667"] = "22 55 31", ["3668"] = "22 55 31", ["3671"] = "22 55 53", ["3672"] = "22 55 53", ["3673"] = "22 55 31", ["3674"] = "22 55 31", ["3675"] = "24 33 31", ["3676"] = "24 33 31", ["3677"] = "22 55 31", ["3678"] = "22 55 31", ["3681"] = "22 55 53", ["3682"] = "22 55 53", ["3683"] = "22 55 31", ["3684"] = "22 55 31", ["3685"] = "24 33 31", ["3686"] = "24 33 31", ["3687"] = "22 55 31", ["3688"] = "22 55 31", ["3711"] = "33 55 53", ["3712"] = "33 55 53", ["3713"] = "33 55 53", ["3714"] = "33 55 53", ["3715"] = "33 55 31", ["3716"] = "33 55 31", ["3717"] = "33 55 31", ["3718"] = "33 55 31", ["3721"] = "33 55 53", ["3722"] = "33 55 53", ["3723"] = "33 55 53", ["3724"] = "33 55 53", ["3725"] = "33 55 31", ["3726"] = "33 55 31", ["3727"] = "33 55 31", ["3728"] = "33 55 31", ["3731"] = "33 55 53", ["3732"] = "33 55 53", ["3733"] = "33 55 53", ["3734"] = "33 55 53", ["3735"] = "44 44 44", ["3736"] = "44 44 44", ["3737"] = "33 55 53", ["3738"] = "33 55 53", ["3741"] = "33 55 53", ["3742"] = "33 55 53", ["3743"] = "33 55 53", ["3744"] = "33 55 53", ["3745"] = "44 44 44", ["3746"] = "44 44 44", ["3747"] = "33 55 53", ["3748"] = "33 55 53", ["3751"] = "33 55 31", ["3752"] = "33 55 31", ["3753"] = "33 55 31", ["3754"] = "33 55 31", ["3755"] = "44 44 44", ["3756"] = "44 44 44", ["3757"] = "33 55 53", ["3758"] = "33 55 53", ["3761"] = "33 55 31", ["3762"] = "33 55 31", ["3763"] = "33 55 31", ["3764"] = "33 55 31", ["3765"] = "44 44 44", ["3766"] = "44 44 44", ["3767"] = "33 55 53", ["3768"] = "33 55 53", ["3771"] = "33 55 53", ["3772"] = "33 55 53", ["3773"] = "33 55 53", ["3774"] = "33 55 53", ["3775"] = "44 44 44", ["3776"] = "44 44 44", ["3777"] = "44 44 44", ["3778"] = "44 44 44", ["3781"] = "33 55 53", ["3782"] = "33 55 53", ["3783"] = "33 55 53", ["3784"] = "33 55 53", ["3785"] = "44 44 44", ["3786"] = "44 44 44", ["3787"] = "44 44 44", ["3788"] = "44 44 44", ["3811"] = "22 55 53", ["3812"] = "22 55 53", ["3813"] = "22 55 53", ["3814"] = "22 55 53", ["3815"] = "22 55 31", ["3816"] = "22 55 31", ["3817"] = "22 55 31", ["3818"] = "22 55 31", ["3821"] = "22 55 53", ["3822"] = "22 55 53", ["3823"] = "22 55 53", ["3824"] = "22 55 53", ["3825"] = "22 55 31", ["3826"] = "22 55 31", ["3827"] = "22 55 31", ["3828"] = "22 55 31", ["3831"] = "22 55 53", ["3832"] = "22 55 53", ["3833"] = "22 55 53", ["3834"] = "22 55 53", ["3835"] = "22 22 22", ["3836"] = "22 22 22", ["3837"] = "22 55 53", ["3838"] = "22 55 53", ["3841"] = "22 55 53", ["3842"] = "22 55 53", ["3843"] = "22 55 53", ["3844"] = "22 55 53", ["3845"] = "22 22 22", ["3846"] = "22 22 22", ["3847"] = "22 55 53", ["3848"] = "22 55 53", ["3851"] = "22 55 31", ["3852"] = "22 55 31", ["3853"] = "22 55 31", ["3854"] = "22 55 31", ["3855"] = "22 22 22", ["3856"] = "22 22 22", ["3857"] = "22 55 53", ["3858"] = "22 55 53", ["3861"] = "22 55 31", ["3862"] = "22 55 31", ["3863"] = "22 55 31", ["3864"] = "22 55 31", ["3865"] = "22 22 22", ["3866"] = "22 22 22", ["3867"] = "22 55 53", ["3868"] = "22 55 53", ["3871"] = "22 55 53", ["3872"] = "22 55 53", ["3873"] = "22 55 53", ["3874"] = "22 55 53", ["3875"] = "22 22 22", ["3876"] = "22 22 22", ["3877"] = "22 22 22", ["3878"] = "22 22 22", ["3881"] = "22 55 53", ["3882"] = "22 55 53", ["3883"] = "22 55 53", ["3884"] = "22 55 53", ["3885"] = "22 22 22", ["3886"] = "22 22 22", ["3887"] = "22 22 22", ["3888"] = "22 22 22", --!RPS! : potentially doesn't exist? source found that claims that Old SH doesn't have RPS but whether or not this applies to Songjiang may be up for debate }, ['cm'] = { ["10"] = "", ["11"] = "55", ["12"] = "24", ["13"] = "424", ["14"] = "242", ["15"] = "33", ["16"] = "313", ["17"] = "5", ["18"] = "2", -- disylls -- regular LPS ["211"] = "55 55", ["212"] = "55 55", ["213"] = "55 0", ["214"] = "55 0", ["215"] = "55 0", ["216"] = "55 0", ["217"] = "55 5", ["218"] = "55 5", ["221"] = "24 55", ["222"] = "24 55", ["223"] = "24 0", ["224"] = "24 0", ["225"] = "24 33", ["226"] = "24 0", ["227"] = "24 5", ["228"] = "24 5", ["231"] = "42 55", ["232"] = "42 55", ["233"] = "33 0", ["234"] = "42 33", ["235"] = "42 33", ["236"] = "42 33", ["237"] = "42 5", ["238"] = "42 5", ["241"] = "31 55", ["242"] = "31 55", ["243"] = "31 33", ["244"] = "242 0", ["245"] = "242 0", ["246"] = "242 0", ["247"] = "31 5", ["248"] = "31 5", ["251"] = "42 55", ["252"] = "42 55", ["253"] = "33 0", ["254"] = "33 0", ["255"] = "42 33", ["256"] = "33 0", ["257"] = "42 5", ["258"] = "42 5", ["261"] = "31 55", ["262"] = "31 55", ["263"] = "31 33", ["264"] = "31 33", ["265"] = "31 33", ["266"] = "31 33", ["267"] = "31 5", ["268"] = "31 5", ["271"] = "55 55", ["272"] = "55 55", ["273"] = "55 33", ["274"] = "55 33", ["275"] = "55 33", ["276"] = "55 33", ["277"] = "55 55", ["278"] = "55 55", ["281"] = "22 55", ["282"] = "22 55", ["283"] = "22 33", ["284"] = "22 33", ["285"] = "22 33", ["286"] = "22 33", ["287"] = "22 55", ["288"] = "22 55", -- numeral-classifier and verb/adjective-complement LPS ["211C"] = "55 55", ["212C"] = "55 55", ["213C"] = "55 0", ["214C"] = "55 0", ["215C"] = "55 0", ["216C"] = "55 0", ["217C"] = "55 55", ["218C"] = "55 55", ["221C"] = "24 55", ["222C"] = "24 55", ["223C"] = "24 0", ["224C"] = "24 0", ["225C"] = "24 33", ["226C"] = "24 0", ["227C"] = "24 55", ["228C"] = "24 55", ["231C"] = "42 33", ["232C"] = "42 33", ["233C"] = "42 33", ["234C"] = "42 33", ["235C"] = "42 33", ["236C"] = "42 33", ["237C"] = "42 0", ["238C"] = "42 0", ["241C"] = "242 0", ["242C"] = "242 0", ["243C"] = "242 0", ["244C"] = "242 0", ["245C"] = "242 0", ["246C"] = "242 0", ["247C"] = "242 0", ["248C"] = "242 0", ["251C"] = "33 55", ["252C"] = "33 55", ["253C"] = "33 55", ["254C"] = "33 55", ["255C"] = "33 55", ["256C"] = "33 55", ["257C"] = "33 0", ["258C"] = "33 0", ["261C"] = "31 33", ["262C"] = "31 33", ["263C"] = "31 33", ["264C"] = "31 33", ["265C"] = "31 33", ["266C"] = "31 33", ["267C"] = "31 0", ["268C"] = "31 0", ["271C"] = "55 55", ["272C"] = "55 55", ["273C"] = "55 33", ["274C"] = "55 33", ["275C"] = "55 33", ["276C"] = "55 33", ["277C"] = "55 55", ["278C"] = "55 55", ["281C"] = "22 55", ["282C"] = "22 55", ["283C"] = "22 33", ["284C"] = "22 33", ["285C"] = "22 33", ["286C"] = "22 33", ["287C"] = "22 55", ["288C"] = "22 55", -- motion verbs → 過來、出來、上去、進去 ["3M"] = "42 55", ["4M"] = "31 55", ["5M"] = "42 55", ["7M"] = "55 55", -- verb-pronoun → 幫我、怪你、學渠 ["1P"] = "55 55", ["2P"] = "24 55", ["3P"] = "53 33", ["4P"] = "242 0", ["5P"] = "33 55", ["6P"] = "31 33", ["7P"] = "55 55", ["8P"] = "22 55", -- reduplicated (verb, counter, noun) → 天天、花花、做做、日日、坐坐 ["RV1"] = "55 55", ["RV2"] = "24 55", ["RV3"] = "42 33", ["RV4"] = "242 0", ["RV5"] = "33 55", ["RV6"] = "31 33", ["RV7"] = "5 5", ["RV8"] = "2 5", ["RC1"] = "55 55", ["RC2"] = "24 55", ["RC3"] = "42 33", ["RC4"] = "24 0", ["RC5"] = "42 33", ["RC6"] = "24 0", ["RC7"] = "5 5", ["RC8"] = "2 5", ["RN1"] = "55 55", ["RN2"] = "24 55", ["RN3"] = "42 55", ["RN4"] = "242 0", ["RN5"] = "42 55", ["RN6"] = "42 55", ["RN7"] = "5 5", ["RN8"] = "2 5", --regular trisyll LPS ["3111"] = "55 55 55", ["3112"] = "55 55 55", ["3113"] = "55 55 0", ["3114"] = "55 55 0", ["3115"] = "55 55 0", ["3116"] = "55 55 0", ["3117"] = "55 55 55", ["3118"] = "55 55 55", ["3121"] = "55 55 55", ["3122"] = "55 55 55", ["3123"] = "55 55 0", ["3124"] = "55 55 0", ["3125"] = "55 55 0", ["3126"] = "55 55 0", ["3127"] = "55 55 55", ["3128"] = "55 55 55", ["3131"] = "55 0 55", ["3132"] = "55 0 55", ["3133"] = "55 0 0", ["3134"] = "55 0 0", ["3135"] = "55 0 0", ["3136"] = "55 0 0", ["3137"] = "55 0 0", ["3138"] = "55 0 0", ["3141"] = "55 0 55", ["3142"] = "55 0 55", ["3143"] = "55 0 0", ["3144"] = "55 0 0", ["3145"] = "55 0 0", ["3146"] = "55 0 0", ["3147"] = "55 0 0", ["3148"] = "55 0 0", ["3151"] = "55 0 55", ["3152"] = "55 0 55", ["3153"] = "55 0 0", ["3154"] = "55 0 0", ["3155"] = "55 0 0", ["3156"] = "55 0 0", ["3157"] = "55 0 0", ["3158"] = "55 0 0", ["3161"] = "55 0 55", ["3162"] = "55 0 55", ["3163"] = "55 0 0", ["3164"] = "55 0 0", ["3165"] = "55 0 0", ["3166"] = "55 0 0", ["3167"] = "55 0 0", ["3168"] = "55 0 0", ["3171"] = "55 55 55", ["3172"] = "55 55 55", ["3173"] = "55 55 0", ["3174"] = "55 55 0", ["3175"] = "55 55 0", ["3176"] = "55 55 0", ["3177"] = "55 55 55", ["3178"] = "55 55 55", ["3181"] = "55 55 55", ["3182"] = "55 55 55", ["3183"] = "55 55 0", ["3184"] = "55 55 0", ["3185"] = "55 55 0", ["3186"] = "55 55 0", ["3187"] = "55 55 55", ["3188"] = "55 55 55", ["3211"] = "24 33 55", ["3212"] = "24 33 55", ["3213"] = "24 55 0", ["3214"] = "24 55 0", ["3215"] = "24 55 0", ["3216"] = "24 55 0", ["3217"] = "24 33 55", ["3218"] = "24 33 55", ["3221"] = "24 33 55", ["3222"] = "24 33 55", ["3223"] = "24 55 0", ["3224"] = "24 55 0", ["3225"] = "24 55 0", ["3226"] = "24 55 0", ["3227"] = "24 33 55", ["3228"] = "24 33 55", ["3231"] = "24 33 55", ["3232"] = "24 33 55", ["3233"] = "24 33 0", ["3234"] = "24 33 0", ["3235"] = "24 0 0", ["3236"] = "24 0 0", ["3237"] = "24 33 55", ["3238"] = "24 33 55", ["3241"] = "24 0 55", ["3242"] = "24 0 55", ["3243"] = "24 0 0", ["3244"] = "24 0 0", ["3245"] = "24 0 0", ["3246"] = "24 0 0", ["3247"] = "24 0 0", ["3248"] = "24 0 0", ["3251"] = "24 33 55", ["3252"] = "24 33 55", ["3253"] = "24 33 0", ["3254"] = "24 33 0", ["3255"] = "24 33 0", ["3256"] = "24 33 0", ["3257"] = "24 33 55", ["3258"] = "24 33 5", ["3261"] = "24 0 55", ["3262"] = "24 0 55", ["3263"] = "24 0 0", ["3264"] = "24 0 0", ["3265"] = "24 0 0", ["3266"] = "24 0 0", ["3267"] = "24 0 0", ["3268"] = "24 0 0", ["3271"] = "24 55 55", ["3272"] = "24 55 55", ["3273"] = "24 55 0", ["3274"] = "24 55 0", ["3275"] = "24 55 0", ["3276"] = "24 55 0", ["3277"] = "24 55 55", ["3278"] = "24 55 55", ["3281"] = "24 55 55", ["3282"] = "24 55 55", ["3283"] = "24 55 0", ["3284"] = "24 55 0", ["3285"] = "24 55 0", ["3286"] = "24 55 0", ["3287"] = "24 55 55", ["3288"] = "24 55 55", ["3311"] = "42 33 55", ["3312"] = "42 33 55", ["3313"] = "42 55 0", ["3314"] = "42 55 0", ["3315"] = "42 55 0", ["3316"] = "42 55 0", ["3317"] = "42 33 55", ["3318"] = "42 33 55", ["3321"] = "42 33 55", ["3322"] = "42 33 55", ["3323"] = "42 55 0", ["3324"] = "42 55 0", ["3325"] = "42 55 0", ["3326"] = "42 55 0", ["3327"] = "42 33 55", ["3328"] = "42 33 55", ["3331"] = "42 33 55", ["3332"] = "42 33 55", ["3333"] = "42 33 0", ["3334"] = "42 33 0", ["3335"] = "42 33 0", ["3336"] = "42 33 0", ["3337"] = "42 33 55", ["3338"] = "42 33 55", ["3341"] = "42 33 55", ["3342"] = "42 33 55", ["3343"] = "42 33 0", ["3344"] = "42 33 0", ["3345"] = "42 33 0", ["3346"] = "42 33 0", ["3347"] = "42 33 55", ["3348"] = "42 33 55", ["3351"] = "42 33 55", ["3352"] = "42 33 55", ["3353"] = "42 33 0", ["3354"] = "42 33 0", ["3355"] = "42 33 0", ["3356"] = "42 33 0", ["3357"] = "42 33 55", ["3358"] = "42 33 55", ["3361"] = "42 33 55", ["3362"] = "42 33 55", ["3363"] = "42 33 0", ["3364"] = "42 33 0", ["3365"] = "42 33 0", ["3366"] = "42 33 0", ["3367"] = "42 33 55", ["3368"] = "42 33 55", ["3371"] = "42 55 55", ["3372"] = "42 55 55", ["3373"] = "42 55 0", ["3374"] = "42 55 0", ["3375"] = "42 55 0", ["3376"] = "42 55 0", ["3377"] = "42 55 55", ["3378"] = "42 55 55", ["3381"] = "42 55 55", ["3382"] = "42 55 55", ["3383"] = "42 55 0", ["3384"] = "42 55 0", ["3385"] = "42 55 0", ["3386"] = "42 55 0", ["3387"] = "42 55 55", ["3388"] = "42 55 55", ["3411"] = "31 33 55", ["3412"] = "31 33 55", ["3413"] = "31 55 0", ["3414"] = "31 55 0", ["3415"] = "31 55 0", ["3416"] = "31 55 0", ["3417"] = "31 33 55", ["3418"] = "31 33 55", ["3421"] = "31 33 55", ["3422"] = "31 33 55", ["3423"] = "31 55 0", ["3424"] = "31 55 0", ["3425"] = "31 55 0", ["3426"] = "31 55 0", ["3427"] = "31 33 55", ["3428"] = "31 33 55", ["3431"] = "31 33 55", ["3432"] = "31 33 55", ["3433"] = "31 33 0", ["3434"] = "31 33 0", ["3435"] = "31 33 0", ["3436"] = "31 33 0", ["3437"] = "31 33 55", ["3438"] = "31 33 55", ["3441"] = "31 33 55", ["3442"] = "31 33 55", ["3443"] = "31 33 0", ["3444"] = "31 33 0", ["3445"] = "31 33 0", ["3446"] = "31 33 0", ["3447"] = "31 33 55", ["3448"] = "31 33 55", ["3451"] = "31 33 55", ["3452"] = "31 33 55", ["3453"] = "31 33 0", ["3454"] = "31 33 0", ["3455"] = "31 33 0", ["3456"] = "31 33 0", ["3457"] = "31 33 55", ["3458"] = "31 33 55", ["3461"] = "31 33 55", ["3462"] = "31 33 55", ["3463"] = "31 33 0", ["3464"] = "31 33 0", ["3465"] = "31 33 0", ["3466"] = "31 33 0", ["3467"] = "31 33 55", ["3468"] = "31 33 55", ["3471"] = "31 55 55", ["3472"] = "31 55 55", ["3473"] = "31 55 0", ["3474"] = "31 55 0", ["3475"] = "31 55 0", ["3476"] = "31 55 0", ["3477"] = "31 55 55", ["3478"] = "31 55 55", ["3481"] = "31 55 55", ["3482"] = "31 55 55", ["3483"] = "31 55 0", ["3484"] = "31 55 0", ["3485"] = "31 55 0", ["3486"] = "31 55 0", ["3487"] = "31 55 55", ["3488"] = "31 55 55", ["3511"] = "42 33 55", ["3512"] = "42 33 55", ["3513"] = "42 55 0", ["3514"] = "42 55 0", ["3515"] = "42 55 0", ["3516"] = "42 55 0", ["3517"] = "42 33 55", ["3518"] = "42 33 55", ["3521"] = "42 33 55", ["3522"] = "42 33 55", ["3523"] = "42 55 0", ["3524"] = "42 55 0", ["3525"] = "42 55 0", ["3526"] = "42 55 0", ["3527"] = "42 33 55", ["3528"] = "42 33 55", ["3531"] = "42 33 55", ["3532"] = "42 33 55", ["3533"] = "42 33 0", ["3534"] = "42 33 0", ["3535"] = "42 33 0", ["3536"] = "42 33 0", ["3537"] = "42 33 55", ["3538"] = "42 33 55", ["3541"] = "42 33 55", ["3542"] = "42 33 55", ["3543"] = "42 33 0", ["3544"] = "42 33 0", ["3545"] = "42 33 0", ["3546"] = "42 33 0", ["3547"] = "42 33 55", ["3548"] = "42 33 55", ["3551"] = "42 33 55", ["3552"] = "42 33 55", ["3553"] = "42 33 0", ["3554"] = "42 33 0", ["3555"] = "42 33 0", ["3556"] = "42 33 0", ["3557"] = "42 33 55", ["3558"] = "42 33 55", ["3561"] = "42 33 55", ["3562"] = "42 33 55", ["3563"] = "42 33 0", ["3564"] = "42 33 0", ["3565"] = "42 33 0", ["3566"] = "42 33 0", ["3567"] = "42 33 55", ["3568"] = "42 33 55", ["3571"] = "42 55 55", ["3572"] = "42 55 55", ["3573"] = "42 55 0", ["3574"] = "42 55 0", ["3575"] = "42 55 0", ["3576"] = "42 55 0", ["3577"] = "42 55 55", ["3578"] = "42 55 55", ["3581"] = "42 55 55", ["3582"] = "42 55 55", ["3583"] = "42 55 0", ["3584"] = "42 55 0", ["3585"] = "42 55 0", ["3586"] = "42 55 0", ["3587"] = "42 55 55", ["3588"] = "42 55 55", ["3611"] = "31 33 55", ["3612"] = "31 33 55", ["3613"] = "31 55 0", ["3614"] = "31 55 0", ["3615"] = "31 55 0", ["3616"] = "31 55 0", ["3617"] = "31 33 55", ["3618"] = "31 33 55", ["3621"] = "31 33 55", ["3622"] = "31 33 55", ["3623"] = "31 55 0", ["3624"] = "31 55 0", ["3625"] = "31 55 0", ["3626"] = "31 55 0", ["3627"] = "31 33 55", ["3628"] = "31 33 55", ["3631"] = "31 33 55", ["3632"] = "31 33 55", ["3633"] = "31 33 0", ["3634"] = "31 33 0", ["3635"] = "31 33 0", ["3636"] = "31 33 0", ["3637"] = "31 33 55", ["3638"] = "31 33 55", ["3641"] = "31 33 55", ["3642"] = "31 33 55", ["3643"] = "31 33 0", ["3644"] = "31 33 0", ["3645"] = "31 33 0", ["3646"] = "31 33 0", ["3647"] = "31 33 55", ["3648"] = "31 33 55", ["3651"] = "31 33 55", ["3652"] = "31 33 55", ["3653"] = "31 33 0", ["3654"] = "31 33 0", ["3655"] = "31 33 0", ["3656"] = "31 33 0", ["3657"] = "31 33 55", ["3658"] = "31 33 55", ["3661"] = "31 33 55", ["3662"] = "31 33 55", ["3663"] = "31 33 0", ["3664"] = "31 33 0", ["3665"] = "31 33 0", ["3666"] = "31 33 0", ["3667"] = "31 33 55", ["3668"] = "31 33 55", ["3671"] = "31 55 55", ["3672"] = "31 55 55", ["3673"] = "31 55 0", ["3674"] = "31 55 0", ["3675"] = "31 55 0", ["3676"] = "31 55 0", ["3677"] = "31 55 55", ["3678"] = "31 55 55", ["3681"] = "31 55 55", ["3682"] = "31 55 55", ["3683"] = "31 55 0", ["3684"] = "31 55 0", ["3685"] = "31 55 0", ["3686"] = "31 55 0", ["3687"] = "31 55 55", ["3688"] = "31 55 55", ["3711"] = "55 55 55", ["3712"] = "55 55 55", ["3713"] = "55 55 0", ["3714"] = "55 55 0", ["3715"] = "55 55 0", ["3716"] = "55 55 0", ["3717"] = "55 55 55", ["3718"] = "55 55 55", ["3721"] = "55 55 55", ["3722"] = "55 55 55", ["3723"] = "55 55 0", ["3724"] = "55 55 0", ["3725"] = "55 55 0", ["3726"] = "55 55 0", ["3727"] = "55 55 55", ["3728"] = "55 55 55", ["3731"] = "55 33 55", ["3732"] = "55 33 55", ["3733"] = "55 33 0", ["3734"] = "55 33 0", ["3735"] = "55 33 0", ["3736"] = "55 33 0", ["3737"] = "55 33 55", ["3738"] = "55 33 55", ["3741"] = "55 33 55", ["3742"] = "55 33 55", ["3743"] = "55 33 0", ["3744"] = "55 33 0", ["3745"] = "55 33 0", ["3746"] = "55 33 0", ["3747"] = "55 33 55", ["3748"] = "55 33 55", ["3751"] = "55 33 55", ["3752"] = "55 33 55", ["3753"] = "55 33 0", ["3754"] = "55 33 0", ["3755"] = "55 33 0", ["3756"] = "55 33 0", ["3757"] = "55 33 55", ["3758"] = "55 33 55", ["3761"] = "55 33 55", ["3762"] = "55 33 55", ["3763"] = "55 33 0", ["3764"] = "55 33 0", ["3765"] = "55 33 0", ["3766"] = "55 33 0", ["3767"] = "55 33 55", ["3768"] = "55 33 55", ["3771"] = "55 55 55", ["3772"] = "55 55 55", ["3773"] = "55 55 0", ["3774"] = "55 55 0", ["3775"] = "55 55 0", ["3776"] = "55 55 0", ["3777"] = "55 55 55", ["3778"] = "55 55 55", ["3781"] = "55 55 55", ["3782"] = "55 55 55", ["3783"] = "55 55 0", ["3784"] = "55 55 0", ["3785"] = "55 55 0", ["3786"] = "55 55 0", ["3787"] = "55 55 55", ["3788"] = "55 55 55", ["3811"] = "22 33 55", ["3812"] = "22 33 55", ["3813"] = "22 55 0", ["3814"] = "22 55 0", ["3815"] = "22 55 0", ["3816"] = "22 55 0", ["3817"] = "22 33 55", ["3818"] = "22 33 55", ["3821"] = "22 33 55", ["3822"] = "22 33 55", ["3823"] = "22 55 0", ["3824"] = "22 55 0", ["3825"] = "22 55 0", ["3826"] = "22 55 0", ["3827"] = "22 33 55", ["3828"] = "22 33 55", ["3831"] = "22 33 55", ["3832"] = "22 33 55", ["3833"] = "22 33 0", ["3834"] = "22 33 0", ["3835"] = "22 33 0", ["3836"] = "22 33 0", ["3837"] = "22 33 55", ["3838"] = "22 33 55", ["3841"] = "22 33 55", ["3842"] = "22 33 55", ["3843"] = "22 33 0", ["3844"] = "22 33 0", ["3845"] = "22 33 0", ["3846"] = "22 33 0", ["3847"] = "22 33 55", ["3848"] = "22 33 55", ["3851"] = "22 33 55", ["3852"] = "22 33 55", ["3853"] = "22 33 0", ["3854"] = "22 33 0", ["3855"] = "22 33 0", ["3856"] = "22 33 0", ["3857"] = "22 33 55", ["3858"] = "22 33 55", ["3861"] = "22 33 55", ["3862"] = "22 33 55", ["3863"] = "22 33 0", ["3864"] = "22 33 0", ["3865"] = "22 33 0", ["3866"] = "22 33 0", ["3867"] = "22 33 55", ["3868"] = "22 33 55", ["3871"] = "22 55 55", ["3872"] = "22 55 55", ["3873"] = "22 55 0", ["3874"] = "22 55 0", ["3875"] = "22 55 0", ["3876"] = "22 55 0", ["3877"] = "22 55 55", ["3878"] = "22 55 55", ["3881"] = "22 55 55", ["3882"] = "22 55 55", ["3883"] = "22 55 0", ["3884"] = "22 55 0", ["3885"] = "22 55 0", ["3886"] = "22 55 0", ["3887"] = "22 55 55", ["3888"] = "22 55 55", }, ['cs'] = { ["10"] = "", ["11"] = "53", ["13"] = "44", ["14"] = "213", ["15"] = "35", ["16"] = "13", ["17"] = "55", ["18"] = "23", ["211"] = "55 53", ["212"] = "55 53", ["213"] = "55 21", ["214"] = "55 21", ["215"] = "55 21", ["216"] = "55 21", ["217"] = "55 53", ["218"] = "55 53", ["221"] = "22 22", ["222"] = "22 22", ["223"] = "22 22", ["224"] = "22 22", ["225"] = "22 24", ["226"] = "22 24", ["227"] = "22 44", ["228"] = "22 44", ["231"] = "33 53", ["232"] = "33 53", ["233"] = "35 21", ["234"] = "35 21", ["235"] = "44 44", ["236"] = "44 44", ["237"] = "33 53", ["238"] = "33 53", ["241"] = "22 53", ["242"] = "22 53", ["243"] = "13 21", ["244"] = "13 21", ["245"] = "22 34", ["246"] = "22 34", ["247"] = "22 53", ["248"] = "22 53", ["251"] = "33 53", ["252"] = "33 53", ["253"] = "44 44", ["254"] = "44 44", ["255"] = "55 21", ["256"] = "55 21", ["257"] = "33 53", ["258"] = "33 53", ["261"] = "22 53", ["262"] = "22 53", ["263"] = "13 21", ["264"] = "13 21", ["265"] = "22 34", ["266"] = "22 34", ["267"] = "22 53", ["268"] = "22 53", ["271"] = "33 53", ["272"] = "33 53", ["273"] = "44 44", ["274"] = "44 44", ["275"] = "33 34", ["276"] = "33 34", ["277"] = "33 53", ["278"] = "33 53", ["281"] = "22 34", ["282"] = "22 34", ["283"] = "22 34", ["284"] = "22 34", ["285"] = "22 34", ["286"] = "22 34", ["287"] = "22 34", ["288"] = "22 34", ["311"] = "55 55 53", ["312"] = "55 55 53", ["313"] = "55 55 21", ["314"] = "55 55 21", ["315"] = "55 33 21", ["316"] = "55 33 21", ["317"] = "55 55 53", ["318"] = "55 55 53", ["321"] = "22 22 22", ["322"] = "22 22 22", ["323"] = "22 22 22", ["324"] = "22 22 22", ["325"] = "22 22 22", ["326"] = "22 22 22", ["327"] = "22 22 22", ["328"] = "22 22 22", ["331"] = "33 55 53", ["332"] = "33 55 53", ["333"] = "35 33 21", ["334"] = "44 44 44", ["335"] = "33 55 21", ["336"] = "33 55 21", ["337"] = "33 55 53", ["338"] = "33 55 53", ["341"] = "22 55 53", ["342"] = "22 55 53", ["343"] = "13 22 21", ["344"] = "13 22 21", ["345"] = "22 55 21", ["346"] = "22 55 21", ["347"] = "22 55 53", ["348"] = "22 55 53", ["351"] = "33 55 53", ["352"] = "33 55 53", ["353"] = "35 33 21", ["354"] = "44 44 44", ["355"] = "33 55 21", ["356"] = "33 55 21", ["357"] = "33 55 53", ["358"] = "33 55 53", ["361"] = "22 55 53", ["362"] = "22 55 53", ["363"] = "13 22 21", ["364"] = "13 22 21", ["365"] = "22 55 21", ["366"] = "22 55 21", ["367"] = "22 55 53", ["368"] = "22 55 53", ["371"] = "33 55 53", ["372"] = "33 55 53", ["373"] = "35 33 21", ["374"] = "44 44 44", ["375"] = "33 55 21", ["376"] = "33 55 21", ["377"] = "33 55 53", ["378"] = "33 55 53", ["381"] = "22 22 53", ["382"] = "22 22 53", ["383"] = "22 22 53", ["384"] = "22 22 53", ["385"] = "22 22 34", ["386"] = "22 22 34", ["387"] = "22 22 34", ["388"] = "22 22 34", }, ['sz'] = { ["1-"] = "33", ["2-"] = "33 33", ["3-"] = "33 33 33", ["4-"] = "33 33 33 33", ["10"] = "", ["11"] = "44", ["21"] = "44 0", ["31"] = "44 44 0", ["41"] = "44 44 44 0", ["12"] = "223", ["22"] = "22 33", ["32"] = "22 33 0", ["42"] = "22 33 44 0", ["13"] = "51", ["23"] = "52 11", ["33"] = "52 11 0", ["43"] = "52 11 11 0", ["15"] = "523", ["25"] = "52 33", ["35"] = "52 33 0", ["45"] = "52 33 44 0", ["16"] = "231", ["26"] = "23 11", ["36"] = "23 11 0", ["46"] = "23 11 11 0", ["17"] = "43", ["18"] = "23", ["271"] = "44 23", ["371"] = "44 23 0", ["471"] = "44 23 44 0", ["272"] = "44 23", ["372"] = "44 23 0", ["472"] = "44 23 44 0", ["273"] = "55 51", ["373"] = "55 51 0", ["473"] = "55 51 11 0", ["275"] = "55 523", ["375"] = "55 52 33", ["475"] = "55 52 22 33", ["276"] = "55 523", ["376"] = "55 52 33", ["476"] = "55 52 22 33", ["277"] = "44 44", ["377"] = "44 44 0", ["477"] = "44 44 44 22", ["278"] = "44 44", ["378"] = "44 44 0", ["478"] = "44 44 44 22", ["270"] = "44 0", ["281"] = "22 33", ["381"] = "22 33 0", ["481"] = "22 33 44 0", ["282"] = "22 33", ["382"] = "22 33 0", ["482"] = "22 33 44 0", ["283"] = "22 51", ["383"] = "22 51 0", ["483"] = "22 51 11 0", ["285"] = "22 523", ["385"] = "22 52 33", ["485"] = "22 52 22 33", ["286"] = "22 523", ["386"] = "22 52 33", ["486"] = "22 52 22 33", ["287"] = "33 44", ["387"] = "33 44 0", ["487"] = "33 44 22 0", ["288"] = "33 44", ["388"] = "33 44 0", ["488"] = "33 44 22 0", ["280"] = "33 0", --RPS ["1s"] = "44", ["2s"] = "223", ["3s"] = "51", ["5s"] = "51", ["6s"] = "231", ["7s"] = "43", ["8s"] = "23", ["multiple"] = "33" }, ['ks'] = { ["10"] = "", ["11"] = "55", ["12"] = "13", ["13"] = "52", ["15"] = "412", ["16"] = "213", ["17"] = "55", ["18"] = "23", ["211"] = "44 41", ["212"] = "44 41", ["213"] = "55 31", ["214"] = "55 31", ["215"] = "55 31", ["216"] = "55 31", ["217"] = "44 44", ["218"] = "44 44", --55 31 ["221"] = "23 41", ["222"] = "23 41", ["223"] = "23 41", ["224"] = "23 41", ["225"] = "23 41", ["226"] = "23 41", ["227"] = "23 44", ["228"] = "23 44", ["231"] = "52 33", ["232"] = "52 33", ["233"] = "52 33", ["234"] = "52 33", ["235"] = "53 41", ["236"] = "53 41", ["237"] = "52 33", ["238"] = "52 33", ["241"] = "22 44", ["242"] = "31 33", ["243"] = "31 33", ["244"] = "31 31", ["245"] = "31 31", ["246"] = "31 31", ["247"] = "31 31", ["248"] = "31 31", ["251"] = "52 33", ["252"] = "52 33", ["253"] = "22 44", ["254"] = "22 44", ["255"] = "22 44", ["256"] = "22 44", ["257"] = "23 44", ["258"] = "23 44", --22 44 ["261"] = "22 44", ["262"] = "22 44", ["263"] = "22 44", ["264"] = "22 44", ["265"] = "22 44", ["266"] = "22 44", ["267"] = "22 44", ["268"] = "22 44", ["271"] = "44 44", ["272"] = "44 44", ["273"] = "55 52", ["274"] = "55 52", ["275"] = "55 31", ["276"] = "55 31", ["277"] = "55 55", ["278"] = "55 55", --55 33 ["281"] = "22 31", ["282"] = "22 31", ["283"] = "22 23", ["284"] = "22 23", ["285"] = "22 31", ["286"] = "22 31", ["287"] = "22 33", ["288"] = "22 33", }, ['yx'] = { ["10"] = "", ["11"] = "55", ["12"] = "224", ["13"] = "52", ["14"] = "33", ["15"] = "412", ["16"] = "21", ["17"] = "55", ["18"] = "33", }, ['cz'] = { --for the underlying sequences that are listed with multiple chains, one is chosen for simplicity. The other sandhi chain can be accessed by having the chain tone be different from the underlying tone ["10"] = "", ["11"] = "55", ["12"] = "13", ["13"] = "45", ["15"] = "523", ["16"] = "24", ["17"] = "55", ["18"] = "23", ["3066"] = "45 55 0", ["211"] = "33 33", ["212"] = "33 33", ["213"] = "33 33", ["215"] = "55 0", ["216"] = "55 0", ["217"] = "55 55", ["218"] = "55 55", ["221"] = "11 33", ["222"] = "11 33", ["223"] = "11 33", ["225"] = "11 33", ["226"] = "11 33", ["227"] = "11 33", ["228"] = "11 33", ["231"] = "45 55", ["232"] = "45 55", ["233"] = "45 55", ["235"] = "45 55", ["236"] = "45 55", ["237"] = "45 55", ["238"] = "45 5", ["251"] = "55 23", ["252"] = "55 23", ["253"] = "55 23", ["255"] = "55 23", ["256"] = "55 23", ["257"] = "55 23", ["258"] = "55 23", ["261"] = "11 24", ["262"] = "11 24", ["263"] = "11 24", ["265"] = "23 11", ["266"] = "23 11", ["267"] = "11 24", ["268"] = "11 24", ["271"] = "55 55", ["272"] = "55 55", ["273"] = "55 55", ["275"] = "55 42", ["276"] = "55 42", ["277"] = "55 55", ["278"] = "55 55", --aspirated tone 7 is considered underlying tone 8 for simplicity ["281"] = "11 13", ["282"] = "11 13", ["283"] = "11 13", ["285"] = "22 42", ["286"] = "22 42", ["287"] = "22 55", ["288"] = "22 55", ["3111"] = "33 33 0", ["3112"] = "33 33 0", ["3113"] = "33 33 0", ["3115"] = "33 33 0", ["3116"] = "33 33 0", ["3117"] = "33 33 0", ["3118"] = "33 33 0", ["3121"] = "33 33 0", ["3122"] = "33 33 0", ["3123"] = "33 33 0", ["3125"] = "33 33 0", ["3126"] = "33 33 0", ["3127"] = "33 33 0", ["3128"] = "33 33 0", ["3131"] = "55 42 0", ["3132"] = "55 42 0", ["3133"] = "55 42 0", ["3135"] = "55 42 0", ["3136"] = "55 42 0", ["3137"] = "55 42 0", ["3138"] = "55 42 0", ["3151"] = "55 42 0", ["3152"] = "55 42 0", ["3153"] = "55 42 0", ["3155"] = "55 42 0", ["3156"] = "55 42 0", ["3157"] = "55 42 0", ["3158"] = "55 42 0", ["3161"] = "55 42 0", ["3162"] = "55 42 0", ["3163"] = "55 42 0", ["3165"] = "55 42 0", ["3166"] = "55 42 0", ["3167"] = "55 42 0", ["3168"] = "55 42 0", ["3171"] = "55 55 0", ["3172"] = "55 55 0", ["3173"] = "55 55 0", ["3175"] = "55 55 0", ["3176"] = "", ["3177"] = "55 55 55", ["3178"] = "55 55 55", ["3181"] = "55 55 0", ["3182"] = "55 55 0", ["3183"] = "55 55 0", ["3185"] = "55 55 0", ["3186"] = "55 55 0", ["3187"] = "55 55 55", ["3188"] = "55 55 55", ["3102"] = "33 33 0", ["3211"] = "11 33 0", ["3212"] = "11 33 0", ["3213"] = "11 33 0", ["3215"] = "11 33 0", ["3216"] = "11 33 0", ["3217"] = "11 33 55", ["3218"] = "11 33 55", ["3221"] = "11 33 0", ["3222"] = "11 33 0", ["3223"] = "11 33 0", ["3225"] = "11 33 0", ["3226"] = "11 33 0", ["3227"] = "11 33 55", ["3228"] = "11 33 55", ["3231"] = "11 33 0", ["3232"] = "11 33 0", ["3233"] = "11 33 0", ["3235"] = "11 33 0", ["3236"] = "11 33 0", ["3237"] = "11 33 55", ["3238"] = "11 33 55", ["3251"] = "11 33 0", ["3252"] = "11 33 0", ["3253"] = "11 33 0", ["3255"] = "11 33 0", ["3256"] = "11 33 0", ["3257"] = "11 33 55", ["3258"] = "11 33 55", ["3261"] = "11 33 0", ["3262"] = "11 33 0", ["3263"] = "11 33 0", ["3265"] = "11 33 0", ["3266"] = "11 33 0", ["3267"] = "11 33 55", ["3268"] = "11 33 55", ["3271"] = "11 33 0", ["3272"] = "11 33 0", ["3273"] = "11 33 0", ["3275"] = "11 33 0", ["3276"] = "11 33 0", ["3277"] = "11 33 55", ["3278"] = "11 33 55", ["3281"] = "11 33 0", ["3282"] = "11 33 0", ["3283"] = "11 33 0", ["3285"] = "11 33 0", ["3286"] = "11 33 0", ["3287"] = "11 33 55", ["3288"] = "11 33 55", ["3202"] = "11 33 0", ["3311"] = "45 55 0", ["3312"] = "45 55 0", ["3313"] = "45 55 0", ["3315"] = "45 55 0", ["3316"] = "45 55 0", ["3317"] = "45 55 55", ["3318"] = "45 55 55", ["3321"] = "45 55 0", ["3322"] = "45 55 0", ["3323"] = "45 55 0", ["3325"] = "45 55 0", ["3326"] = "45 55 0", ["3327"] = "45 55 55", ["3328"] = "45 55 55", ["3331"] = "45 55 0", ["3332"] = "45 55 0", ["3333"] = "45 55 0", ["3335"] = "45 55 0", ["3336"] = "45 55 0", ["3337"] = "", ["3338"] = "45 55 55", ["3351"] = "45 55 0", ["3352"] = "45 55 0", ["3353"] = "45 55 0", ["3355"] = "45 55 0", ["3356"] = "45 55 0", ["3357"] = "45 55 55", ["3358"] = "45 55 55", ["3361"] = "45 55 0", ["3362"] = "45 55 0", ["3363"] = "45 55 0", ["3365"] = "45 55 0", ["3366"] = "45 55 0", ["3367"] = "45 55 55", ["3368"] = "", ["3371"] = "45 55 0", ["3372"] = "45 55 0", ["3373"] = "45 55 0", ["3375"] = "45 55 0", ["3376"] = "45 55 0", ["3377"] = "45 55 55", ["3378"] = "45 55 55", ["3381"] = "45 55 0", ["3382"] = "45 55 0", ["3383"] = "45 55 0", ["3385"] = "45 55 0", ["3386"] = "45 55 0", ["3387"] = "45 55 0", ["3388"] = "45 55 55", ["3330"] = "45 55 0", ["3303"] = "45 55 0", ["3305"] = "45 55 0", ["3511"] = "52 22 33", ["3512"] = "52 22 33", ["3513"] = "52 22 33", ["3515"] = "52 22 33", ["3516"] = "52 22 33", ["3517"] = "52 22 33", ["3518"] = "52 22 33", ["3521"] = "52 22 33", ["3522"] = "52 22 33", ["3523"] = "52 22 33", ["3525"] = "52 22 33", ["3526"] = "52 22 33", ["3527"] = "52 22 33", ["3528"] = "52 22 33", ["3531"] = "52 22 33", ["3532"] = "52 22 33", ["3533"] = "52 22 33", ["3535"] = "52 22 33", ["3536"] = "52 22 33", ["3537"] = "52 22 33", ["3538"] = "52 22 33", ["3551"] = "52 22 33", ["3552"] = "52 22 33", ["3553"] = "52 22 33", ["3555"] = "52 22 33", ["3556"] = "52 22 33", ["3557"] = "52 22 33", ["3558"] = "45 55 55", ["3561"] = "", ["3562"] = "52 22 33", ["3563"] = "", ["3565"] = "45 55 0", ["3566"] = "52 22 33", ["3567"] = "", ["3568"] = "45 55 55", ["3571"] = "52 22 33", ["3572"] = "52 22 33", ["3573"] = "52 22 33", ["3575"] = "52 22 33", ["3576"] = "", ["3577"] = "52 22 33", ["3578"] = "52 22 33", ["3581"] = "52 22 33", ["3582"] = "52 22 33", ["3583"] = "52 22 33", ["3585"] = "", ["3586"] = "52 22 33", ["3587"] = "52 22 33", ["3588"] = "52 22 33", ["3500"] = "52 22 33", ["3507"] = "52 22 33", ["3611"] = "11 11 24", ["3612"] = "11 11 24", ["3613"] = "11 11 24", ["3615"] = "11 11 24", ["3616"] = "11 11 24", ["3617"] = "11 11 24", ["3618"] = "11 11 24", ["3621"] = "11 11 24", ["3622"] = "11 11 24", ["3623"] = "11 11 24", ["3625"] = "11 11 24", ["3626"] = "11 11 24", ["3627"] = "11 11 24", ["3628"] = "11 11 24", ["3631"] = "11 11 24", ["3632"] = "11 11 24", ["3633"] = "11 11 24", ["3635"] = "11 11 24", ["3636"] = "11 11 24", ["3637"] = "11 11 24", ["3638"] = "11 11 24", ["3651"] = "11 11 24", ["3652"] = "11 11 24", ["3653"] = "11 11 24", ["3655"] = "23 11 0", ["3656"] = "23 11 0", ["3657"] = "23 11 0", ["3658"] = "23 11 0", ["3661"] = "23 11 0", ["3662"] = "11 11 24", ["3663"] = "23 11 0", ["3665"] = "23 11 0", ["3666"] = "23 11 0", ["3667"] = "23 11 0", ["3668"] = "23 11 0", ["3671"] = "11 11 24", ["3672"] = "11 11 24", ["3673"] = "11 11 24", ["3675"] = "11 11 24", ["3676"] = "11 11 24", ["3677"] = "11 11 24", ["3678"] = "11 11 24", ["3681"] = "11 11 24", ["3682"] = "11 11 24", ["3683"] = "11 11 24", ["3685"] = "11 11 24", ["3686"] = "11 11 24", ["3687"] = "11 11 24", ["3688"] = "11 11 24", ["3600"] = "11 11 24", ["3711"] = "55 55 0", ["3712"] = "55 55 0", ["3713"] = "55 55 0", ["3715"] = "55 55 0", ["3716"] = "55 55 0", ["3717"] = "11 11 13", ["3718"] = "11 11 13", ["3721"] = "11 11 13", ["3722"] = "11 11 13", ["3723"] = "11 11 13", ["3725"] = "55 42 0", ["3726"] = "55 55 0", ["3727"] = "55 55 55", ["3728"] = "55 55 55", ["3731"] = "55 55 0", ["3732"] = "55 55 0", ["3733"] = "11 11 13", ["3735"] = "55 55 0", ["3736"] = "55 55 0", ["3737"] = "55 55 55", ["3738"] = "55 55 55", ["3751"] = "55 42 0", ["3752"] = "55 42 0", ["3753"] = "55 42 0", ["3755"] = "55 42 0", ["3756"] = "", ["3757"] = "55 42 0", ["3758"] = "", ["3761"] = "55 42 0", ["3762"] = "55 42 0", ["3763"] = "55 42 0", ["3765"] = "55 42 0", ["3766"] = "55 42 0", ["3767"] = "55 42 0", ["3768"] = "55 42 0", ["3771"] = "55 55 0", ["3772"] = "55 55 0", ["3773"] = "55 55 0", ["3775"] = "55 55 0", ["3776"] = "55 55 0", ["3777"] = "55 55 55", ["3778"] = "55 55 55", ["3781"] = "", ["3782"] = "55 55 0", ["3783"] = "55 55 0", ["3785"] = "55 55 0", ["3786"] = "55 55 0", ["3787"] = "55 55 55", ["3788"] = "55 55 55", ["3770"] = "55 55 0", ["3780"] = "55 55 0", ["3707"] = "55 55 55", ["3811"] = "11 11 13", ["3812"] = "11 11 13", ["3813"] = "11 11 13", ["3815"] = "11 11 13", ["3816"] = "11 11 13", ["3817"] = "11 11 13", ["3818"] = "", ["3821"] = "11 11 13", ["3822"] = "11 11 13", ["3823"] = "11 11 13", ["3825"] = "11 11 13", ["3826"] = "11 11 13", ["3827"] = "11 11 13", ["3828"] = "11 11 13", ["3831"] = "11 11 13", ["3832"] = "11 11 13", ["3833"] = "11 11 13", ["3835"] = "11 11 13", ["3836"] = "11 11 13", ["3837"] = "11 11 13", ["3838"] = "11 11 13", ["3851"] = "22 42 0", ["3852"] = "22 42 0", ["3853"] = "22 42 0", ["3855"] = "22 42 0", ["3856"] = "22 42 0", ["3857"] = "22 42 0", ["3858"] = "", ["3861"] = "22 42 0", ["3862"] = "22 42 0", ["3863"] = "", ["3865"] = "22 42 0", ["3866"] = "22 42 0", ["3867"] = "22 42 0", ["3868"] = "22 42 0", ["3871"] = "11 11 13", ["3872"] = "11 11 13", ["3873"] = "11 11 13", ["3875"] = "22 55 0", ["3876"] = "22 55 0", ["3877"] = "22 55 55", ["3878"] = "22 55 55", ["3881"] = "11 11 13", ["3882"] = "11 11 13", ["3883"] = "11 11 13", ["3885"] = "22 55 0", ["3886"] = "22 55 0", ["3887"] = "22 55 55", ["3888"] = "22 55 55", ["3850"] = "22 42 0", ["3802"] = "22 42 0", --RPS ["1s"] = "", ["2s"] = "", ["3s"] = "", ["5s"] = "", ["6s"] = "", ["7s"] = "", ["8s"] = "", ["multiple"] = "33" }, ['jj'] = { ["10"] = "", ["11"] = "44", ["12"] = "213", ["13"] = "35", ["15"] = "52", ["16"] = "31", ["17"] = "55", ["18"] = "23", ["211"] = "44 31", ["212"] = "44 31", ["213"] = "44 31", ["215"] = "44 31", ["216"] = "44 31", ["217"] = "44 31", ["218"] = "44 31", ["221"] = "23 21", ["222"] = "23 21", ["223"] = "23 21", ["225"] = "23 21", ["226"] = "23 21", ["227"] = "23 22", ["228"] = "23 22", ["231"] = "35 33", ["232"] = "35 33", ["233"] = "35 33", ["235"] = "35 33", ["236"] = "35 33", ["237"] = "35 33", ["238"] = "35 33", ["251"] = "52 21", ["252"] = "52 21", ["253"] = "52 21", ["255"] = "52 21", ["256"] = "52 21", ["257"] = "31 22", ["258"] = "31 22", ["261"] = "31 21", ["262"] = "31 21", ["263"] = "31 21", ["265"] = "31 21", ["266"] = "31 21", ["267"] = "31 22", ["268"] = "31 22", ["271"] = "55 31", ["272"] = "55 31", ["273"] = "55 31", ["275"] = "55 31", ["276"] = "55 31", ["277"] = "55 33", ["278"] = "55 33", ["281"] = "23 31", ["282"] = "23 31", ["283"] = "23 31", ["285"] = "23 31", ["286"] = "23 31", ["287"] = "23 33", ["288"] = "23 22", }, ['jx'] = { ["10"] = "", ["11"] = "53", ["12"] = "31", ["13A"] = "433", ["13B"] = "435", ["14"] = "213", ["15"] = "334", ["16"] = "113", ["17"] = "55", ["18"] = "22", ["211"] = "44 53", ["212"] = "44 31", ["213"] = "44 21", ["214"] = "44 21", ["215"] = "44 21", ["216"] = "44 21", ["217"] = "44 55", ["218"] = "44 55", ["221"] = "22 44", ["222"] = "22 22", ["223"] = "13 53", ["224"] = "13 31", ["225"] = "13 53", ["226"] = "13 31", ["227"] = "31 55", ["228"] = "31 55", ["23A1"] = "44 53", ["23A2"] = "44 31", ["23A3"] = "44 21", ["23A4"] = "44 21", ["23A5"] = "44 21", ["23A6"] = "44 21", ["23A7"] = "44 55", ["23A8"] = "44 55", ["23B1"] = "13 53", ["23B2"] = "13 31", ["23B3"] = "22 13", ["23B4"] = "22 13", ["23B5"] = "22 13", ["23B6"] = "22 13", ["23B7"] = "13 55", ["23B8"] = "13 55", ["241"] = "22 13", ["242"] = "22 31", ["243"] = "22 13", ["244"] = "22 13", ["245"] = "22 13", ["246"] = "22 13", ["247"] = "22 55", ["248"] = "22 55", ["251"] = "44 53", ["252"] = "44 31", ["253"] = "44 21", ["254"] = "44 21", ["255"] = "44 21", ["256"] = "44 21", ["257"] = "44 55", ["258"] = "44 55", ["261"] = "22 53", ["262"] = "22 13", ["263"] = "13 21", ["264"] = "13 21", ["265"] = "13 21", ["266"] = "13 21", ["267"] = "22 55", ["268"] = "22 55", ["271"] = "55 44", ["272"] = "55 44", ["273"] = "55 21", ["274"] = "55 21", ["275"] = "55 21", ["276"] = "55 21", ["277"] = "55 55", ["278"] = "55 55", ["281"] = "22 44", ["282"] = "22 13", ["283"] = "22 13", ["284"] = "22 13", ["285"] = "22 13", ["286"] = "22 13", ["287"] = "22 55", ["288"] = "22 55", ["3111"] = "44 44 31", ["3112"] = "44 44 31", ["3113"] = "44 44 31", ["3114"] = "44 44 31", ["3115"] = "44 44 31", ["3116"] = "44 44 31", ["3117"] = "44 44 31", ["3118"] = "44 44 31", ["3121"] = "44 44 31", ["3122"] = "44 44 31", ["3123"] = "44 44 31", ["3124"] = "44 44 31", ["3125"] = "44 44 31", ["3126"] = "44 44 31", ["3127"] = "44 44 31", ["3128"] = "44 44 31", ["3131"] = "55 33 21", ["3132"] = "55 33 21", ["3133"] = "55 33 21", ["3134"] = "55 33 21", ["3135"] = "55 33 21", ["3136"] = "55 33 21", ["3137"] = "55 33 21", ["3138"] = "55 33 21", ["3141"] = "55 33 21", ["3142"] = "55 33 21", ["3143"] = "55 33 21", ["3144"] = "55 33 21", ["3145"] = "55 33 21", ["3146"] = "55 33 21", ["3147"] = "55 33 21", ["3148"] = "55 33 21", ["3151"] = "55 33 21", ["3152"] = "55 33 21", ["3153"] = "55 33 21", ["3154"] = "55 33 21", ["3155"] = "55 33 21", ["3156"] = "55 33 21", ["3157"] = "55 33 21", ["3158"] = "55 33 21", ["3161"] = "55 33 21", ["3162"] = "55 33 21", ["3163"] = "55 33 21", ["3164"] = "55 33 21", ["3165"] = "55 33 21", ["3166"] = "55 33 21", ["3167"] = "55 33 21", ["3168"] = "55 33 21", ["3171"] = "44 44 31", ["3172"] = "44 44 31", ["3173"] = "44 44 31", ["3174"] = "44 44 31", ["3175"] = "44 44 31", ["3176"] = "44 44 31", ["3177"] = "44 44 31", ["3178"] = "44 44 31", ["3181"] = "44 44 31", ["3182"] = "44 44 31", ["3183"] = "44 44 31", ["3184"] = "44 44 31", ["3185"] = "44 44 31", ["3186"] = "44 44 31", ["3187"] = "44 44 31", ["3188"] = "44 44 31", ["3211"] = "22 44 51", ["3212"] = "22 44 51", ["3213"] = "22 44 51", ["3214"] = "22 44 51", ["3215"] = "22 44 51", ["3216"] = "22 44 51", ["3217"] = "22 44 55", ["3218"] = "22 44 55", ["3221"] = "22 44 51", ["3222"] = "22 44 51", ["3223"] = "22 44 51", ["3224"] = "22 44 51", ["3225"] = "22 44 51", ["3226"] = "22 44 51", ["3227"] = "22 44 55", ["3228"] = "22 44 55", ["3231"] = "24 44 31", ["3232"] = "24 44 31", ["3233"] = "24 44 31", ["3234"] = "24 44 31", ["3235"] = "24 44 31", ["3236"] = "24 44 31", ["3237"] = "24 44 31", ["3238"] = "24 44 31", ["3241"] = "24 44 31", ["3242"] = "24 44 31", ["3243"] = "24 44 31", ["3244"] = "24 44 31", ["3245"] = "24 44 31", ["3246"] = "24 44 31", ["3247"] = "24 44 31", ["3248"] = "24 44 31", ["3251"] = "24 44 31", ["3252"] = "24 44 31", ["3253"] = "24 44 31", ["3254"] = "24 44 31", ["3255"] = "24 44 31", ["3256"] = "24 44 31", ["3257"] = "24 44 31", ["3258"] = "24 44 31", ["3261"] = "24 44 31", ["3262"] = "24 44 31", ["3263"] = "24 44 31", ["3264"] = "24 44 31", ["3265"] = "24 44 31", ["3266"] = "24 44 31", ["3267"] = "24 44 31", ["3268"] = "24 44 31", ["3271"] = "22 44 51", ["3272"] = "22 44 51", ["3273"] = "22 55 31", ["3274"] = "22 55 31", ["3275"] = "22 55 31", ["3276"] = "22 55 31", ["3277"] = "22 44 55", ["3278"] = "22 44 55", ["3281"] = "22 44 51", ["3282"] = "22 44 51", ["3283"] = "22 55 31", ["3284"] = "22 55 31", ["3285"] = "22 55 31", ["3286"] = "22 55 31", ["3287"] = "22 44 55", ["3288"] = "22 44 55", ["33A11"] = "44 33 51", ["33A12"] = "44 33 51", ["33A13"] = "44 44 31", ["33A14"] = "44 44 31", ["33A15"] = "44 44 31", ["33A16"] = "44 44 31", ["33A17"] = "44 33 55", ["33A18"] = "44 33 55", ["33A21"] = "44 33 51", ["33A22"] = "44 33 51", ["33A23"] = "44 44 31", ["33A24"] = "44 44 31", ["33A25"] = "44 44 31", ["33A26"] = "44 44 31", ["33A27"] = "44 33 55", ["33A28"] = "44 33 55", ["33A31"] = "44 33 51", ["33A32"] = "44 33 51", ["33A33"] = "44 44 31", ["33A34"] = "44 44 31", ["33A35"] = "44 44 31", ["33A36"] = "44 33 51", ["33A37"] = "44 33 55", ["33A38"] = "44 33 55", ["33A41"] = "44 33 51", ["33A42"] = "44 33 51", ["33A43"] = "44 44 31", ["33A44"] = "44 44 31", ["33A45"] = "44 44 31", ["33A46"] = "44 33 51", ["33A47"] = "44 33 55", ["33A48"] = "44 33 55", ["33A51"] = "44 33 51", ["33A52"] = "44 33 51", ["33A53"] = "44 44 31", ["33A54"] = "44 44 31", ["33A55"] = "44 33 51", ["33A56"] = "44 33 51", ["33A57"] = "44 33 55", ["33A58"] = "44 33 55", ["33A61"] = "44 33 51", ["33A62"] = "44 33 51", ["33A63"] = "44 33 51", ["33A64"] = "44 33 51", ["33A65"] = "44 44 31", ["33A66"] = "44 44 31", ["33A67"] = "44 33 55", ["33A68"] = "44 33 55", ["33A71"] = "44 33 51", ["33A72"] = "44 33 51", ["33A73"] = "44 44 31", ["33A74"] = "44 44 31", ["33A75"] = "44 44 31", ["33A76"] = "44 44 31", ["33A77"] = "44 33 55", ["33A78"] = "44 33 55", ["33A81"] = "44 33 51", ["33A82"] = "44 33 51", ["33A83"] = "44 44 31", ["33A84"] = "44 44 31", ["33A85"] = "44 44 31", ["33A86"] = "44 44 31", ["33A87"] = "44 33 55", ["33A88"] = "44 33 55", ["33B11"] = "22 22 51", ["33B12"] = "22 22 51", ["33B13"] = "22 44 31", ["33B14"] = "22 44 31", ["33B15"] = "22 44 31", ["33B16"] = "22 44 31", ["33B17"] = "44 33 55", ["33B18"] = "44 33 55", ["33B21"] = "22 22 51", ["33B22"] = "22 22 51", ["33B23"] = "22 44 31", ["33B24"] = "22 44 31", ["33B25"] = "22 44 31", ["33B26"] = "22 44 31", ["33B27"] = "44 33 55", ["33B28"] = "44 33 55", ["33B31"] = "22 22 51", ["33B32"] = "22 22 51", ["33B33"] = "22 22 51", ["33B34"] = "22 22 51", ["33B35"] = "22 22 51", ["33B36"] = "22 22 51", ["33B37"] = "22 22 55", ["33B38"] = "22 22 55", ["33B41"] = "22 22 51", ["33B42"] = "22 22 51", ["33B43"] = "22 22 51", ["33B44"] = "22 22 51", ["33B45"] = "22 22 51", ["33B46"] = "22 22 51", ["33B47"] = "22 22 55", ["33B48"] = "22 22 55", ["33B51"] = "22 22 51", ["33B52"] = "22 22 51", ["33B53"] = "22 44 31", ["33B54"] = "22 44 31", ["33B55"] = "22 44 31", ["33B56"] = "22 44 31", ["33B57"] = "22 22 55", ["33B58"] = "22 22 55", ["33B61"] = "22 22 51", ["33B62"] = "22 22 51", ["33B63"] = "22 44 31", ["33B64"] = "22 44 31", ["33B65"] = "22 44 31", ["33B66"] = "22 44 31", ["33B67"] = "22 22 55", ["33B68"] = "22 22 55", ["33B71"] = "22 22 51", ["33B72"] = "22 22 51", ["33B73"] = "22 44 31", ["33B74"] = "22 44 31", ["33B75"] = "22 44 31", ["33B76"] = "22 44 31", ["33B77"] = "22 22 55", ["33B78"] = "22 22 55", ["33B81"] = "22 22 51", ["33B82"] = "22 22 51", ["33B83"] = "22 44 31", ["33B84"] = "22 44 31", ["33B85"] = "22 44 31", ["33B86"] = "22 44 31", ["33B87"] = "22 22 55", ["33B88"] = "22 22 55", ["3411"] = "22 22 55", ["3412"] = "22 22 55", ["3413"] = "22 55 31", ["3414"] = "22 55 31", ["3415"] = "22 55 31", ["3416"] = "22 55 31", ["3417"] = "22 22 55", ["3418"] = "22 22 55", ["3421"] = "22 22 55", ["3422"] = "22 22 55", ["3423"] = "22 55 31", ["3424"] = "22 55 31", ["3425"] = "22 55 31", ["3426"] = "22 55 31", ["3427"] = "22 22 55", ["3428"] = "22 22 55", ["3431"] = "22 22 55", ["3432"] = "22 22 55", ["3433"] = "22 22 55", ["3434"] = "22 22 55", ["3435"] = "22 22 55", ["3436"] = "22 22 55", ["3437"] = "22 22 55", ["3438"] = "22 22 55", ["3441"] = "22 55 51", ["3442"] = "22 55 51", ["3443"] = "22 22 55", ["3444"] = "22 22 55", ["3445"] = "22 22 55", ["3446"] = "22 22 55", ["3447"] = "22 22 55", ["3448"] = "22 22 55", ["3451"] = "22 55 51", ["3452"] = "22 55 51", ["3453"] = "22 22 55", ["3454"] = "22 22 55", ["3455"] = "22 22 55", ["3456"] = "22 22 55", ["3457"] = "22 22 55", ["3458"] = "22 22 55", ["3461"] = "22 55 51", ["3462"] = "22 55 51", ["3463"] = "22 22 55", ["3464"] = "22 22 55", ["3465"] = "22 22 55", ["3466"] = "22 22 55", ["3467"] = "22 22 55", ["3468"] = "22 22 55", ["3471"] = "22 22 55", ["3472"] = "22 22 55", ["3473"] = "22 55 31", ["3474"] = "22 55 31", ["3475"] = "22 55 31", ["3476"] = "22 55 31", ["3477"] = "22 22 55", ["3478"] = "22 22 55", ["3481"] = "22 22 55", ["3482"] = "22 22 55", ["3483"] = "22 55 31", ["3484"] = "22 55 31", ["3485"] = "22 55 31", ["3486"] = "22 55 31", ["3487"] = "22 22 55", ["3488"] = "22 22 55", ["3401"] = "44 44 31", ["3402"] = "44 44 31", ["3403"] = "44 44 31", ["3404"] = "44 44 31", ["3405"] = "44 44 31", ["3406"] = "44 44 31", ["3407"] = "44 44 31", ["3408"] = "44 44 31", ["3511"] = "33 44 51", ["3512"] = "33 44 51", ["3513"] = "33 55 31", ["3514"] = "33 55 31", ["3515"] = "33 55 31", ["3516"] = "33 55 31", ["3517"] = "33 44 55", ["3518"] = "33 44 55", ["3521"] = "33 44 51", ["3522"] = "33 44 51", ["3523"] = "33 55 31", ["3524"] = "33 55 31", ["3525"] = "33 55 31", ["3526"] = "33 55 31", ["3527"] = "33 44 55", ["3528"] = "33 44 55", ["3531"] = "35 33 31", ["3532"] = "35 33 31", ["3533"] = "35 33 31", ["3534"] = "35 33 31", ["3535"] = "35 33 31", ["3536"] = "35 33 31", ["3537"] = "35 33 31", ["3538"] = "35 33 31", ["3541"] = "35 33 31", ["3542"] = "35 33 31", ["3543"] = "33 44 51", ["3544"] = "33 44 51", ["3545"] = "33 44 51", ["3546"] = "33 44 51", ["3547"] = "35 33 31", ["3548"] = "35 33 31", ["3551"] = "35 33 31", ["3552"] = "35 33 31", ["3553"] = "35 33 31", ["3554"] = "35 33 31", ["3555"] = "35 33 31", ["3556"] = "35 33 31", ["3557"] = "35 33 31", ["3558"] = "35 33 31", ["3561"] = "35 33 31", ["3562"] = "35 33 31", ["3563"] = "35 33 31", ["3564"] = "35 33 31", ["3565"] = "35 33 31", ["3566"] = "35 33 31", ["3567"] = "33 55 31", ["3568"] = "33 55 31", ["3571"] = "33 44 51", ["3572"] = "33 44 51", ["3573"] = "33 55 31", ["3574"] = "33 55 31", ["3575"] = "33 55 31", ["3576"] = "33 55 31", ["3577"] = "33 44 55", ["3578"] = "33 44 55", ["3581"] = "33 44 51", ["3582"] = "33 44 51", ["3583"] = "33 55 31", ["3584"] = "33 55 31", ["3585"] = "33 55 31", ["3586"] = "33 55 31", ["3587"] = "33 44 55", ["3588"] = "33 44 55", ["3611"] = "22 44 51", ["3612"] = "22 44 51", ["3613"] = "22 55 31", ["3614"] = "22 55 31", ["3615"] = "22 55 31", ["3616"] = "22 55 31", ["3617"] = "22 44 55", ["3618"] = "22 44 55", ["3621"] = "22 44 51", ["3622"] = "22 33 44", ["3623"] = "22 55 31", ["3624"] = "22 55 31", ["3625"] = "22 55 31", ["3626"] = "22 55 31", ["3627"] = "22 44 55", ["3628"] = "22 44 55", ["3631"] = "22 44 51", ["3632"] = "24 33 31", ["3633"] = "24 33 31", ["3634"] = "24 33 31", ["3635"] = "22 22 24", ["3636"] = "24 33 31", ["3637"] = "24 33 31", ["3638"] = "24 33 31", ["3641"] = "22 55 31", ["3642"] = "22 55 31", ["3643"] = "24 33 31", ["3644"] = "24 33 31", ["3645"] = "24 33 31", ["3646"] = "24 33 31", ["3647"] = "24 33 31", ["3648"] = "24 33 31", ["3651"] = "22 22 44", ["3652"] = "24 33 31", ["3653"] = "24 33 31", ["3654"] = "24 33 31", ["3655"] = "24 33 31", ["3656"] = "24 33 31", ["3657"] = "24 33 31", ["3658"] = "24 33 31", ["3661"] = "22 55 31", ["3662"] = "22 55 31", ["3663"] = "24 33 31", ["3664"] = "24 33 31", ["3665"] = "24 33 31", ["3666"] = "24 33 31", ["3667"] = "22 55 31", ["3668"] = "22 55 31", ["3671"] = "22 44 51", ["3672"] = "22 44 51", ["3673"] = "22 55 31", ["3674"] = "22 55 31", ["3675"] = "22 55 31", ["3676"] = "22 55 31", ["3677"] = "22 44 55", ["3678"] = "22 44 55", ["3681"] = "22 44 51", ["3682"] = "22 44 51", ["3683"] = "22 55 31", ["3684"] = "22 55 31", ["3685"] = "22 55 31", ["3686"] = "22 55 31", ["3687"] = "22 44 55", ["3688"] = "22 44 55", ["3601"] = "33 44 51", ["3602"] = "33 44 51", ["3603"] = "33 55 31", ["3604"] = "33 55 31", ["3605"] = "35 33 31", ["3606"] = "35 33 31", ["3607"] = "33 44 55", ["3608"] = "33 44 55", ["3711"] = "33 44 51", ["3712"] = "33 44 51", ["3713"] = "33 44 51", ["3714"] = "33 44 51", ["3715"] = "33 44 51", ["3716"] = "33 44 51", ["3717"] = "33 44 55", ["3718"] = "33 44 55", ["3721"] = "33 44 51", ["3722"] = "33 44 51", ["3723"] = "33 44 51", ["3724"] = "33 44 51", ["3725"] = "33 44 51", ["3726"] = "33 44 51", ["3727"] = "33 44 55", ["3728"] = "33 44 55", ["3731"] = "53 33 31", ["3732"] = "53 33 31", ["3733"] = "53 33 31", ["3734"] = "53 33 31", ["3735"] = "53 33 31", ["3736"] = "53 33 31", ["3737"] = "53 33 31", ["3738"] = "53 33 31", ["3741"] = "53 33 31", ["3742"] = "53 33 31", ["3743"] = "53 33 31", ["3744"] = "53 33 31", ["3745"] = "53 33 31", ["3746"] = "53 33 31", ["3747"] = "53 33 31", ["3748"] = "53 33 31", ["3751"] = "53 33 31", ["3752"] = "53 33 31", ["3753"] = "53 33 31", ["3754"] = "53 33 31", ["3755"] = "53 33 31", ["3756"] = "53 33 31", ["3757"] = "53 33 31", ["3758"] = "53 33 31", ["3761"] = "53 33 31", ["3762"] = "53 33 31", ["3763"] = "53 33 31", ["3764"] = "53 33 31", ["3765"] = "53 33 31", ["3766"] = "53 33 31", ["3767"] = "53 33 31", ["3768"] = "53 33 31", ["3771"] = "33 44 51", ["3772"] = "33 44 51", ["3773"] = "33 44 51", ["3774"] = "33 44 51", ["3775"] = "33 44 51", ["3776"] = "33 44 51", ["3777"] = "33 44 55", ["3778"] = "33 44 55", ["3781"] = "33 44 51", ["3782"] = "33 44 51", ["3783"] = "33 44 51", ["3784"] = "33 44 51", ["3785"] = "33 44 51", ["3786"] = "33 44 51", ["3787"] = "33 44 55", ["3788"] = "33 44 55", ["3811"] = "22 44 51", ["3812"] = "22 44 51", ["3813"] = "22 44 51", ["3814"] = "22 44 51", ["3815"] = "22 44 51", ["3816"] = "22 44 51", ["3817"] = "22 44 55", ["3818"] = "22 44 55", ["3821"] = "22 44 51", ["3822"] = "22 44 51", ["3823"] = "22 44 51", ["3824"] = "22 44 51", ["3825"] = "22 44 51", ["3826"] = "22 44 51", ["3827"] = "22 44 55", ["3828"] = "22 44 55", ["3831"] = "11 22 44", ["3832"] = "11 22 44", ["3833"] = "11 22 44", ["3834"] = "11 22 44", ["3835"] = "11 22 44", ["3836"] = "11 22 44", ["3837"] = "11 22 44", ["3838"] = "11 22 44", ["3841"] = "11 22 44", ["3842"] = "11 22 44", ["3843"] = "11 22 44", ["3844"] = "11 22 44", ["3845"] = "11 22 44", ["3846"] = "11 22 44", ["3847"] = "11 22 44", ["3848"] = "11 22 44", ["3851"] = "11 22 44", ["3852"] = "11 22 44", ["3853"] = "11 22 44", ["3854"] = "11 22 44", ["3855"] = "11 22 44", ["3856"] = "11 22 44", ["3857"] = "11 22 44", ["3858"] = "11 22 44", ["3861"] = "11 22 44", ["3862"] = "11 22 44", ["3863"] = "11 22 44", ["3864"] = "11 22 44", ["3865"] = "11 22 44", ["3866"] = "11 22 44", ["3867"] = "11 22 44", ["3868"] = "11 22 44", ["3871"] = "22 44 51", ["3872"] = "22 44 51", ["3873"] = "22 44 51", ["3874"] = "22 44 51", ["3875"] = "22 44 51", ["3876"] = "22 44 51", ["3877"] = "22 44 55", ["3878"] = "22 44 55", ["3881"] = "22 44 51", ["3882"] = "22 44 51", ["3883"] = "22 44 51", ["3884"] = "22 44 51", ["3885"] = "22 44 51", ["3886"] = "22 44 51", ["3887"] = "22 44 55", ["3888"] = "22 44 55", }, ['tx'] = { ["10"] = "", ["11"] = "44", ["12"] = "22", ["13"] = "53", ["14"] = "42", ["15"] = "334", ["16"] = "113", ["17"] = "55", ["18"] = "22", ["211"] = "44 44", ["212"] = "44 22", ["213"] = "44 44", ["214"] = "44 22", ["215"] = "44 44", ["216"] = "44 22", ["217"] = "44 55", ["218"] = "44 22", ["221"] = "22 44", ["222"] = "22 22", ["223"] = "22 44", ["224"] = "22 22", ["225"] = "22 44", ["226"] = "22 22", ["227"] = "22 55", ["228"] = "22 22", ["231"] = "53 53", ["232"] = "53 42", ["233"] = "53 53", ["234"] = "53 42", ["235"] = "53 53", ["236"] = "53 42", ["237"] = "53 55", ["238"] = "53 22", ["241"] = "42 53", ["242"] = "42 42", ["243"] = "42 53", ["244"] = "42 42", ["245"] = "42 53", ["246"] = "42 42", ["247"] = "42 55", ["248"] = "42 22", ["251"] = "334 334", ["252"] = "334 113", ["253"] = "334 53", ["254"] = "334 42", ["255"] = "334 334", ["256"] = "334 113", ["257"] = "334 55", ["258"] = "334 22", ["261"] = "113 334", ["262"] = "113 113", ["263"] = "113 53", ["264"] = "113 42", ["265"] = "113 334", ["266"] = "113 113", ["267"] = "113 55", ["268"] = "113 22", ["271"] = "55 44", ["272"] = "55 22", ["273"] = "55 53", ["274"] = "55 42", ["275"] = "55 334", ["276"] = "55 113", ["277"] = "55 55", ["278"] = "55 22", ["281"] = "22 44", ["282"] = "22 22", ["283"] = "22 53", ["284"] = "22 42", ["285"] = "22 334", ["286"] = "22 113", ["287"] = "22 55", ["288"] = "22 22", ["3111"] = "44 44 44", ["3112"] = "44 44 22", ["3113"] = "44 44 44", ["3114"] = "44 44 22", ["3115"] = "44 44 44", ["3116"] = "44 44 22", ["3117"] = "44 44 55", ["3118"] = "44 44 22", ["3121"] = "44 22 44", ["3122"] = "44 22 22", ["3123"] = "44 22 44", ["3124"] = "44 22 22", ["3125"] = "44 22 44", ["3126"] = "44 22 22", ["3127"] = "44 22 55", ["3128"] = "44 22 22", ["3131"] = "44 44 44", ["3132"] = "44 44 22", ["3133"] = "44 44 44", ["3134"] = "44 44 22", ["3135"] = "44 44 44", ["3136"] = "44 44 22", ["3137"] = "44 44 55", ["3138"] = "44 44 22", ["3141"] = "44 22 44", ["3142"] = "44 22 22", ["3143"] = "44 22 44", ["3144"] = "44 22 22", ["3145"] = "44 22 44", ["3146"] = "44 22 22", ["3147"] = "44 22 55", ["3148"] = "44 22 22", ["3151"] = "44 44 44", ["3152"] = "44 44 22", ["3153"] = "44 44 44", ["3154"] = "44 44 22", ["3155"] = "44 44 44", ["3156"] = "44 44 22", ["3157"] = "44 44 55", ["3158"] = "44 44 22", ["3161"] = "44 22 44", ["3162"] = "44 22 22", ["3163"] = "44 22 44", ["3164"] = "44 22 22", ["3165"] = "44 22 44", ["3166"] = "44 22 22", ["3167"] = "44 22 55", ["3168"] = "44 22 22", ["3171"] = "44 55 44", ["3172"] = "44 55 22", ["3173"] = "44 55 44", ["3174"] = "44 55 22", ["3175"] = "44 55 44", ["3176"] = "44 55 22", ["3177"] = "44 55 55", ["3178"] = "44 55 22", ["3181"] = "44 22 44", ["3182"] = "44 22 22", ["3183"] = "44 22 44", ["3184"] = "44 22 22", ["3185"] = "44 22 44", ["3186"] = "44 22 22", ["3187"] = "44 22 55", ["3188"] = "44 22 22", ["3211"] = "22 44 44", ["3212"] = "22 44 22", ["3213"] = "22 44 44", ["3214"] = "22 44 22", ["3215"] = "22 44 44", ["3216"] = "22 44 22", ["3217"] = "22 44 55", ["3218"] = "22 44 22", ["3221"] = "22 22 44", ["3222"] = "22 22 22", ["3223"] = "22 22 44", ["3224"] = "22 22 22", ["3225"] = "22 22 44", ["3226"] = "22 22 22", ["3227"] = "22 22 55", ["3228"] = "22 22 22", ["3231"] = "22 44 44", ["3232"] = "22 44 22", ["3233"] = "22 44 44", ["3234"] = "22 44 22", ["3235"] = "22 44 44", ["3236"] = "22 44 22", ["3237"] = "22 44 55", ["3238"] = "22 44 22", ["3241"] = "22 22 44", ["3242"] = "22 22 22", ["3243"] = "22 22 44", ["3244"] = "22 22 22", ["3245"] = "22 22 44", ["3246"] = "22 22 22", ["3247"] = "22 22 55", ["3248"] = "22 22 22", ["3251"] = "22 44 44", ["3252"] = "22 44 22", ["3253"] = "22 44 44", ["3254"] = "22 44 22", ["3255"] = "22 44 44", ["3256"] = "22 44 22", ["3257"] = "22 44 55", ["3258"] = "22 44 22", ["3261"] = "22 22 44", ["3262"] = "22 22 22", ["3263"] = "22 22 44", ["3264"] = "22 22 22", ["3265"] = "22 22 44", ["3266"] = "22 22 22", ["3267"] = "22 22 55", ["3268"] = "22 22 22", ["3271"] = "22 55 44", ["3272"] = "22 55 22", ["3273"] = "22 55 44", ["3274"] = "22 55 22", ["3275"] = "22 55 44", ["3276"] = "22 55 22", ["3277"] = "22 55 55", ["3278"] = "22 55 22", ["3281"] = "22 22 44", ["3282"] = "22 22 22", ["3283"] = "22 22 44", ["3284"] = "22 22 22", ["3285"] = "22 22 44", ["3286"] = "22 22 22", ["3287"] = "22 22 55", ["3288"] = "22 22 22", ["3311"] = "53 53 53", ["3312"] = "53 53 42", ["3313"] = "53 53 53", ["3314"] = "53 53 42", ["3315"] = "53 53 53", ["3316"] = "53 53 42", ["3317"] = "53 53 55", ["3318"] = "53 53 22", ["3321"] = "53 42 53", ["3322"] = "53 42 42", ["3323"] = "53 42 53", ["3324"] = "53 42 42", ["3325"] = "53 42 53", ["3326"] = "53 42 42", ["3327"] = "53 42 55", ["3328"] = "53 42 22", ["3331"] = "53 53 53", ["3332"] = "53 53 42", ["3333"] = "53 53 53", ["3334"] = "53 53 42", ["3335"] = "53 53 53", ["3336"] = "53 53 42", ["3337"] = "53 53 55", ["3338"] = "53 53 22", ["3341"] = "53 42 53", ["3342"] = "53 42 42", ["3343"] = "53 42 53", ["3344"] = "53 42 42", ["3345"] = "53 42 53", ["3346"] = "53 42 42", ["3347"] = "53 42 55", ["3348"] = "53 42 22", ["3351"] = "53 53 53", ["3352"] = "53 53 42", ["3353"] = "53 53 53", ["3354"] = "53 53 42", ["3355"] = "53 53 53", ["3356"] = "53 53 42", ["3357"] = "53 53 55", ["3358"] = "53 53 22", ["3361"] = "53 42 53", ["3362"] = "53 42 42", ["3363"] = "53 42 53", ["3364"] = "53 42 42", ["3365"] = "53 42 53", ["3366"] = "53 42 42", ["3367"] = "53 42 55", ["3368"] = "53 42 22", ["3371"] = "53 55 53", ["3372"] = "53 55 42", ["3373"] = "53 55 53", ["3374"] = "53 55 42", ["3375"] = "53 55 53", ["3376"] = "53 55 42", ["3377"] = "53 55 55", ["3378"] = "53 55 22", ["3381"] = "53 22 53", ["3382"] = "53 22 42", ["3383"] = "53 22 53", ["3384"] = "53 22 42", ["3385"] = "53 22 53", ["3386"] = "53 22 42", ["3387"] = "53 22 55", ["3388"] = "53 22 22", ["3411"] = "42 53 53", ["3412"] = "42 53 42", ["3413"] = "42 53 53", ["3414"] = "42 53 42", ["3415"] = "42 53 53", ["3416"] = "42 53 42", ["3417"] = "42 53 55", ["3418"] = "42 53 22", ["3421"] = "42 42 53", ["3422"] = "42 42 42", ["3423"] = "42 42 53", ["3424"] = "42 42 42", ["3425"] = "42 42 53", ["3426"] = "42 42 42", ["3427"] = "42 42 55", ["3428"] = "42 42 22", ["3431"] = "42 53 53", ["3432"] = "42 53 42", ["3433"] = "42 53 53", ["3434"] = "42 53 42", ["3435"] = "42 53 53", ["3436"] = "42 53 42", ["3437"] = "42 53 55", ["3438"] = "42 53 22", ["3441"] = "42 42 53", ["3442"] = "42 42 42", ["3443"] = "42 42 53", ["3444"] = "42 42 42", ["3445"] = "42 42 53", ["3446"] = "42 42 42", ["3447"] = "42 42 55", ["3448"] = "42 42 22", ["3451"] = "42 53 53", ["3452"] = "42 53 42", ["3453"] = "42 53 53", ["3454"] = "42 53 42", ["3455"] = "42 53 53", ["3456"] = "42 53 42", ["3457"] = "42 53 55", ["3458"] = "42 53 22", ["3461"] = "42 42 53", ["3462"] = "42 42 42", ["3463"] = "42 42 53", ["3464"] = "42 42 42", ["3465"] = "42 42 53", ["3466"] = "42 42 42", ["3467"] = "42 42 55", ["3468"] = "42 42 22", ["3471"] = "42 55 53", ["3472"] = "42 55 42", ["3473"] = "42 55 53", ["3474"] = "42 55 42", ["3475"] = "42 55 53", ["3476"] = "42 55 42", ["3477"] = "42 55 55", ["3478"] = "42 55 22", ["3481"] = "42 22 53", ["3482"] = "42 22 42", ["3483"] = "42 22 53", ["3484"] = "42 22 42", ["3485"] = "42 22 53", ["3486"] = "42 22 42", ["3487"] = "42 22 55", ["3488"] = "42 22 22", ["3511"] = "334 53 53", ["3512"] = "334 53 42", ["3513"] = "334 53 53", ["3514"] = "334 53 42", ["3515"] = "334 53 53", ["3516"] = "334 53 42", ["3517"] = "334 53 55", ["3518"] = "334 53 22", ["3521"] = "334 42 53", ["3522"] = "334 42 42", ["3523"] = "334 42 53", ["3524"] = "334 42 42", ["3525"] = "334 42 53", ["3526"] = "334 42 42", ["3527"] = "334 42 55", ["3528"] = "334 42 22", ["3531"] = "334 53 53", ["3532"] = "334 53 42", ["3533"] = "334 53 53", ["3534"] = "334 53 42", ["3535"] = "334 53 53", ["3536"] = "334 53 42", ["3537"] = "334 53 55", ["3538"] = "334 53 22", ["3541"] = "334 42 53", ["3542"] = "334 42 42", ["3543"] = "334 42 53", ["3544"] = "334 42 42", ["3545"] = "334 42 53", ["3546"] = "334 42 42", ["3547"] = "334 42 55", ["3548"] = "334 42 22", ["3551"] = "334 334 44", ["3552"] = "334 334 22", ["3553"] = "334 334 53", ["3554"] = "334 334 42", ["3555"] = "334 334 334", ["3556"] = "334 334 113", ["3557"] = "334 334 55", ["3558"] = "334 334 22", ["3561"] = "334 113 44", ["3562"] = "334 113 22", ["3563"] = "334 113 53", ["3564"] = "334 113 42", ["3565"] = "334 113 334", ["3566"] = "334 113 113", ["3567"] = "334 113 55", ["3568"] = "334 113 22", ["3571"] = "334 55 44", ["3572"] = "334 55 22", ["3573"] = "334 55 44", ["3574"] = "334 55 22", ["3575"] = "334 55 44", ["3576"] = "334 55 22", ["3577"] = "334 55 55", ["3578"] = "334 55 22", ["3581"] = "334 22 44", ["3582"] = "334 22 22", ["3583"] = "334 22 44", ["3584"] = "334 22 22", ["3585"] = "334 22 44", ["3586"] = "334 22 22", ["3587"] = "334 22 55", ["3588"] = "334 22 22", ["3611"] = "113 53 53", ["3612"] = "113 53 42", ["3613"] = "113 53 53", ["3614"] = "113 53 42", ["3615"] = "113 53 53", ["3616"] = "113 53 42", ["3617"] = "113 53 55", ["3618"] = "113 53 22", ["3621"] = "113 42 53", ["3622"] = "113 42 42", ["3623"] = "113 42 53", ["3624"] = "113 42 42", ["3625"] = "113 42 53", ["3626"] = "113 42 42", ["3627"] = "113 42 55", ["3628"] = "113 42 22", ["3631"] = "113 53 53", ["3632"] = "113 53 42", ["3633"] = "113 53 53", ["3634"] = "113 53 42", ["3635"] = "113 53 53", ["3636"] = "113 53 42", ["3637"] = "113 53 55", ["3638"] = "113 53 22", ["3641"] = "113 42 53", ["3642"] = "113 42 42", ["3643"] = "113 42 53", ["3644"] = "113 42 42", ["3645"] = "113 42 53", ["3646"] = "113 42 42", ["3647"] = "113 42 55", ["3648"] = "113 42 22", ["3651"] = "113 334 44", ["3652"] = "113 334 22", ["3653"] = "113 334 53", ["3654"] = "113 334 42", ["3655"] = "113 334 334", ["3656"] = "113 334 113", ["3657"] = "113 334 55", ["3658"] = "113 334 22", ["3661"] = "113 113 44", ["3662"] = "113 113 22", ["3663"] = "113 113 53", ["3664"] = "113 113 42", ["3665"] = "113 113 334", ["3666"] = "113 113 113", ["3667"] = "113 113 55", ["3668"] = "113 113 22", ["3671"] = "113 55 44", ["3672"] = "113 55 22", ["3673"] = "113 55 44", ["3674"] = "113 55 22", ["3675"] = "113 55 44", ["3676"] = "113 55 22", ["3677"] = "113 55 55", ["3678"] = "113 55 22", ["3681"] = "113 22 44", ["3682"] = "113 22 22", ["3683"] = "113 22 44", ["3684"] = "113 22 22", ["3685"] = "113 22 44", ["3686"] = "113 22 22", ["3687"] = "113 22 55", ["3688"] = "113 22 22", ["3711"] = "55 44 44", ["3712"] = "55 44 22", ["3713"] = "55 44 44", ["3714"] = "55 44 22", ["3715"] = "55 44 44", ["3716"] = "55 44 22", ["3717"] = "55 44 55", ["3718"] = "55 44 22", ["3721"] = "55 22 44", ["3722"] = "55 22 22", ["3723"] = "55 22 44", ["3724"] = "55 22 22", ["3725"] = "55 22 44", ["3726"] = "55 22 22", ["3727"] = "55 22 55", ["3728"] = "55 22 22", ["3731"] = "55 53 53", ["3732"] = "55 53 42", ["3733"] = "55 53 53", ["3734"] = "55 53 42", ["3735"] = "55 53 53", ["3736"] = "55 53 42", ["3737"] = "55 53 55", ["3738"] = "55 53 22", ["3741"] = "55 42 53", ["3742"] = "55 42 42", ["3743"] = "55 42 53", ["3744"] = "55 42 42", ["3745"] = "55 42 53", ["3746"] = "55 42 42", ["3747"] = "55 42 55", ["3748"] = "55 42 22", ["3751"] = "55 334 44", ["3752"] = "55 334 22", ["3753"] = "55 334 53", ["3754"] = "55 334 42", ["3755"] = "55 334 334", ["3756"] = "55 334 113", ["3757"] = "55 334 55", ["3758"] = "55 334 22", ["3761"] = "55 113 44", ["3762"] = "55 113 22", ["3763"] = "55 113 53", ["3764"] = "55 113 42", ["3765"] = "55 113 334", ["3766"] = "55 113 113", ["3767"] = "55 113 55", ["3768"] = "55 113 22", ["3771"] = "55 55 44", ["3772"] = "55 55 22", ["3773"] = "55 55 53", ["3774"] = "55 55 42", ["3775"] = "55 55 334", ["3776"] = "55 55 113", ["3777"] = "55 55 55", ["3778"] = "55 55 22", ["3781"] = "55 22 44", ["3782"] = "55 22 22", ["3783"] = "55 22 53", ["3784"] = "55 22 42", ["3785"] = "55 22 334", ["3786"] = "55 22 113", ["3787"] = "55 22 55", ["3788"] = "55 22 22", ["3811"] = "22 44 44", ["3812"] = "22 44 22", ["3813"] = "22 44 44", ["3814"] = "22 44 22", ["3815"] = "22 44 44", ["3816"] = "22 44 22", ["3817"] = "22 44 55", ["3818"] = "22 44 22", ["3821"] = "22 22 44", ["3822"] = "22 22 22", ["3823"] = "22 22 44", ["3824"] = "22 22 22", ["3825"] = "22 22 44", ["3826"] = "22 22 22", ["3827"] = "22 22 55", ["3828"] = "22 22 22", ["3831"] = "22 53 53", ["3832"] = "22 53 42", ["3833"] = "22 53 53", ["3834"] = "22 53 42", ["3835"] = "22 53 53", ["3836"] = "22 53 42", ["3837"] = "22 53 55", ["3838"] = "22 53 22", ["3841"] = "22 42 53", ["3842"] = "22 42 42", ["3843"] = "22 42 53", ["3844"] = "22 42 42", ["3845"] = "22 42 53", ["3846"] = "22 42 42", ["3847"] = "22 42 55", ["3848"] = "22 42 22", ["3851"] = "22 334 44", ["3852"] = "22 334 22", ["3853"] = "22 334 53", ["3854"] = "22 334 42", ["3855"] = "22 334 334", ["3856"] = "22 334 113", ["3857"] = "22 334 55", ["3858"] = "22 334 22", ["3861"] = "22 113 44", ["3862"] = "22 113 22", ["3863"] = "22 113 53", ["3864"] = "22 113 42", ["3865"] = "22 113 334", ["3866"] = "22 113 113", ["3867"] = "22 113 55", ["3868"] = "22 113 22", ["3871"] = "22 55 44", ["3872"] = "22 55 22", ["3873"] = "22 55 53", ["3874"] = "22 55 42", ["3875"] = "22 55 334", ["3876"] = "22 55 113", ["3877"] = "22 55 55", ["3878"] = "22 55 22", ["3881"] = "22 22 44", ["3882"] = "22 22 22", ["3883"] = "22 22 53", ["3884"] = "22 22 42", ["3885"] = "22 22 334", ["3886"] = "22 22 113", ["3887"] = "22 22 55", ["3888"] = "22 22 22", --!RPS! }, ['hn'] = { ["10"] = "", ["11"] = "55", ["12"] = "113", ["13"] = "53", ["14"] = "42", ["15"] = "445", ["16"] = "113", ["17"] = "55", ["18"] = "22", ["211"] = "55 55", ["212"] = "55 55", ["213"] = "55 55", ["214"] = "55 55", ["215"] = "55 55", ["216"] = "55 55", ["217"] = "55 11", ["218"] = "55 11", ["221"] = "11 55", ["222"] = "11 55", ["223"] = "11 55", ["224"] = "11 55", ["225"] = "11 55", ["226"] = "11 55", ["227"] = "11 55", ["228"] = "55 22", ["231"] = "55 55", ["232"] = "55 55", ["233"] = "55 21", ["234"] = "55 21", ["235"] = "55 21", ["236"] = "55 21", ["237"] = "55 55", ["238"] = "55 55", ["241"] = "55 55", ["242"] = "55 55", ["243"] = "55 21", ["244"] = "55 21", ["245"] = "55 21", ["246"] = "55 21", ["247"] = "55 55", ["248"] = "55 55", ["251"] = "33 53", ["252"] = "33 42", ["253"] = "33 53", ["254"] = "33 42", ["255"] = "33 53", ["256"] = "33 42", ["257"] = "33 55", ["258"] = "33 22", ["261"] = "11 53", ["262"] = "11 42", ["263"] = "11 53", ["264"] = "11 42", ["265"] = "11 53", ["266"] = "11 42", ["267"] = "11 55", ["268"] = "11 22", ["271"] = "55 55", ["272"] = "55 55", ["273"] = "55 21", ["274"] = "55 21", ["275"] = "55 21", ["276"] = "55 21", ["277"] = "55 55", ["278"] = "55 55", ["281"] = "11 55", ["282"] = "11 55", ["283"] = "22 21", ["284"] = "22 21", ["285"] = "22 21", ["286"] = "22 21", ["287"] = "11 55", ["288"] = "11 22", ["3111"] = "55 55 55", ["3112"] = "55 55 55", ["3113"] = "55 55 55", ["3114"] = "55 55 55", ["3115"] = "55 55 55", ["3116"] = "55 55 55", ["3117"] = "55 55 11", ["3118"] = "55 55 11", ["3121"] = "55 55 55", ["3122"] = "55 55 55", ["3123"] = "55 55 55", ["3124"] = "55 55 55", ["3125"] = "55 55 55", ["3126"] = "55 55 55", ["3127"] = "55 55 11", ["3128"] = "55 55 11", ["3131"] = "55 55 55", ["3132"] = "55 55 55", ["3133"] = "55 55 55", ["3134"] = "55 55 55", ["3135"] = "55 55 55", ["3136"] = "55 55 55", ["3137"] = "55 55 11", ["3138"] = "55 55 11", ["3141"] = "55 55 55", ["3142"] = "55 55 55", ["3143"] = "55 55 55", ["3144"] = "55 55 55", ["3145"] = "55 55 55", ["3146"] = "55 55 55", ["3147"] = "55 55 11", ["3148"] = "55 55 11", ["3151"] = "55 55 55", ["3152"] = "55 55 55", ["3153"] = "55 55 55", ["3154"] = "55 55 55", ["3155"] = "55 55 55", ["3156"] = "55 55 55", ["3157"] = "55 55 11", ["3158"] = "55 55 11", ["3161"] = "55 55 55", ["3162"] = "55 55 55", ["3163"] = "55 55 55", ["3164"] = "55 55 55", ["3165"] = "55 55 55", ["3166"] = "55 55 55", ["3167"] = "55 55 11", ["3168"] = "55 55 11", ["3171"] = "55 33 21", ["3172"] = "55 33 21", ["3173"] = "55 33 21", ["3174"] = "55 33 21", ["3175"] = "55 33 21", ["3176"] = "55 33 21", ["3177"] = "55 33 11", ["3178"] = "55 33 11", ["3181"] = "55 33 11", ["3182"] = "55 33 11", ["3183"] = "55 33 11", ["3184"] = "55 33 11", ["3185"] = "55 33 11", ["3186"] = "55 33 11", ["3187"] = "55 33 11", ["3188"] = "55 33 11", ["3211"] = "11 55 55", ["3212"] = "11 55 55", ["3213"] = "11 55 55", ["3214"] = "11 55 55", ["3215"] = "11 55 55", ["3216"] = "11 55 55", ["3217"] = "11 55 11", ["3218"] = "11 55 11", ["3221"] = "11 55 55", ["3222"] = "11 55 55", ["3223"] = "11 55 55", ["3224"] = "11 55 55", ["3225"] = "11 55 55", ["3226"] = "11 55 55", ["3227"] = "11 55 11", ["3228"] = "11 55 11", ["3231"] = "11 55 55", ["3232"] = "11 55 55", ["3233"] = "11 55 55", ["3234"] = "11 55 55", ["3235"] = "11 55 55", ["3236"] = "11 55 55", ["3237"] = "11 55 11", ["3238"] = "11 55 11", ["3241"] = "11 55 55", ["3242"] = "11 55 55", ["3243"] = "11 55 55", ["3244"] = "11 55 55", ["3245"] = "11 55 55", ["3246"] = "11 55 55", ["3247"] = "11 55 11", ["3248"] = "11 55 11", ["3251"] = "11 55 55", ["3252"] = "11 55 55", ["3253"] = "11 55 55", ["3254"] = "11 55 55", ["3255"] = "11 55 55", ["3256"] = "11 55 55", ["3257"] = "11 55 11", ["3258"] = "11 55 11", ["3261"] = "11 55 55", ["3262"] = "11 55 55", ["3263"] = "11 55 55", ["3264"] = "11 55 55", ["3265"] = "11 55 55", ["3266"] = "11 55 55", ["3267"] = "11 55 11", ["3268"] = "11 55 11", ["3271"] = "11 55 21", ["3272"] = "11 55 21", ["3273"] = "11 55 21", ["3274"] = "11 55 21", ["3275"] = "11 55 21", ["3276"] = "11 55 21", ["3277"] = "11 55 11", ["3278"] = "11 55 11", ["3281"] = "11 55 21", ["3282"] = "11 55 21", ["3283"] = "11 55 21", ["3284"] = "11 55 21", ["3285"] = "11 55 21", ["3286"] = "11 55 21", ["3287"] = "11 55 11", ["3288"] = "11 55 11", ["3311"] = "55 55 55", ["3312"] = "55 55 55", ["3313"] = "55 55 55", ["3314"] = "55 55 55", ["3315"] = "55 55 55", ["3316"] = "55 55 55", ["3317"] = "55 55 11", ["3318"] = "55 55 11", ["3321"] = "55 55 55", ["3322"] = "55 55 55", ["3323"] = "55 55 55", ["3324"] = "55 55 55", ["3325"] = "55 55 55", ["3326"] = "55 55 55", ["3327"] = "55 55 11", ["3328"] = "55 55 11", ["3331"] = "55 33 21", ["3332"] = "55 33 21", ["3333"] = "55 33 21", ["3334"] = "55 33 21", ["3335"] = "55 33 21", ["3336"] = "55 33 21", ["3337"] = "55 33 11", ["3338"] = "", ["3341"] = "55 33 21", ["3342"] = "55 33 21", ["3343"] = "55 33 21", ["3344"] = "55 33 21", ["3345"] = "55 33 21", ["3346"] = "55 33 21", ["3347"] = "55 33 11", ["3348"] = "55 33 11", ["3351"] = "55 33 21", ["3352"] = "55 33 21", ["3353"] = "55 33 21", ["3354"] = "55 33 21", ["3355"] = "55 33 21", ["3356"] = "55 33 21", ["3357"] = "55 33 11", ["3358"] = "55 33 11", ["3361"] = "55 33 21", ["3362"] = "55 33 21", ["3363"] = "55 33 21", ["3364"] = "55 33 21", ["3365"] = "55 33 21", ["3366"] = "55 33 21", ["3367"] = "55 33 11", ["3368"] = "55 33 11", ["3371"] = "55 55 21", ["3372"] = "55 55 21", ["3373"] = "55 55 21", ["3374"] = "55 55 21", ["3375"] = "55 55 21", ["3376"] = "55 55 21", ["3377"] = "55 55 11", ["3378"] = "55 55 11", ["3381"] = "55 55 21", ["3382"] = "55 55 21", ["3383"] = "55 55 21", ["3384"] = "55 55 21", ["3385"] = "55 55 21", ["3386"] = "55 55 21", ["3387"] = "55 55 11", ["3388"] = "55 55 11", ["3411"] = "55 55 55", ["3412"] = "55 55 55", ["3413"] = "55 55 55", ["3414"] = "55 55 55", ["3415"] = "55 55 55", ["3416"] = "55 55 55", ["3417"] = "55 55 11", ["3418"] = "55 55 11", ["3421"] = "55 55 55", ["3422"] = "55 55 55", ["3423"] = "55 55 55", ["3424"] = "55 55 55", ["3425"] = "55 55 55", ["3426"] = "55 55 55", ["3427"] = "55 55 11", ["3428"] = "55 55 11", ["3431"] = "55 33 21", ["3432"] = "55 33 21", ["3433"] = "55 33 21", ["3434"] = "55 33 21", ["3435"] = "55 33 21", ["3436"] = "55 33 21", ["3437"] = "55 33 11", ["3438"] = "55 33 11", ["3441"] = "55 33 21", ["3442"] = "55 33 21", ["3443"] = "55 33 21", ["3444"] = "55 33 21", ["3445"] = "55 33 21", ["3446"] = "55 33 21", ["3447"] = "55 33 11", ["3448"] = "55 33 11", ["3451"] = "55 33 21", ["3452"] = "55 33 21", ["3453"] = "55 33 21", ["3454"] = "55 33 21", ["3455"] = "55 33 21", ["3456"] = "55 33 21", ["3457"] = "55 33 11", ["3458"] = "55 33 11", ["3461"] = "55 33 21", ["3462"] = "55 33 21", ["3463"] = "55 33 21", ["3464"] = "55 33 21", ["3465"] = "55 33 21", ["3466"] = "55 33 21", ["3467"] = "55 33 11", ["3468"] = "55 33 11", ["3471"] = "55 55 21", ["3472"] = "55 55 21", ["3473"] = "55 55 21", ["3474"] = "55 55 21", ["3475"] = "55 55 21", ["3476"] = "55 55 21", ["3477"] = "55 55 11", ["3478"] = "55 55 11", ["3481"] = "55 55 21", ["3482"] = "55 55 21", ["3483"] = "55 55 21", ["3484"] = "55 55 21", ["3485"] = "55 55 21", ["3486"] = "55 55 21", ["3487"] = "55 55 11", ["3488"] = "55 55 11", ["3511"] = "33 55 21", ["3512"] = "33 55 21", ["3513"] = "33 55 21", ["3514"] = "33 55 21", ["3515"] = "33 55 21", ["3516"] = "33 55 21", ["3517"] = "33 55 11", ["3518"] = "33 55 11", ["3521"] = "33 55 21", ["3522"] = "33 55 21", ["3523"] = "33 55 21", ["3524"] = "33 55 21", ["3525"] = "33 55 21", ["3526"] = "33 55 21", ["3527"] = "33 55 11", ["3528"] = "33 55 11", ["3531"] = "33 55 21", ["3532"] = "33 55 21", ["3533"] = "33 55 21", ["3534"] = "33 55 21", ["3535"] = "33 55 21", ["3536"] = "33 55 21", ["3537"] = "33 55 11", ["3538"] = "33 55 11", ["3541"] = "33 55 21", ["3542"] = "33 55 21", ["3543"] = "33 55 21", ["3544"] = "33 55 21", ["3545"] = "33 55 21", ["3546"] = "33 55 21", ["3547"] = "33 55 11", ["3548"] = "33 55 11", ["3551"] = "33 55 21", ["3552"] = "33 55 21", ["3553"] = "33 55 21", ["3554"] = "33 55 21", ["3555"] = "33 55 21", ["3556"] = "33 55 21", ["3557"] = "33 55 11", ["3558"] = "33 55 11", ["3561"] = "33 55 21", ["3562"] = "33 55 21", ["3563"] = "33 55 21", ["3564"] = "33 55 21", ["3565"] = "33 55 21", ["3566"] = "33 55 21", ["3567"] = "33 55 11", ["3568"] = "33 55 11", ["3571"] = "33 55 21", ["3572"] = "33 55 21", ["3573"] = "33 55 21", ["3574"] = "33 55 21", ["3575"] = "33 55 21", ["3576"] = "33 55 21", ["3577"] = "33 55 11", ["3578"] = "33 55 11", ["3581"] = "33 55 21", ["3582"] = "33 55 21", ["3583"] = "33 55 21", ["3584"] = "33 55 21", ["3585"] = "33 55 21", ["3586"] = "33 55 21", ["3587"] = "33 55 11", ["3588"] = "33 55 11", ["3611"] = "11 55 21", ["3612"] = "11 55 21", ["3613"] = "11 55 21", ["3614"] = "11 55 21", ["3615"] = "11 55 21", ["3616"] = "11 55 21", ["3617"] = "11 55 11", ["3618"] = "11 55 11", ["3621"] = "11 55 21", ["3622"] = "11 55 21", ["3623"] = "11 55 21", ["3624"] = "11 55 21", ["3625"] = "11 55 21", ["3626"] = "11 55 21", ["3627"] = "11 55 11", ["3628"] = "11 55 11", ["3631"] = "11 55 21", ["3632"] = "11 55 21", ["3633"] = "11 55 21", ["3634"] = "11 55 21", ["3635"] = "11 55 21", ["3636"] = "11 55 21", ["3637"] = "11 55 11", ["3638"] = "11 55 11", ["3641"] = "11 55 21", ["3642"] = "11 55 21", ["3643"] = "11 55 21", ["3644"] = "11 55 21", ["3645"] = "11 55 21", ["3646"] = "11 55 21", ["3647"] = "11 55 11", ["3648"] = "11 55 11", ["3651"] = "11 55 21", ["3652"] = "11 55 21", ["3653"] = "11 55 21", ["3654"] = "11 55 21", ["3655"] = "11 55 21", ["3656"] = "11 55 21", ["3657"] = "11 55 11", ["3658"] = "11 55 11", ["3661"] = "11 55 21", ["3662"] = "11 55 21", ["3663"] = "11 55 21", ["3664"] = "11 55 21", ["3665"] = "11 55 21", ["3666"] = "11 55 21", ["3667"] = "11 55 11", ["3668"] = "11 55 11", ["3671"] = "11 55 21", ["3672"] = "11 55 21", ["3673"] = "11 55 21", ["3674"] = "11 55 21", ["3675"] = "11 55 21", ["3676"] = "11 55 21", ["3677"] = "11 55 11", ["3678"] = "11 55 11", ["3681"] = "11 55 21", ["3682"] = "11 55 21", ["3683"] = "11 55 21", ["3684"] = "11 55 21", ["3685"] = "11 55 21", ["3686"] = "11 55 21", ["3687"] = "11 55 11", ["3688"] = "11 55 11", ["3711"] = "55 55 55", ["3712"] = "55 55 55", ["3713"] = "55 55 55", ["3714"] = "55 55 55", ["3715"] = "55 55 55", ["3716"] = "55 55 55", ["3717"] = "55 55 11", ["3718"] = "55 55 11", ["3721"] = "55 55 55", ["3722"] = "55 55 55", ["3723"] = "55 55 55", ["3724"] = "55 55 55", ["3725"] = "55 55 55", ["3726"] = "55 55 55", ["3727"] = "55 55 11", ["3728"] = "55 55 11", ["3731"] = "55 33 21", ["3732"] = "55 33 21", ["3733"] = "55 33 21", ["3734"] = "55 33 21", ["3735"] = "55 33 21", ["3736"] = "55 33 21", ["3737"] = "55 33 11", ["3738"] = "55 33 11", ["3741"] = "55 33 21", ["3742"] = "55 33 21", ["3743"] = "55 33 21", ["3744"] = "55 33 21", ["3745"] = "55 33 21", ["3746"] = "55 33 21", ["3747"] = "55 33 11", ["3748"] = "55 33 11", ["3751"] = "55 33 21", ["3752"] = "55 33 21", ["3753"] = "55 33 21", ["3754"] = "55 33 21", ["3755"] = "55 33 21", ["3756"] = "55 33 21", ["3757"] = "55 33 11", ["3758"] = "55 33 11", ["3761"] = "55 33 21", ["3762"] = "55 33 21", ["3763"] = "55 33 21", ["3764"] = "55 33 21", ["3765"] = "55 33 21", ["3766"] = "55 33 21", ["3767"] = "55 33 11", ["3768"] = "55 33 11", ["3771"] = "55 55 55", ["3772"] = "55 55 55", ["3773"] = "55 55 55", ["3774"] = "55 55 55", ["3775"] = "55 55 55", ["3776"] = "55 55 55", ["3777"] = "55 55 55", ["3778"] = "55 55 55", ["3781"] = "55 55 55", ["3782"] = "55 55 55", ["3783"] = "55 55 55", ["3784"] = "55 55 55", ["3785"] = "55 55 55", ["3786"] = "55 55 55", ["3787"] = "55 55 55", ["3788"] = "55 55 55", --3811 to 3816, 3821 to 3826 extrapolated from linguistic trends & data in vocab section ["3811"] = "11 55 55", ["3812"] = "11 55 55", ["3813"] = "11 55 55", ["3814"] = "11 55 55", ["3815"] = "11 55 55", ["3816"] = "11 55 55", ["3817"] = "11 55 11", ["3818"] = "11 55 11", ["3821"] = "11 55 55", ["3822"] = "11 55 55", ["3823"] = "11 55 55", ["3824"] = "11 55 55", ["3825"] = "11 55 55", ["3826"] = "11 55 55", ["3827"] = "11 55 11", ["3828"] = "11 55 11", ["3831"] = "22 33 21", ["3832"] = "22 33 21", ["3833"] = "22 33 21", ["3834"] = "22 33 21", ["3835"] = "22 33 21", ["3836"] = "22 33 21", ["3837"] = "", ["3838"] = "22 33 11", ["3841"] = "22 33 21", ["3842"] = "22 33 21", ["3843"] = "22 33 21", ["3844"] = "22 33 21", ["3845"] = "22 33 21", ["3846"] = "22 33 21", ["3847"] = "22 33 11", ["3848"] = "22 33 11", ["3851"] = "22 33 21", ["3852"] = "22 33 21", ["3853"] = "22 33 21", ["3854"] = "22 33 21", ["3855"] = "22 33 21", ["3856"] = "22 33 21", ["3857"] = "22 33 11", ["3858"] = "22 33 11", ["3861"] = "22 33 21", ["3862"] = "22 33 21", ["3863"] = "22 33 21", ["3864"] = "22 33 21", ["3865"] = "22 33 21", ["3866"] = "22 33 21", ["3867"] = "22 33 11", ["3868"] = "22 33 11", ["3871"] = "11 55 55", ["3872"] = "11 55 55", ["3873"] = "11 55 55", ["3874"] = "11 55 55", ["3875"] = "11 55 55", ["3876"] = "11 55 55", ["3877"] = "11 55 55", ["3878"] = "11 55 55", ["3881"] = "11 55 55", ["3882"] = "11 55 55", ["3883"] = "11 55 55", ["3884"] = "11 55 55", ["3885"] = "11 55 55", ["3886"] = "11 55 55", ["3887"] = "11 55 55", ["3888"] = "11 55 55", --RPS ["1s"] = "33", ["2s"] = "11", ["3s"] = "33", ["4s"] = "33", ["5s"] = "33", ["6s"] = "11", ["7s"] = "33", ["8s"] = "11", --2 and 8 have sporadic 1 & 8 shifts ["multiple"] = "33" }, ['hy'] = { ["10"] = "", ["11"] = "51", ["12"] = "31", ["13"] = "343", ["14"] = "232", ["15"] = "35", ["16"] = "213", ["17"] = "55", ["18"] = "22", ["211"] = "35 51", ["212"] = "35 51", ["213"] = "53 31", ["214"] = "53 31", ["215"] = "53 31", ["216"] = "53 31", ["217"] = "35 55", ["218"] = "35 55", ["221"] = "13 51", ["222"] = "13 51", ["223"] = "13 51", ["224"] = "13 51", ["225"] = "13 51", ["226"] = "13 51", ["227"] = "13 33", ["228"] = "13 33", ["231"] = "343 51", ["232"] = "343 51", ["233"] = "343 35", ["234"] = "343 35", ["235"] = "343 35", ["236"] = "343 35", ["237"] = "343 55", ["238"] = "343 55", ["241"] = "232 51", ["242"] = "232 31", ["243"] = "232 35", ["244"] = "232 35", ["245"] = "232 35", ["246"] = "232 35", ["247"] = "232 55", ["248"] = "232 55", ["251"] = "35 31", ["252"] = "35 31", ["253"] = "35 31", ["254"] = "35 31", ["255"] = "35 31", ["256"] = "35 31", ["257"] = "35 33", ["258"] = "35 33", ["261"] = "35 31", ["262"] = "35 31", ["263"] = "35 31", ["264"] = "35 31", ["265"] = "35 31", ["266"] = "35 31", ["267"] = "213 55", ["268"] = "213 55", ["271"] = "55 51", ["272"] = "55 51", ["273"] = "55 35", ["274"] = "55 35", ["275"] = "55 35", ["276"] = "55 35", ["277"] = "55 55", ["278"] = "55 55", ["281"] = "22 51", ["282"] = "22 51", ["283"] = "22 35", ["284"] = "22 35", ["285"] = "22 35", ["286"] = "22 35", ["287"] = "22 55", ["288"] = "22 55", --based on the source, i think this is what they mean ["311"] = "35 55 31", ["312"] = "35 55 31", ["313"] = "53 55 31", ["314"] = "53 55 31", ["315"] = "35 55 31", ["316"] = "35 55 31", ["317"] = "35 55 31", ["318"] = "35 55 31", ["321"] = "31 55 31", ["322"] = "31 55 31", ["323"] = "31 55 31", ["324"] = "31 55 31", ["325"] = "31 55 31", ["326"] = "31 55 31", ["327"] = "31 55 31", ["328"] = "31 55 31", ["331"] = "34 53 31", ["332"] = "34 44 31", ["333"] = "34 44 31", ["334"] = "34 44 31", ["335"] = "34 44 31", ["336"] = "34 44 31", ["337"] = "34 44 31", ["338"] = "34 44 31", ["341"] = "23 53 31", ["342"] = "23 53 31", ["343"] = "23 44 31", ["344"] = "23 44 31", ["345"] = "23 44 31", ["346"] = "23 44 31", ["347"] = "23 44 31", ["348"] = "23 44 31", ["351"] = "35 55 31", ["352"] = "35 55 31", ["353"] = "35 55 31", ["354"] = "35 55 31", ["355"] = "35 55 31", ["356"] = "35 55 31", ["357"] = "35 55 31", ["358"] = "25 55 31", ["361"] = "13 44 31", ["362"] = "13 44 31", ["363"] = "13 44 31", ["364"] = "13 44 31", ["365"] = "13 44 31", ["366"] = "13 44 31", ["367"] = "13 44 31", ["368"] = "13 44 31", ["371"] = "55 55 51", ["372"] = "55 55 51", ["373"] = "55 55 31", ["374"] = "55 55 31", ["375"] = "55 55 31", ["376"] = "55 55 31", ["377"] = "55 55 31", ["378"] = "55 55 31", ["381"] = "22 55 51", ["382"] = "22 55 51", ["383"] = "22 55 51", ["384"] = "22 55 51", ["385"] = "22 55 51", ["386"] = "22 55 51", ["387"] = "22 55 51", ["388"] = "22 55 53", --!RPS! }, ['dq'] = { ["11"] = "44", ["12"] = "213", ["13"] = "53", ["14"] = "31", ["15"] = "435", ["16"] = "224", ["17"] = "55", ["18"] = "33", }, ['hz'] = { ["10"] = "", ["11"] = "334", ["21"] = "33 34", ["31"] = "33 34 52", ["41"] = "33 34 55 21", ["51"] = "33 34 55 22 21", ["213"] = "33 53", ["313"] = "33 55 21", ["413"] = "33 55 22 21", ["217"] = "33 55", ["317"] = "33 34 55", ["12"] = "23", ["22"] = "22 34", ["32"] = "22 34 53", ["42"] = "22 34 55 21", ["223"] = "22 53", ["323"] = "22 55 21", ["423"] = "22 55 22 21", ["13"] = "53", ["23"] = "55 21", ["33"] = "55 22 21", ["43"] = "55 22 22 21", ["53"] = "55 22 22 22 21", ["15"] = "45", ["25"] = "34 53", ["35"] = "34 55 21", ["45"] = "34 55 22 21", ["16"] = "113", ["26"] = "11 53", ["36"] = "11 55 21", ["46"] = "11 55 22 21", ["56"] = "11 55 22 22 21", ["17"] = "55", ["27"] = "33 34", ["37"] = "33 34 53", ["47"] = "33 34 55 21", ["273"] = "33 53", ["373"] = "33 55 21", ["473"] = "33 55 22 21", ["270"] = "55 21", ["370"] = "55 22 21", ["470"] = "55 22 22 21", ["377"] = "44 44 55", ["378"] = "44 44 55", ["18"] = "23", ["28"] = "22 34", ["38"] = "22 34 53", ["48"] = "22 34 55 21", ["58"] = "22 34 55 22 21", ["283"] = "22 53", ["383"] = "22 55 21", ["483"] = "22 55 22 21", ["380"] = "22 22 33", --RPS ["1s"] = "33", ["2s"] = "22", ["3s"] = "33", ["5s"] = "34", ["6s"] = "12", ["7s"] = "44", ["8s"] = "22", --3: /33~44/, 5: /33~34/, 6: /11~12~23/, 7: /3~4/, 8: /2~3/ ["multiple"] = "33" }, ['xs'] = { ["10"] = "", ["11"] = "44", ["12"] = "13", ["13"] = "34", ["14"] = "213", ["15"] = "53", ["16"] = "31", ["17"] = "55", ["18"] = "22", }, ['fy'] = { ["10"] = "", ["11"] = "53", ["12"] = "113", ["13"] = "424", ["14"] = "212", ["15"] = "335", ["16"] = "212", ["17"] = "55", ["18"] = "22", ["211"] = "55 55", ["212"] = "55 55", ["213"] = "55 31", ["214"] = "55 31", ["215"] = "55 31", ["216"] = "55 31", ["217"] = "55 55", ["218"] = "55 55", ["22"] = "11 11", ["23"] = "33 35", ["24"] = "11 53", ["25"] = "33 53", ["26"] = "11 35", ["271"] = "55 31", ["272"] = "55 31", ["273"] = "33 35", ["274"] = "33 35", ["275"] = "33 35", ["276"] = "33 35", ["277"] = "55 31", ["278"] = "55 31", ["28"] = "11 53", --RPS ["1s"] = "33", ["2s"] = "11", ["3s"] = "33", ["4s"] = "11", ["5s"] = "33", ["6s"] = "11", ["7s"] = "33", ["8s"] = "11", }, ['sx'] = { ["10"] = "", ["11"] = "52", ["12"] = "231", ["13"] = "335", ["14"] = "113", ["15"] = "33", ["16"] = "11", ["17"] = "45", ["18"] = "23", --regular disyllabic LPS ["211"] = "33 52", ["212"] = "33 52", ["213"] = "33 55", ["214"] = "33 55", ["215"] = "33 55", ["216"] = "33 55", ["217"] = "33 55", ["218"] = "33 55", ["221"] = "11 52", ["222"] = "11 52", ["223"] = "11 55", ["224"] = "11 55", ["225"] = "11 55", ["226"] = "11 55", ["227"] = "11 55", ["228"] = "11 55", ["231"] = "335 52", ["232"] = "335 52", ["233"] = "335 52", ["234"] = "335 52", ["235"] = "335 52", ["236"] = "335 52", ["237"] = "335 54", ["238"] = "335 54", ["241"] = "115 52", ["242"] = "115 52", ["243"] = "115 52", ["244"] = "115 52", ["245"] = "115 52", ["246"] = "115 52", ["247"] = "115 54", ["248"] = "115 54", ["251"] = "33 33", ["252"] = "33 33", ["253"] = "33 33", ["254"] = "33 33", ["255"] = "33 33", ["256"] = "33 33", ["257"] = "33 33", ["258"] = "33 33", ["261"] = "11 11", ["262"] = "11 11", ["263"] = "11 11", ["264"] = "11 11", ["265"] = "11 11", ["266"] = "11 11", ["267"] = "11 11", ["268"] = "11 11", ["271"] = "33 52", ["272"] = "33 52", ["273"] = "33 55", ["274"] = "33 55", ["275"] = "33 55", ["276"] = "33 55", ["277"] = "33 55", ["278"] = "33 55", ["281"] = "11 52", ["282"] = "11 52", ["283"] = "11 55", ["284"] = "11 55", ["285"] = "11 55", ["286"] = "11 55", ["287"] = "11 55", ["288"] = "11 55", --irregular LPS ["250"] = "33 55", ["260"] = "11 55", --regular trisyllabic LPS ["3111"] = "33 55 52", ["3112"] = "33 55 52", ["3113"] = "33 55 52", ["3114"] = "33 55 52", ["3115"] = "33 55 52", ["3116"] = "33 55 52", ["3117"] = "33 55 54", ["3118"] = "33 55 54", ["3121"] = "33 55 52", ["3122"] = "33 55 52", ["3123"] = "33 55 52", ["3124"] = "33 55 52", ["3125"] = "33 55 52", ["3126"] = "33 55 52", ["3127"] = "33 55 54", ["3128"] = "33 55 54", ["3131"] = "33 55 52", ["3132"] = "33 55 52", ["3133"] = "33 55 52", ["3134"] = "33 55 52", ["3135"] = "33 55 52", ["3136"] = "33 55 52", ["3137"] = "33 55 54", ["3138"] = "33 55 54", ["3141"] = "33 55 52", ["3142"] = "33 55 52", ["3143"] = "33 55 52", ["3144"] = "33 55 52", ["3145"] = "33 55 52", ["3146"] = "33 55 52", ["3147"] = "33 55 54", ["3148"] = "33 55 54", ["3151"] = "33 55 52", ["3152"] = "33 55 52", ["3153"] = "33 55 52", ["3154"] = "33 55 52", ["3155"] = "33 55 52", ["3156"] = "33 55 52", ["3157"] = "33 55 54", ["3158"] = "33 55 54", ["3161"] = "33 55 52", ["3162"] = "33 55 52", ["3163"] = "33 55 52", ["3164"] = "33 55 52", ["3165"] = "33 55 52", ["3166"] = "33 55 52", ["3167"] = "33 55 54", ["3168"] = "33 55 54", ["3171"] = "33 5 52", ["3172"] = "33 5 52", ["3173"] = "33 5 52", ["3174"] = "33 5 52", ["3175"] = "33 5 52", ["3176"] = "33 5 52", ["3177"] = "33 5 54", ["3178"] = "33 5 54", ["3181"] = "33 5 52", ["3182"] = "33 5 52", ["3183"] = "33 5 52", ["3184"] = "33 5 52", ["3185"] = "33 5 52", ["3186"] = "33 5 52", ["3187"] = "33 5 54", ["3188"] = "33 5 54", ["3211"] = "11 55 52", ["3212"] = "11 55 52", ["3213"] = "11 55 52", ["3214"] = "11 55 52", ["3215"] = "11 55 52", ["3216"] = "11 55 52", ["3217"] = "11 55 54", ["3218"] = "11 55 54", ["3221"] = "11 55 52", ["3222"] = "11 55 52", ["3223"] = "11 55 52", ["3224"] = "11 55 52", ["3225"] = "11 55 52", ["3226"] = "11 55 52", ["3227"] = "11 55 54", ["3228"] = "11 55 54", ["3231"] = "11 55 52", ["3232"] = "11 55 52", ["3233"] = "11 55 52", ["3234"] = "11 55 52", ["3235"] = "11 55 52", ["3236"] = "11 55 52", ["3237"] = "11 55 54", ["3238"] = "11 55 54", ["3241"] = "11 55 52", ["3242"] = "11 55 52", ["3243"] = "11 55 52", ["3244"] = "11 55 52", ["3245"] = "11 55 52", ["3246"] = "11 55 52", ["3247"] = "11 55 54", ["3248"] = "11 55 54", ["3251"] = "11 55 52", ["3252"] = "11 55 52", ["3253"] = "11 55 52", ["3254"] = "11 55 52", ["3255"] = "11 55 52", ["3256"] = "11 55 52", ["3257"] = "11 55 54", ["3258"] = "11 55 54", ["3261"] = "11 55 52", ["3262"] = "11 55 52", ["3263"] = "11 55 52", ["3264"] = "11 55 52", ["3265"] = "11 55 52", ["3266"] = "11 55 52", ["3267"] = "11 55 54", ["3268"] = "11 55 54", ["3271"] = "11 5 52", ["3272"] = "11 5 52", ["3273"] = "11 5 52", ["3274"] = "11 5 52", ["3275"] = "11 5 52", ["3276"] = "11 5 52", ["3277"] = "11 5 54", ["3278"] = "11 5 54", ["3281"] = "11 5 52", ["3282"] = "11 5 52", ["3283"] = "11 5 52", ["3284"] = "11 5 52", ["3285"] = "11 5 52", ["3286"] = "11 5 52", ["3287"] = "11 5 54", ["3288"] = "11 5 54", ["3311"] = "335 55 52", ["3312"] = "335 55 52", ["3313"] = "335 55 52", ["3314"] = "335 55 52", ["3315"] = "335 55 52", ["3316"] = "335 55 52", ["3317"] = "335 55 54", ["3318"] = "335 55 54", ["3321"] = "335 55 52", ["3322"] = "335 55 52", ["3323"] = "335 55 52", ["3324"] = "335 55 52", ["3325"] = "335 55 52", ["3326"] = "335 55 52", ["3327"] = "335 55 54", ["3328"] = "335 55 54", ["3331"] = "335 55 52", ["3332"] = "335 55 52", ["3333"] = "335 55 52", ["3334"] = "335 55 52", ["3335"] = "335 55 52", ["3336"] = "335 55 52", ["3337"] = "335 55 54", ["3338"] = "335 55 54", ["3341"] = "335 55 52", ["3342"] = "335 55 52", ["3343"] = "335 55 52", ["3344"] = "335 55 52", ["3345"] = "335 55 52", ["3346"] = "335 55 52", ["3347"] = "335 55 54", ["3348"] = "335 55 54", ["3351"] = "335 55 52", ["3352"] = "335 55 52", ["3353"] = "335 55 52", ["3354"] = "335 55 52", ["3355"] = "335 55 52", ["3356"] = "335 55 52", ["3357"] = "335 55 54", ["3358"] = "335 55 54", ["3361"] = "335 55 52", ["3362"] = "335 55 52", ["3363"] = "335 55 52", ["3364"] = "335 55 52", ["3365"] = "335 55 52", ["3366"] = "335 55 52", ["3367"] = "335 55 54", ["3368"] = "335 55 54", ["3371"] = "335 5 52", ["3372"] = "335 5 52", ["3373"] = "335 5 52", ["3374"] = "335 5 52", ["3375"] = "335 5 52", ["3376"] = "335 5 52", ["3377"] = "335 5 54", ["3378"] = "335 5 54", ["3381"] = "335 5 52", ["3382"] = "335 5 52", ["3383"] = "335 5 52", ["3384"] = "335 5 52", ["3385"] = "335 5 52", ["3386"] = "335 5 52", ["3387"] = "335 5 54", ["3388"] = "335 5 54", ["3411"] = "115 55 52", ["3412"] = "115 55 52", ["3413"] = "115 55 52", ["3414"] = "115 55 52", ["3415"] = "115 55 52", ["3416"] = "115 55 52", ["3417"] = "115 55 54", ["3418"] = "115 55 54", ["3421"] = "115 55 52", ["3422"] = "115 55 52", ["3423"] = "115 55 52", ["3424"] = "115 55 52", ["3425"] = "115 55 52", ["3426"] = "115 55 52", ["3427"] = "115 55 54", ["3428"] = "115 55 54", ["3431"] = "115 55 52", ["3432"] = "115 55 52", ["3433"] = "115 55 52", ["3434"] = "115 55 52", ["3435"] = "115 55 52", ["3436"] = "115 55 52", ["3437"] = "115 55 54", ["3438"] = "115 55 54", ["3441"] = "115 55 52", ["3442"] = "115 55 52", ["3443"] = "115 55 52", ["3444"] = "115 55 52", ["3445"] = "115 55 52", ["3446"] = "115 55 52", ["3447"] = "115 55 54", ["3448"] = "115 55 54", ["3451"] = "115 55 52", ["3452"] = "115 55 52", ["3453"] = "115 55 52", ["3454"] = "115 55 52", ["3455"] = "115 55 52", ["3456"] = "115 55 52", ["3457"] = "115 55 54", ["3458"] = "115 55 54", ["3461"] = "115 55 52", ["3462"] = "115 55 52", ["3463"] = "115 55 52", ["3464"] = "115 55 52", ["3465"] = "115 55 52", ["3466"] = "115 55 52", ["3467"] = "115 55 54", ["3468"] = "115 55 54", ["3471"] = "115 5 52", ["3472"] = "115 5 52", ["3473"] = "115 5 52", ["3474"] = "115 5 52", ["3475"] = "115 5 52", ["3476"] = "115 5 52", ["3477"] = "115 5 54", ["3478"] = "115 5 54", ["3481"] = "115 5 52", ["3482"] = "115 5 52", ["3483"] = "115 5 52", ["3484"] = "115 5 52", ["3485"] = "115 5 52", ["3486"] = "115 5 52", ["3487"] = "115 5 54", ["3488"] = "115 5 54", ["3511"] = "33 33 33", ["3512"] = "33 33 33", ["3513"] = "33 33 33", ["3514"] = "33 33 33", ["3515"] = "33 33 33", ["3516"] = "33 33 33", ["3517"] = "33 33 3", ["3518"] = "33 33 3", ["3521"] = "33 33 33", ["3522"] = "33 33 33", ["3523"] = "33 33 33", ["3524"] = "33 33 33", ["3525"] = "33 33 33", ["3526"] = "33 33 33", ["3527"] = "33 33 3", ["3528"] = "33 33 3", ["3531"] = "33 33 33", ["3532"] = "33 33 33", ["3533"] = "33 33 33", ["3534"] = "33 33 33", ["3535"] = "33 33 33", ["3536"] = "33 33 33", ["3537"] = "33 33 3", ["3538"] = "33 33 3", ["3541"] = "33 33 33", ["3542"] = "33 33 33", ["3543"] = "33 33 33", ["3544"] = "33 33 33", ["3545"] = "33 33 33", ["3546"] = "33 33 33", ["3547"] = "33 33 3", ["3548"] = "33 33 3", ["3551"] = "33 33 33", ["3552"] = "33 33 33", ["3553"] = "33 33 33", ["3554"] = "33 33 33", ["3555"] = "33 33 33", ["3556"] = "33 33 33", ["3557"] = "33 33 3", ["3558"] = "33 33 3", ["3561"] = "33 33 33", ["3562"] = "33 33 33", ["3563"] = "33 33 33", ["3564"] = "33 33 33", ["3565"] = "33 33 33", ["3566"] = "33 33 33", ["3567"] = "33 33 3", ["3568"] = "33 33 3", ["3571"] = "33 3 33", ["3572"] = "33 3 33", ["3573"] = "33 3 33", ["3574"] = "33 3 33", ["3575"] = "33 3 33", ["3576"] = "33 3 33", ["3577"] = "33 3 3", ["3578"] = "33 3 3", ["3581"] = "33 3 33", ["3582"] = "33 3 33", ["3583"] = "33 3 33", ["3584"] = "33 3 33", ["3585"] = "33 3 33", ["3586"] = "33 3 33", ["3587"] = "33 3 3", ["3588"] = "33 3 3", ["3611"] = "11 11 11", ["3612"] = "11 11 11", ["3613"] = "11 11 11", ["3614"] = "11 11 11", ["3615"] = "11 11 11", ["3616"] = "11 11 11", ["3617"] = "11 11 1", ["3618"] = "11 11 1", ["3621"] = "11 11 11", ["3622"] = "11 11 11", ["3623"] = "11 11 11", ["3624"] = "11 11 11", ["3625"] = "11 11 11", ["3626"] = "11 11 11", ["3627"] = "11 11 1", ["3628"] = "11 11 1", ["3631"] = "11 11 11", ["3632"] = "11 11 11", ["3633"] = "11 11 11", ["3634"] = "11 11 11", ["3635"] = "11 11 11", ["3636"] = "11 11 11", ["3637"] = "11 11 1", ["3638"] = "11 11 1", ["3641"] = "11 11 11", ["3642"] = "11 11 11", ["3643"] = "11 11 11", ["3644"] = "11 11 11", ["3645"] = "11 11 11", ["3646"] = "11 11 11", ["3647"] = "11 11 1", ["3648"] = "11 11 1", ["3651"] = "11 11 11", ["3652"] = "11 11 11", ["3653"] = "11 11 11", ["3654"] = "11 11 11", ["3655"] = "11 11 11", ["3656"] = "11 11 11", ["3657"] = "11 11 1", ["3658"] = "11 11 1", ["3661"] = "11 11 11", ["3662"] = "11 11 11", ["3663"] = "11 11 11", ["3664"] = "11 11 11", ["3665"] = "11 11 11", ["3666"] = "11 11 11", ["3667"] = "11 11 1", ["3668"] = "11 11 1", ["3671"] = "11 1 11", ["3672"] = "11 1 11", ["3673"] = "11 1 11", ["3674"] = "11 1 11", ["3675"] = "11 1 11", ["3676"] = "11 1 11", ["3677"] = "11 1 1", ["3678"] = "11 1 1", ["3681"] = "11 1 11", ["3682"] = "11 1 11", ["3683"] = "11 1 11", ["3684"] = "11 1 11", ["3685"] = "11 1 11", ["3686"] = "11 1 11", ["3687"] = "11 1 1", ["3688"] = "11 1 1", ["3711"] = "3 55 52", ["3712"] = "3 55 52", ["3713"] = "3 55 52", ["3714"] = "3 55 52", ["3715"] = "3 55 52", ["3716"] = "3 55 52", ["3717"] = "3 55 54", ["3718"] = "3 55 54", ["3721"] = "3 55 52", ["3722"] = "3 55 52", ["3723"] = "3 55 52", ["3724"] = "3 55 52", ["3725"] = "3 55 52", ["3726"] = "3 55 52", ["3727"] = "3 55 54", ["3728"] = "3 55 54", ["3731"] = "3 55 52", ["3732"] = "3 55 52", ["3733"] = "3 55 52", ["3734"] = "3 55 52", ["3735"] = "3 55 52", ["3736"] = "3 55 52", ["3737"] = "3 55 54", ["3738"] = "3 55 54", ["3741"] = "3 55 52", ["3742"] = "3 55 52", ["3743"] = "3 55 52", ["3744"] = "3 55 52", ["3745"] = "3 55 52", ["3746"] = "3 55 52", ["3747"] = "3 55 54", ["3748"] = "3 55 54", ["3751"] = "3 55 52", ["3752"] = "3 55 52", ["3753"] = "3 55 52", ["3754"] = "3 55 52", ["3755"] = "3 55 52", ["3756"] = "3 55 52", ["3757"] = "3 55 54", ["3758"] = "3 55 54", ["3761"] = "3 55 52", ["3762"] = "3 55 52", ["3763"] = "3 55 52", ["3764"] = "3 55 52", ["3765"] = "3 55 52", ["3766"] = "3 55 52", ["3767"] = "3 55 54", ["3768"] = "3 55 54", ["3771"] = "3 5 52", ["3772"] = "3 5 52", ["3773"] = "3 5 52", ["3774"] = "3 5 52", ["3775"] = "3 5 52", ["3776"] = "3 5 52", ["3777"] = "3 5 54", ["3778"] = "3 5 54", ["3781"] = "3 5 52", ["3782"] = "3 5 52", ["3783"] = "3 5 52", ["3784"] = "3 5 52", ["3785"] = "3 5 52", ["3786"] = "3 5 52", ["3787"] = "3 5 54", ["3788"] = "3 5 54", ["3811"] = "1 55 52", ["3812"] = "1 55 52", ["3813"] = "1 55 52", ["3814"] = "1 55 52", ["3815"] = "1 55 52", ["3816"] = "1 55 52", ["3817"] = "1 55 54", ["3818"] = "1 55 54", ["3821"] = "1 55 52", ["3822"] = "1 55 52", ["3823"] = "1 55 52", ["3824"] = "1 55 52", ["3825"] = "1 55 52", ["3826"] = "1 55 52", ["3827"] = "1 55 54", ["3828"] = "1 55 54", ["3831"] = "1 55 52", ["3832"] = "1 55 52", ["3833"] = "1 55 52", ["3834"] = "1 55 52", ["3835"] = "1 55 52", ["3836"] = "1 55 52", ["3837"] = "1 55 54", ["3838"] = "1 55 54", ["3841"] = "1 55 52", ["3842"] = "1 55 52", ["3843"] = "1 55 52", ["3844"] = "1 55 52", ["3845"] = "1 55 52", ["3846"] = "1 55 52", ["3847"] = "1 55 54", ["3848"] = "1 55 54", ["3851"] = "1 55 52", ["3852"] = "1 55 52", ["3853"] = "1 55 52", ["3854"] = "1 55 52", ["3855"] = "1 55 52", ["3856"] = "1 55 52", ["3857"] = "1 55 54", ["3858"] = "1 55 54", ["3861"] = "1 55 52", ["3862"] = "1 55 52", ["3863"] = "1 55 52", ["3864"] = "1 55 52", ["3865"] = "1 55 52", ["3866"] = "1 55 52", ["3867"] = "1 55 54", ["3868"] = "1 55 54", ["3871"] = "1 5 52", ["3872"] = "1 5 52", ["3873"] = "1 5 52", ["3874"] = "1 5 52", ["3875"] = "1 5 52", ["3876"] = "1 5 52", ["3877"] = "1 5 54", ["3878"] = "1 5 54", ["3881"] = "1 5 52", ["3882"] = "1 5 52", ["3883"] = "1 5 52", ["3884"] = "1 5 52", ["3885"] = "1 5 52", ["3886"] = "1 5 52", ["3887"] = "1 5 54", ["3888"] = "1 5 54", --LPS for numbers ["21N1"] = "33 52", ["21N2"] = "33 52", ["21N3"] = "33 55", ["21N4"] = "33 55", ["21N5"] = "33 55", ["21N6"] = "33 55", ["21N7"] = "33 55", ["21N8"] = "33 55", ["22N1"] = "11 52", ["22N2"] = "11 52", ["22N3"] = "11 55", ["22N4"] = "11 55", ["22N5"] = "11 55", ["22N6"] = "11 55", ["22N7"] = "11 55", ["22N8"] = "11 55", ["23N1"] = "55 52", ["23N2"] = "55 52", ["23N3"] = "55 55", ["23N4"] = "55 55", ["23N5"] = "55 55", ["23N6"] = "55 55", ["23N7"] = "55 55", ["23N8"] = "55 55", ["24N1"] = "115 52", ["24N2"] = "115 52", ["24N3"] = "115 55", ["24N4"] = "115 55", ["24N5"] = "115 55", ["24N6"] = "115 55", ["24N7"] = "115 55", ["24N8"] = "115 55", ["25N1"] = "55 52", ["25N2"] = "55 52", ["25N3"] = "55 55", ["25N4"] = "55 55", ["25N5"] = "55 55", ["25N6"] = "55 55", ["25N7"] = "55 55", ["25N8"] = "55 55", ["26N1"] = "11 52", ["26N2"] = "11 52", ["26N3"] = "11 55", ["26N4"] = "11 55", ["26N5"] = "11 55", ["26N6"] = "11 55", ["26N7"] = "11 55", ["26N8"] = "11 55", ["27N1"] = "33 52", ["27N2"] = "33 52", ["27N3"] = "33 55", ["27N4"] = "33 55", ["27N5"] = "33 55", ["27N6"] = "33 55", ["27N7"] = "33 55", ["27N8"] = "33 55", ["28N1"] = "11 52", ["28N2"] = "11 52", ["28N3"] = "11 55", ["28N4"] = "11 55", ["28N5"] = "11 55", ["28N6"] = "11 55", ["28N7"] = "11 55", ["28N8"] = "11 55", ["31N1"] = "33 52 55", ["31N2"] = "33 52 55", ["31N3"] = "33 55 55", ["31N4"] = "33 55 55", ["31N5"] = "33 55 55", ["31N6"] = "33 55 55", ["31N7"] = "33 55 55", ["31N8"] = "33 55 55", ["32N1"] = "11 52 55", ["32N2"] = "11 52 55", ["32N3"] = "11 55 55", ["32N4"] = "11 55 55", ["32N5"] = "11 55 55", ["32N6"] = "11 55 55", ["32N7"] = "11 55 55", ["32N8"] = "11 55 55", ["33N1"] = "55 52 55", ["33N2"] = "55 52 55", ["33N3"] = "55 55 55", ["33N4"] = "55 55 55", ["33N5"] = "55 55 55", ["33N6"] = "55 55 55", ["33N7"] = "55 55 55", ["33N8"] = "55 55 55", ["34N1"] = "115 52 55", ["34N2"] = "115 52 55", ["34N3"] = "115 55 55", ["34N4"] = "115 55 55", ["34N5"] = "115 55 55", ["34N6"] = "115 55 55", ["34N7"] = "115 55 55", ["34N8"] = "115 55 55", ["35N1"] = "55 52 55", ["35N2"] = "55 52 55", ["35N3"] = "55 55 55", ["35N4"] = "55 55 55", ["35N5"] = "55 55 55", ["35N6"] = "55 55 55", ["35N7"] = "55 55 55", ["35N8"] = "55 55 55", ["36N1"] = "11 52 55", ["36N2"] = "11 52 55", ["36N3"] = "11 55 55", ["36N4"] = "11 55 55", ["36N5"] = "11 55 55", ["36N6"] = "11 55 55", ["36N7"] = "11 55 55", ["36N8"] = "11 55 55", ["37N1"] = "33 52 55", ["37N2"] = "33 52 55", ["37N3"] = "33 55 55", ["37N4"] = "33 55 55", ["37N5"] = "33 55 55", ["37N6"] = "33 55 55", ["37N7"] = "33 55 55", ["37N8"] = "33 55 55", ["38N1"] = "11 52 55", ["38N2"] = "11 52 55", ["38N3"] = "11 55 55", ["38N4"] = "11 55 55", ["38N5"] = "11 55 55", ["38N6"] = "11 55 55", ["38N7"] = "11 55 55", ["38N8"] = "11 55 55", --LPS for classifiers ["211C"] = "33 55", ["212C"] = "33 55", ["213C"] = "33 55", ["214C"] = "33 55", ["215C"] = "33 55", ["216C"] = "33 55", ["217C"] = "33 55", ["218C"] = "33 55", ["221C"] = "11 55", ["222C"] = "11 55", ["223C"] = "11 55", ["224C"] = "11 55", ["225C"] = "11 55", ["226C"] = "11 55", ["227C"] = "11 55", ["228C"] = "11 55", ["231C"] = "55 55", ["232C"] = "55 55", ["233C"] = "55 55", ["234C"] = "55 55", ["235C"] = "55 55", ["236C"] = "55 55", ["237C"] = "55 55", ["238C"] = "55 55", ["241C"] = "115 55", ["242C"] = "115 55", ["243C"] = "115 55", ["244C"] = "115 55", ["245C"] = "115 55", ["246C"] = "115 55", ["247C"] = "115 55", ["248C"] = "115 55", ["251C"] = "55 55", ["255C"] = "55 55", ["253C"] = "55 55", ["254C"] = "55 55", ["255C"] = "55 55", ["256C"] = "55 55", ["257C"] = "55 55", ["258C"] = "55 55", ["261C"] = "11 55", ["262C"] = "11 55", ["263C"] = "11 55", ["264C"] = "11 55", ["265C"] = "11 55", ["266C"] = "11 55", ["267C"] = "11 55", ["268C"] = "11 55", ["271C"] = "33 55", ["272C"] = "33 55", ["273C"] = "33 55", ["274C"] = "33 55", ["275C"] = "33 55", ["276C"] = "33 55", ["277C"] = "33 55", ["278C"] = "33 55", ["281C"] = "11 55", ["282C"] = "11 55", ["283C"] = "11 55", ["284C"] = "11 55", ["285C"] = "11 55", ["286C"] = "11 55", ["287C"] = "11 55", ["288C"] = "11 55", ["311C"] = "33 55 55", ["312C"] = "33 55 55", ["313C"] = "33 55 55", ["314C"] = "33 55 55", ["315C"] = "33 55 55", ["316C"] = "33 55 55", ["317C"] = "33 55 55", ["318C"] = "33 55 55", ["321C"] = "11 55 55", ["322C"] = "11 55 55", ["323C"] = "11 55 55", ["324C"] = "11 55 55", ["325C"] = "11 55 55", ["326C"] = "11 55 55", ["327C"] = "11 55 55", ["328C"] = "11 55 55", ["331C"] = "55 55 55", ["332C"] = "55 55 55", ["333C"] = "55 55 55", ["334C"] = "55 55 55", ["335C"] = "55 55 55", ["336C"] = "55 55 55", ["337C"] = "55 55 55", ["338C"] = "55 55 55", ["341C"] = "115 55 55", ["342C"] = "115 55 55", ["343C"] = "115 55 55", ["344C"] = "115 55 55", ["345C"] = "115 55 55", ["346C"] = "115 55 55", ["347C"] = "115 55 55", ["348C"] = "115 55 55", ["351C"] = "55 55 55", ["355C"] = "55 55 55", ["353C"] = "55 55 55", ["354C"] = "55 55 55", ["355C"] = "55 55 55", ["356C"] = "55 55 55", ["357C"] = "55 55 55", ["358C"] = "55 55 55", ["361C"] = "11 55 55", ["362C"] = "11 55 55", ["363C"] = "11 55 55", ["364C"] = "11 55 55", ["365C"] = "11 55 55", ["366C"] = "11 55 55", ["367C"] = "11 55 55", ["368C"] = "11 55 55", ["371C"] = "33 55 55", ["372C"] = "33 55 55", ["373C"] = "33 55 55", ["374C"] = "33 55 55", ["375C"] = "33 55 55", ["376C"] = "33 55 55", ["377C"] = "33 55 55", ["378C"] = "33 55 55", ["381C"] = "11 55 55", ["382C"] = "11 55 55", ["383C"] = "11 55 55", ["384C"] = "11 55 55", ["385C"] = "11 55 55", ["386C"] = "11 55 55", ["387C"] = "11 55 55", ["388C"] = "11 55 55", --verb-SFP disyllabic ("單音詞和語助詞") ["211P"] = "33 52", ["212P"] = "55 52", ["214P"] = "55 52", ["215P"] = "33 55", ["216P"] = "33 55", ["217P"] = "55 54", ["218P"] = "55 54", ["221P"] = "11 52", ["222P"] = "115 52", ["224P"] = "115 52", ["225P"] = "11 55", ["226P"] = "11 55", ["227P"] = "115 54", ["228P"] = "115 54", ["231P"] = "335 52", ["232P"] = "33 52", ["234P"] = "33 55", ["235P"] = "335 52", ["236P"] = "335 52", ["237P"] = "33 55", ["238P"] = "33 55", ["241P"] = "115 52", ["242P"] = "11 52", ["244P"] = "11 55", ["245P"] = "115 52", ["246P"] = "115 52", ["247P"] = "11 55", ["248P"] = "11 55", ["251P"] = "33 55", ["252P"] = "33 33", ["254P"] = "33 33", ["255P"] = "33 33", ["256P"] = "33 33", ["257P"] = "33 33", ["258P"] = "33 33", ["261P"] = "11 55", ["262P"] = "11 11", ["264P"] = "11 11", ["265P"] = "11 11", ["266P"] = "11 11", ["267P"] = "11 11", ["268P"] = "11 11", ["271P"] = "33 55", ["272P"] = "33 52", ["274P"] = "33 55", ["275P"] = "33 55", ["276P"] = "33 55", ["277P"] = "33 55", ["278P"] = "33 55", ["281P"] = "11 55", ["282P"] = "11 52", ["284P"] = "11 55", ["285P"] = "11 55", ["286P"] = "11 55", ["287P"] = "11 55", ["288P"] = "11 55", --verb object RPS ("述賓") ["211O"] = "33 52", ["212O"] = "55 231", ["213O"] = "55 335", ["214O"] = "55 113", ["215O"] = "33 55", ["216O"] = "55 11", ["217O"] = "55 45", ["218O"] = "55 23", ["221O"] = "11 52", ["222O"] = "55 231", ["223O"] = "55 335", ["224O"] = "55 113", ["225O"] = "11 55", ["226O"] = "55 11", ["227O"] = "55 45", ["228O"] = "55 23", ["231O"] = "33 52", ["232O"] = "55 231", ["233O"] = "55 335", ["234O"] = "55 113", ["235O"] = "33 55", ["236O"] = "55 11", ["237O"] = "55 45", ["238O"] = "55 23", ["241O"] = "11 52", ["242O"] = "55 231", ["243O"] = "55 335", ["244O"] = "55 113", ["245O"] = "11 55", ["246O"] = "55 11", ["247O"] = "55 45", ["248O"] = "55 23", ["251O"] = "33 52", ["252O"] = "55 231", ["253O"] = "55 335", ["254O"] = "55 113", ["255O"] = "33 55", ["256O"] = "55 11", ["257O"] = "55 45", ["258O"] = "55 23", ["261O"] = "11 52", ["262O"] = "55 231", ["263O"] = "55 335", ["264O"] = "55 113", ["265O"] = "11 55", ["266O"] = "55 11", ["267O"] = "55 45", ["268O"] = "55 23", ["271O"] = "33 52", ["272O"] = "55 231", ["273O"] = "55 335", ["274O"] = "55 113", ["275O"] = "33 55", ["276O"] = "55 11", ["277O"] = "55 45", ["278O"] = "55 23", ["281O"] = "11 52", ["282O"] = "55 231", ["283O"] = "55 335", ["284O"] = "55 113", ["285O"] = "11 55", ["286O"] = "55 11", ["287O"] = "55 45", ["288O"] = "55 23", --noun verb/adjective RPS ("主謂") ["1A"] = "55", ["2A"] = "115", ["3A"] = "335", ["4A"] = "55", ["5A"] = "55", ["6A"] = "55", ["7A"] = "55", ["8A"] = "25" }, -- [""] = "", ['cx'] = { ["11"] = "324", ["12"] = "14", ["15"] = "43", ["17"] = "45", ["18"] = "31", ["211"] = "42 334", ["212"] = "42 324", ["213"] = "45 41", ["214"] = "45 41", ["215"] = "45 41", ["216"] = "45 51", ["217"] = "42 54", ["218"] = "42 34", ["221"] = "32 334", ["222"] = "32 224", ["223"] = "35 41", ["224"] = "35 51", ["225"] = "35 41", ["226"] = "35 51", ["227"] = "32 54", ["228"] = "32 34", ["231"] = "42 51", ["232"] = "42 451", ["233"] = "42 51", ["234"] = "42 451", ["235"] = "42 51", ["236"] = "42 451", ["237"] = "42 54", ["238"] = "42 34", ["241"] = "32 51", ["242"] = "32 451", ["243"] = "24 44", ["244"] = "24 44", ["245"] = "24 44", ["246"] = "24 44", ["247"] = "24 55", ["248"] = "24 55", ["251"] = "33 31", ["252"] = "33 31", ["253"] = "33 31", ["254"] = "33 31", ["255"] = "33 31", ["256"] = "33 31", ["257"] = "44 54", ["258"] = "33 343", ["261"] = "21 44", ["262"] = "21 344", ["263"] = "21 44", ["264"] = "21 344", ["265"] = "21 44", ["266"] = "21 344", ["267"] = "31 55", ["268"] = "32 55", ["271"] = "44 31", ["272"] = "44 31", ["273"] = "44 31", ["274"] = "44 31", ["275"] = "44 31", ["276"] = "44 31", ["277"] = "44 32", ["278"] = "44 32", ["281"] = "32 51", ["282"] = "32 451", ["283"] = "32 44", ["284"] = "32 344", ["285"] = "32 44", ["286"] = "32 344", ["287"] = "32 55", ["288"] = "32 35", }, ['nb'] = { ["10"] = "", ["11"] = "52", ["12"] = "313", ["13"] = "325", ["14"] = "113", ["15"] = "55", ["16"] = "113", ["17"] = "55", ["18"] = "12", ["21"] = "33 51", ["22"] = "22 51", ["23"] = "33 35", ["24"] = "24 33", ["25"] = "55 33", ["26"] = "22 44", ["27"] = "55 33", ["28"] = "22 35", ["210"] = "33 44", ["240"] = "23 44", ["260"] = "22 35", ["270"] = "33 34", ["31"] = "33 55 31", ["32"] = "22 44 55", ["33"] = "33 44 55", ["34"] = "22 33 31", ["35"] = "55 33 31", ["36"] = "22 55 31", ["37"] = "55 33 31", ["38"] = "22 34 51", --RPS ["s"] = "21", ["multiple"] = "" }, ['zs'] = { ["10"] = "", ["11"] = "53", ["12"] = "22", ["13"] = "35", ["14"] = "24", ["15"] = "44", ["16"] = "13", ["17"] = "55", ["18"] = "12", } } return data 24ndtjred3j8ga5waeuvn6gtu4jzsr1 234947 234946 2026-05-26T07:14:39Z Lee 19 [[:en:Module:wuu-pron/data]] වෙතින් එක් සංශෝධනයක් 234946 Scribunto text/plain local data = {} --[[ sh - Shanghai 上海市區方言誌 jd - Jiading 嘉定方言研究 sj - Songjiang 松江方言研究 cm - Chongming 崇明方言研究 cs - Chuansha 上海地區方言調查研究 + 川沙方言同音字表 + 川沙縣誌 sz - Suzhou 蘇州方言語音研究 ks - Kunshan 吳氏:崑山方言研究 + 當代吳語研究 yx - Yixing 宜興方言同音字彙 + 宜興縣誌 cz - Changzhou 當代吳語研究 jj - Jingjiang 靖江縣誌 jx - Jiaxing 當代吳語研究 tx - Tongxiang 桐鄉方言誌 hn - Haining (Xiashi) 海寧方言誌 hy - Haiyan 海鹽方言誌 dq - Deqing 德清縣誌 + 德清話聲韻調之研究 hz - Hangzhou 杭州方言音檔 + 杭州方言の聲調 xs - Xiaoshan 蕭山方言同音字彙 + 蕭山方言研究 + 蕭山市志 fy - Fuyang 富陽方言研究 sx - Shaoxing 紹興方言研究 cx - Cixi 慈溪市誌 + 浙江慈溪方言聲調實驗研究 (RPS understanding needed) nb - Ningbo 當代吳語研究 zs - Zhoushan 舟山方言兩字組的連讀變調 + 舟山方言研究 + 舟山方言 (samdhi understanding needed) ]] data.ipa_final = { ['sh'] = { ["a"] = "a", ["o"] = "o", ["au"] = "ɔ", ["eu"] = "ɤ", ["e"] = "e", ["oe"] = "ø", ["i"] = "i", ["ia"] = "ia", ["io"] = "io", ["iau"] = "iɔ", ["ieu"] = "iɤ", ["ie"] = "ie", ["u"] = "u", ["ua"] = "ua", ["ue"] = "ue", ["uoe"] = "uø", ["iu"] = "y", ["ioe"] = "yø", ["an"] = "ã", ["aon"] = "ɑ̃", ["en"] = "ən", ["on"] = "oŋ", ["aq"] = "aʔ", ["oq"] = "oʔ", ["eq"] = "əʔ", ["ian"] = "iã", ["iaon"] = "iɑ̃", ["in"] = "in", ["ion"] = "ioŋ", ["iaq"] = "iaʔ", ["ioq"] = "ioʔ", ["iq"] = "iɪʔ", ["uan"] = "uã", ["uaon"] = "uɑ̃", ["uen"] = "uən", ["uaq"] = "uaʔ", ["ueq"] = "uəʔ", ["iun"] = "yn", ["iuq"] = "yɪʔ", ["er"] = "əl", ["y"] = "z̩" }, ['jd'] = { ["a"] = "a", ["o"] = "o", ["au"] = "ɔ", ["ae"] = "e", ["oe"] = "ø", ["i"] = "i", ["ia"] = "ia", ["iae"] = "ie̞", ["io"] = "iu", ["iau"] = "iɔ", ["ie"] = "ɪ", ["u"] = "u", ["ua"] = "ua", ["uae"] = "ue̞", ["ue"] = "uɪ", ["iu"] = "y", ["ioe"] = "yø", ["an"] = "ã", ["aon"] = "ɑ̃", ["en"] = "əŋ", ["on"] = "oŋ", ["aq"] = "aʔ", ["aoq"] = "ɔʔ", ["oq"] = "oʔ", ["eq"] = "əʔ", ["ian"] = "iã", ["iaon"] = "iɑ̃", ["in"] = "iŋ", ["ion"] = "ioŋ", ["iaq"] = "iaʔ", ["iaoq"] = "iɔʔ", ["ioq"] = "ioʔ", ["iq"] = "iɪʔ", ["uan"] = "uã", ["uaon"] = "uɑ̃", ["uen"] = "uəŋ", ["uaq"] = "uaʔ", ["uaoq"] = "uɔʔ", ["uoq"] = "uoʔ", ["ueq"] = "uəʔ", ["iun"] = "yŋ", ["er"] = "øl", ["y"] = "z̩", ["yu"] = "z̩ʷ" }, ['sj'] = { ["a"] = "ɑ", ["ae"] = "ɛ", ["e"] = "e", ["oe"] = "ø", ["au"] = "ɔ", ["o"] = "o", ["eu"] = "ɯ", ["i"] = "i", ["ia"] = "iɑ", ["iae"] = "iɛ", ["ie"] = "ie", ["iau"] = "iɔ", ["io"] = "io", ["iu"] = "iu", ["ieu"] = "iɯ", ["u"] = "u", ["ua"] = "uɑ", ["uae"] = "uɛ", ["ue"] = "ue", ["uiau"] = "uiɔ", --uiau: necessary? ["iu"] = "y", ["ioe"] = "yø", ["an"] = "æ̃", ["aon"] = "ɒ̃", ["en"] = "əŋ", ["on"] = "oŋ", ["ian"] = "iæ̃", ["iaon"] = "iɒ̃", ["in"] = "iŋ", ["ion"] = "ioŋ", ["uan"] = "uæ̃", ["uaon"] = "uɒ̃", ["uen"] = "uəŋ", ["iun"] = "yœ̃", ["aq"] = "aʔ", ["aeq"] = "æʔ", ["oeq"] = "œʔ", ["aoq"] = "ɒʔ", ["eoq"] = "ʌʔ", ["eq"] = "əʔ", ["oq"] = "oʔ", ["iaq"] = "iaʔ", ["iaeq"] = "iæʔ", ["iaoq"] = "iɒʔ", ["ieq"] = "iʌʔ", ["iq"] = "iɪʔ", ["ioq"] = "ioʔ", ["uaq"] = "uaʔ", ["uaeq"] = "uæʔ", ["uaoq"] = "uɒʔ", ["ueq"] = "uəʔ", ["iuq"] = "yœʔ", ["er"] = "əl", ["y"] = "z̩" }, ['cm'] = { ["a"] = "ɑ", ["e"] = "e", ["oe"] = "ø", ["ai"] = "ɛ", ["ae"] = "æ", ["eu"] = "ɵ", ["au"] = "ɔ", ["o"] = "o", ["ei"] = "ei", ["i"] = "i", ["ia"] = "iɑ", ["ie"] = "ie", ["iai"] = "iɛ", ["iae"] = "iæ", ["ieu"] = "iɵ", ["iau"] = "iɔ", ["io"] = "io", ["u"] = "u", ["ua"] = "uɑ", ["ue"] = "ue", ["uai"] = "uɛ", ["uae"] = "uæ", ["uo"] = "uo", ["uei"] = "uei", ["iu"] = "y", ["ioe"] = "yø", ["en"] = "ən", ["an"] = "ã", ["aon"] = "ɑ̃", ["on"] = "oŋ", ["in"] = "in", ["ian"] = "iã", ["iaon"] = "iɑ̃", ["uen"] = "uən", ["uan"] = "uã", ["uaon"] = "uɑ̃", ["iun"] = "yn", ["ion"] = "yoŋ", --missing ɔ~, iɔ~ ["aeq"] = "æʔ", ["aq"] = "ɑʔ", ["eq"] = "əʔ", ["oeq"] = "øʔ", ["oq"] = "oʔ", ["iaq"] = "iɑʔ", ["iq"] = "iəʔ", ["uaeq"] = "uæʔ", ["uaq"] = "uɑʔ", ["ueq"] = "uəʔ", ["uoq"] = "uoʔ", ["ioeq"] = "yøʔ", ["ioq"] = "yoʔ", ["er"] = "əl", ["y"] = "z̩", -- only used in mutations: ["ueu"] = "uɵ", ["uon"] = "uoŋ", ["ui"] = "ui" }, ['cs'] = { -- 與學堂一致:io = iau, uo = o; uoeq, ieon, eoq 皆存 ["a"] = "a", ["o"] = "o", ["au"] = "ɔ", ["eu"] = "ɤ", ["e"] = "e", ["ae"] = "ɛ", ["oe"] = "ø", ["i"] = "i", ["iuu"] = "iu", ["ia"] = "ia", ["iau"] = "iɔ", ["ieu"] = "iɤ", ["ioe"] = "yø", ["u"] = "u", ["ua"] = "ua", ["ue"] = "ue", ["uae"] = "uɛ", ["iu"] = "y", ["an"] = "ã", ["aon"] = "ɑ", ["en"] = "ən", ["on"] = "oŋ", ["ian"] = "iã", ["iaon"] = "iɑ", ["in"] = "in", ["ieon"] = "iʌŋ", ["ion"] = "ioŋ", ["uan"] = "uã", ["uaon"] = "uɑ", ["uen"] = "uən", ["iun"] = "yn", ["aq"] = "aʔ", ["aeq"] = "æʔ", ["oeq"] = "œʔ", ["eq"] = "əʔ", ["eoq"] = "ʌʔ", ["oq"] = "oʔ", ["aoq"] = "ɔʔ", ["iaq"] = "iaʔ", ["iaeq"] = "iæʔ", ["ioeq"] = "yœʔ", ["iq"] = "iɪʔ", ["ieq"] = "iʌʔ", ["ioq"] = "ioʔ", ["iaoq"] = "iɔʔ", ["uaq"] = "uaʔ", ["uaeq"] = "uæʔ", ["uoeq"] = "uœʔ", ["ueq"] = "uəʔ", ["uaoq"] = "uɔʔ", ["er"] = "əl", ["y"] = "z̩", }, ['sz'] = { ["a"] = "ɑ", ["o"] = "o", ["au"] = "æ", ["eu"] = "øy", ["e"] = "e", ["oe"] = "ø", ["ou"] = "əu", ["i"] = "i", ["ia"] = "iɑ", ["io"] = "io", ["iau"] = "iæ", ["ieu"] = "ʏ", ["ioe"] = "iø", ["ie"] = "ɪ", ["u"] = "u", ["ua"] = "uɑ", ["ue"] = "ue", ["uoe"] = "uø", ["iu"] = "y", ["ioe"] = "yø", ["an"] = "ã", ["aon"] = "ɑ̃", ["en"] = "ən", ["on"] = "oŋ", ["aq"] = "ɑʔ", ["oq"] = "oʔ", ["eq"] = "əʔ", ["aeq"] = "aʔ", ["ian"] = "iã", ["iaon"] = "iɑ̃", ["in"] = "in", ["ion"] = "ioŋ", ["iaq"] = "iɑʔ", ["ioq"] = "ioʔ", ["iq"] = "iɪʔ", ["iaeq"] = "iaʔ", ["uan"] = "uã", ["uaon"] = "uɑ̃", ["uen"] = "uən", ["ueq"] = "uəʔ", ["uaeq"] = "uaʔ", ["iun"] = "yn", ["iuq"] = "yəʔ", ["iuaeq"] = "yaʔ", ["er"] = "əl", ["y"] = "z̩", ["yu"] = "z̩ʷ" }, ['ks'] = { ["a"] = "a", ["au"] = "ɔ", ["ae"] = "ɛ", ["oe"] = "ø", ["o"] = "o", ["e"] = "ei", ["ou"] = "əu", ["i"] = "i", ["ia"] = "ia", ["iau"] = "iɔ", ["ie"] = "ɪ", ["ioe"] = "iø", ["u"] = "u", ["ua"] = "ua", ["uae"] = "uɛ", ["uoe"] = "uø", ["ue"] = "uei", ["iu"] = "y", ["en"] = "ən", ["an"] = "ã", ["on"] = "oŋ", ["in"] = "in", ["ian"] = "iã", ["ion"] = "ioŋ", ["uen"] = "uən", ["uan"] = "uã", ["iun"] = "yn", ["eq"] = "əʔ", ["aq"] = "aʔ", ["oq"] = "oʔ", ["iq"] = "iəʔ", ["iaq"] = "iaʔ", ["ioq"] = "ioʔ", ["ueq"] = "uəʔ", ["uaq"] = "uaʔ", ["iuq"] = "yəʔ", ["er"] = "əl", ["y"] = "z̩", ["yu"] = "z̩ʷ" }, ['yx'] = { ["a"] = "a", ["o"] = "o", ["ou"] = "ʊ", ["ai"] = "ɛ", ["e"] = "ə", ["e"] = "ə", ["au"] = "au", ["eu"] = "əu", ["i"] = "i", ["ia"] = "ia", ["io"] = "io", ["ie"] = "iɪ", ["iau"] = "iau", ["ieu"] = "iəu", ["u"] = "u", ["ua"] = "ua", ["uai"] = "uɛ", ["ue"] = "uə", ["iu"] = "y", ["an"] = "aŋ", ["en"] = "ən", ["on"] = "oŋ", ["ian"] = "iaŋ", ["in"] = "in", ["ion"] = "ioŋ", ["uan"] = "uaŋ", ["uen"] = "uən", ["iun"] = "yən", ["aq"] = "aʔ", ["oq"] = "oʔ", ["eq"] = "əʔ", ["iaq"] = "iaʔ", ["ioq"] = "ioʔ", ["iq"] = "iəʔ", ["uaq"] = "uaʔ", ["ueq"] = "uəʔ", ["iuq"] = "yəʔ", ["er"] = "əl", ["y"] = "z̩", }, ['cz'] = { ["a"] = "a", ["ae"] = "ɛ", ["oe"] = "ɵ", ["o"] = "o", ["ie"] = "ɪ", ["ai"] = "ai", ["ei"] = "ei", ["au"] = "aɯ", ["ou"] = "ɤɯ", ["i"] = "i", ["ia"] = "ia", ["ioe"] = "iɵ", ["io"] = "io", ["iau"] = "iaɯ", ["iou"] = "iɤɯ", ["u"] = "u", ["ua"] = "ua", ["uae"] = "uɛ", ["uoe"] = "uɵ", ["uai"] = "uai", ["iu"] = "y", ["an"] = "aŋ", ["en"] = "əŋ", ["on"] = "oŋ", ["ian"] = "iaŋ", ["in"] = "iŋ", ["ion"] = "ioŋ", ["uan"] = "uaŋ", ["uen"] = "uəŋ", ["iun"] = "yiŋ", ["aq"] = "aʔ", ["eq"] = "əʔ", ["oq"] = "oʔ", ["iaq"] = "iaʔ", ["iq"] = "iɪʔ", ["ioq"] = "ioʔ", ["ueq"] = "uəʔ", ["iuq"] = "yeʔ", ["er"] = "əl", ["y"] = "z̩", ["yu"] = "z̩ʷ" }, ['jj'] = { ["a"] = "a", ["au"] = "ɔ", ["ai"] = "ɛ", ["ou"] = "ə", ["o"] = "o", ["e"] = "e", ["eu"] = "ʏ", ["i"] = "i", ["ia"] = "ia", ["iau"] = "iɔ", ["iai"] = "iɛ", ["ieu"] = "iʏ", ["u"] = "u", ["ua"] = "ua", ["uai"] = "uɛ", ["ue"] = "ue", ["iu"] = "y", ["iua"] = "ya", ["iuai"] = "yɛ", ["iou"] = "yə", ["iue"] = "ye", ["aen"] = "ã", ["oen"] = "ũ", ["en"] = "əŋ", ["on"] = "oŋ", ["an"] = "aŋ", ["ienn"] = "iɪ̃", ["iaen"] = "iã", ["ioen"] = "iũ", ["in"] = "iŋ", ["ien"] = "iəŋ", ["ion"] = "ioŋ", ["ian"] = "iaŋ", ["uaen"] = "uã", ["uen"] = "uəŋ", ["uan"] = "uaŋ", ["iun"] = "yəŋ", ["iuan"] = "yaŋ", ["aq"] = "aʔ", ["oq"] = "ɔʔ", ["eq"] = "əʔ", ["oeq"] = "oʔ", ["iq"] = "ieʔ", ["iaq"] = "iaʔ", ["ioq"] = "iɔʔ", ["ieq"] = "iəʔ", ["uaq"] = "uaʔ", ["ueq"] = "uəʔ", ["iuaq"] = "yaʔ", ["ioeq"] = "yoʔ", ["er"] = "er", ["y"] = "z̩", }, ['jx'] = { ["a"] = "a", ["ae"] = "ɛ", ["e"] = "e", ["au"] = "ɔ", ["oe"] = "ɤə", ["o"] = "o", ["i"] = "i", ["ia"] = "ia", ["iae"] = "iɛ", ["ie"] = "ie", ["iau"] = "iɔ", ["ieu"] = "iəu", ["u"] = "u", ["ua"] = "ua", ["uae"] = "uɛ", ["ue"] = "ue", ["uoe"] = "uɤə", ["iu"] = "y", ["ioe"] = "yɤə", ["en"] = "ən", ["an"] = "ã", ["aon"] = "ɑ̃", ["on"] = "oŋ", ["in"] = "in", ["ian"] = "iã", ["iaon"] = "iɑ̃", ["ion"] = "ioŋ", ["uen"] = "un", ["yan"] = "uã", ["uaon"] = "uɑ̃", ["iun"] = "yn", ["eq"] = "əʔ", ["aq"] = "aʔ", ["oq"] = "oʔ", ["iq"] = "iɪʔ", ["iaq"] = "iaʔ", ["ioq"] = "ioʔ", ["ueq"] = "uəʔ", ["uaq"] = "uaʔ", ["iuq"] = "yəʔ", ["er"] = "l̩", ["y"] = "z̩", ["yu"] = "z̩ʷ" }, ['tx'] = { ["a"] = "a", ["ae"] = "æ", ["e"] = "ɛ", ["au"] = "ɔ", ["o"] = "o", ["eu"] = "əɯ", ["i"] = "i", ["ia"] = "ia", ["iae"] = "iæ", ["ie"] = "iɛ", ["iau"] = "iɔ", ["ieu"] = "iəɯ", ["u"] = "u", ["ua"] = "ua", ["uae"] = "uæ", ["ui"] = "ui", ["ue"] = "uɛ", ["an"] = "ã", ["aon"] = "ɔ̃", ["en"] = "ən", ["on"] = "õ", ["ian"] = "iã", ["iaon"] = "iɔ̃", ["in"] = "in", ["ion"] = "ion", ["uan"] = "uã", ["uaon"] = "uɔ̃", ["uen"] = "un", ["aq"] = "aʔ", ["oq"] = "oʔ", ["eq"] = "əʔ", ["iaq"] = "iaʔ", ["ioq"] = "ioʔ", ["iq"] = "iəʔ", ["uaq"] = "uaʔ", ["ueq"] = "uəʔ", ["er"] = "əl", ["y"] = "z̩" }, ['hn'] = { ["a"] = "a", ["o"] = "o", ["e"] = "e", ["oe"] = "ɤ", ["ae"] = "ɛ", ["au"] = "ɔ", ["eu"] = "ɤɯ", ["i"] = "i", ["ia"] = "ia", ["ie"] = "ie", ["iae"] = "iɛ", ["iau"] = "iɔ", ["ieu"] = "iɤɯ", ["u"] = "u", ["ua"] = "ua", ["ue"] = "ue", ["uoe"] = "uɤ", ["uae"] = "uɛ", ["en"] = "ən", ["an"] = "ã", ["aon"] = "ɑ̃", ["on"] = "õ", ["in"] = "in", ["ian"] = "iã", ["iaon"] = "iɑ̃", ["ion"] = "ion", ["uen"] = "uən", ["uan"] = "uã", ["uaon"] = "uɑ̃", ["aq"] = "aʔ", ["eq"] = "əʔ", ["oq"] = "oʔ", ["iaq"] = "iaʔ", ["iq"] = "iəʔ", ["ioq"] = "ioʔ", ["uaq"] = "uaʔ", ["ueq"] = "uəʔ", ["er"] = "əl", ["y"] = "z̩" }, ['hy'] = { ["a"] = "a", ["ae"] = "ɛ", ["o"] = "o", ["e"] = "e", ["oe"] = "ə", ["au"] = "ɔ", ["i"] = "i", ["ia"] = "ia", ["ie"] = "iɛ", ["iau"] = "iɔ", ["ieu"] = "iɤ", ["u"] = "u", ["ua"] = "ua", ["uae"] = "uɛ", ["ue"] = "ue", ["uoe"] = "uə", ["iu"] = "y", ["ioe"] = "yə", ["an"] = "ã", ["en"] = "ən", ["aon"] = "ɔ̃", ["on"] = "õ", ["ian"] = "iã", ["in"] = "iən", ["iaon"] = "iɔ̃", ["ion"] = "iõ", ["uan"] = "ã", ["uen"] = "uən", ["uaon"] = "ɔ̃", ["iun"] = "yən", ["aq"] = "aʔ", ["eq"] = "əʔ", ["oq"] = "oʔ", ["iaq"] = "iaʔ", ["iq"] = "iəʔ", ["ioq"] = "ioʔ", ["uaq"] = "uaʔ", ["er"] = "l̩", ["y"] = "z̩" }, ['dq'] = { ["a"] = "a", ["au"] = "ɔ", ["uo"] = "uɔ", ["e"] = "ɛ", ["oe"] = "ɤ", ["i"] = "i", ["ieu"] = "iʏ", ["ia"] = "ia", ["iau"] = "iɔ", ["ie"] = "ie", ["u"] = "u", ["ua"] = "ua", ["uo"] = "uɔ", ["ue"] = "uɛ", ["uoe"] = "uɤ", ["an"] = "ã", ["en"] = "ən", ["on"] = "oŋ", ["ian"] = "iã", ["in"] = "in", ["ion"] = "ioŋ", ["uan"] = "uã", ["uen"] = "uən", ["aq"] = "aʔ", ["eq"] = "əʔ", ["oq"] = "oʔ", ["iaq"] = "iaʔ", ["iq"] = "iəʔ", ["ioq"] = "ioʔ", ["uaq"] = "uaʔ", ["uoq"] = "uoʔ", ["er"] = "əl", ["y"] = "z̩" }, ['hz'] = { ["a"] = "ɑ", ["e"] = "ɛ", ["au"] = "ɔ", ["o"] = "o", ["ei"] = "ei", ["i"] = "i", ["ia"] = "iɑ", ["ie"] = "iɛ", ["iau"] = "iɔ", ["ieu"] = "iø", ["u"] = "u", ["ua"] = "ua", ["ue"] = "uɛ", ["uo"] = "uo", ["uei"] = "ui", ["iu"] = "y", ["aen"] = "ẽ̞", ["en"] = "en", ["an"] = "ɑŋ", ["on"] = "oŋ", ["aq"] = "ɑʔ", ["eq"] = "əʔ", ["oq"] = "oʔ", ["ien"] = "iẽ̞", ["in"] = "in", ["ian"] = "iæ̃", ["ion"] = "ioŋ", ["iaq"] = "iɑʔ", ["iq"] = "iəʔ", ["ioq"] = "ioʔ", ["uen"] = "un", ["uan"] = "uæ̃", ["uon"] = "uõ", ["uaq"] = "uɑʔ", ["uoq"] = "uoʔ", ["iuon"] = "yõ", ["iun"] = "yn", ["iuq"] = "yəʔ", ["er"] = "əl", ["y"] = "z̩", ["yu"] = "z̩ʷ", -- old period, no official wugniu: ["eu"] = "ey", -- zw stuff ["uwa"] = "zʷa", ["uwe"] = "zʷɛ", ["uwei"] = "zʷei", ["uwan"] = "zʷæ̃", ["uwaq"] = "zʷɑʔ", ["uwon"] = "zʷõ", ["uwen"] = "zʷen", ["uweq"] = "zʷəʔ", }, ['xs'] = { --與學堂城厢點大體一致,欠大西之 eʔ 及 ieʔ,添 yo,但 ae 及 oe 具鼻音化 ["a"] = "a", ["e"] = "e", ["o"] = "o", ["au"] = "ɒ", ["i"] = "i", ["ia"] = "ia", ["io"] = "io", ["iau"] = "iɒ", ["u"] = "u", ["ua"] = "ua", ["ue"] = "ue", ["uo"] = "uo", ["iu"] = "y", ["iuo"] = "yo", ["ae"] = "ɛ̃", ["oe"] = "ə̃", ["ie"] = "iɛ̃", ["ioe"] = "yə̃", ["uae"] = "uɛ̃", ["uoe"] = "uə̃", ["an"] = "ã", ["aon"] = "ɒ̃", ["en"] = "əŋ", ["on"] = "oŋ", ["ian"] = "ã", ["in"] = "iŋ", ["uan"] = "uã", ["uaon"] = "uɒ̃", ["uen"] = "uəŋ", ["uon"] = "uoŋ", ["iuaon"] = "yɒ̃", ["iun"] = "yŋ", ["ion"] = "yoŋ", ["aq"] = "aʔ", ["oq"] = "oʔ", ["eq"] = "əʔ", ["iaq"] = "iaʔ", ["ioq"] = "yoʔ", ["iq"] = "iəʔ", ["uaq"] = "uaʔ", ["uoq"] = "uoʔ", ["er"] = "ɚ", ["y"] = "z̩" }, ['fy'] = { ["a"] = "a", ["ae"] = "ɛ", ["au"] = "ɔ", ["o"] = "o", ["ou"] = "ʊ", ["ei"] = "ei", ["i"] = "i", ["ia"] = "ia", ["iae"] = "iɛ", ["iau"] = "iɔ", ["iou"] = "iʊ", ["u"] = "u", ["ua"] = "ua", ["uae"] = "uɛ", ["uo"] = "uo", ["iu"] = "y", ["iuae"] = "yɛ", ["iuo"] = "yo", ["an"] = "ã", ["aen"] = "ɛ̃", ["aon"] = "ɔ̃", ["en"] = "eŋ", ["on"] = "oŋ", ["ian"] = "iã", ["iaen"] = "iɛ̃", ["in"] = "iŋ", ["uan"] = "uã", ["uaen"] = "uɛ̃", ["uaon"] = "uɔ̃", ["uen"] = "ueŋ", ["iuaen"] = "yɛ̃", ["iaon"] = "yɔ̃", ["iun"] = "yŋ", ["ion"] = "yoŋ", ["aq"] = "ɐʔ", ["eq"] = "eʔ", ["eoq"] = "əʔ", ["oq"] = "oʔ", ["iaq"] = "iɐʔ", ["iq"] = "iɪʔ", ["ioq"] = "yoʔ", ["uaq"] = "uɐʔ", ["uoq"] = "uoʔ", ["er"] = "l̩", ["y"] = "z̩" }, ['sx'] = { ["a"] = "a", ["e"] = "e", ["eu"] = "ɤ", ["au"] = "ɒ", ["o"] = "o", ["i"] = "i", ["ia"] = "ia", ["ie"] = "ie", ["ieu"] = "iɤ", ["iau"] = "iɒ", ["io"] = "io", ["u"] = "u", ["ua"] = "ua", ["ue"] = "ue", ["uo"] = "uo", ["iu"] = "y", ["aen"] = "æ̃", ["een"] = "ẽ", ["oen"] = "ø̃", ["an"] = "aŋ", ["en"] = "əŋ", ["aon"] = "ɒŋ", ["on"] = "oŋ", ["iaen"] = "iæ̃", ["ien"] = "iẽ", ["ioen"] = "iø̃", ["ian"] = "iaŋ", ["in"] = "iŋ", ["iaon"] = "iɒŋ", ["ion"] = "ioŋ", ["uaen"] = "uæ̃", ["uen"] = "uẽ", ["uoen"] = "uø̃", ["uan"] = "uaŋ", ["uaon"] = "uɒŋ", ["uon"] = "uoŋ", ["aq"] = "aʔ", ["aeq"] = "æʔ", ["eq"] = "eʔ", ["eoq"] = "əʔ", ["oeq"] = "øʔ", ["oq"] = "oʔ", ["iaq"] = "iaʔ", ["iq"] = "ieʔ", ["ioeq"] = "iøʔ", ["ioq"] = "ioʔ", ["uaq"] = "uaʔ", ["uaeq"] = "uæʔ", ["ueq"] = "ueʔ", ["uoeq"] = "uøʔ", ["uoq"] = "uoʔ", ["er"] = "əl", ["y"] = "z̩" }, ['cx'] = { --check btwn sources ["a"] = "a", ["o"] = "o", ["au"] = "ɔ", ["e"] = "e", ["eu"] = "ɤ", ["i"] = "i", ["ia"] = "ia", ["io"] = "io", ["iau"] = "iɔ", ["ieu"] = "iɤ", ["u"] = "u", ["ua"] = "ua", ["uo"] = "uo", ["ue"] = "ue", ["iu"] = "y", ["an"] = "ã", ["aen"] = "æ̃", ["een"] = "ẽ", ["oen"] = "œ̃", ["aon"] = "ɔ̃", ["en"] = "əŋ", ["on"] = "oŋ", ["ian"] = "iã", ["ien"] = "iẽ", ["ioen"] = "yœ̃", ["iaon"] = "iɔ̃", ["in"] = "iŋ", ["iun"] = "yəŋ", ["ion"] = "ioŋ", ["uan"] = "uã", ["uaen"] = "uæ̃", ["uoen"] = "uœ̃", ["uaon"] = "uɔ̃", ["uen"] = "uəŋ", ["aq"] = "aʔ", ["oq"] = "oʔ", ["eq"] = "eʔ", ["iaq"] = "iaʔ", ["ioq"] = "yoʔ", ["iq"] = "ieʔ", ["iuq"] = "yeʔ", ["uaq"] = "uaʔ", ["ueq"] = "ueʔ", ["er"] = "əl", ["y"] = "z̩", ["yu"] = "z̩ʷ" }, ['nb'] = { ["a"] = "a", ["o"] = "o", ["au"] = "ɔ", ["e"] = "e", ["ae"] = "ɛ", ["oe"] = "ø", ["ei"] = "ɐɪ", ["eu"] = "œʏ", ["ou"] = "əu", ["i"] = "i", ["ia"] = "ia", ["iau"] = "iɔ", ["ie"] = "ie", ["ieu"] = "iʏ", ["u"] = "u", ["ua"] = "ua", ["uo"] = "uo", ["uae"] = "uɛ", ["uei"] = "uɐɪ", ["iu"] = "y", ["io"] = "yo", ["an"] = "ã", ["aon"] = "ɔ̃", ["en"] = "əŋ", ["on"] = "oŋ", ["aq"] = "ɐʔ", ["oq"] = "oʔ", ["ian"] = "iã", ["in"] = "iŋ", ["iaq"] = "iɐʔ", ["iq"] = "iɪʔ", ["un"] = "ũ", ["uan"] = "uã", ["uaon"] = "uɔ̃", ["uen"] = "uəŋ", ["uaq"] = "uɐʔ", ["iun"] = "yəŋ", ["ion"] = "yoŋ", ["iuq"] = "yəʔ", ["ioq"] = "yoʔ", ["yun"] = "z̩ʷøŋ", ["yuq"] = "z̩ʷœʔ", ["er"] = "əl", ["y"] = "z̩", ["yu"] = "z̩ʷ" }, ['zs'] = { --與學堂一致, ai = a~i, uɛ~ = uɛ ["a"] = "a", ["au"] = "ɔ", ["o"] = "o", ["e"] = "e", ["ei"] = "ai", ["ou"] = "au", ["ae"] = "ɛ", ["i"] = "i", ["ia"] = "ia", ["iau"] = "iɔ", ["ieu"] = "iu", ["iae"] = "iɛ", ["u"] = "u", ["ua"] = "ua", ["uo"] = "uo", ["ue"] = "ɔ", ["uei"] = "uai", ["uae"] = "uɛ", ["iu"] = "y", ["oen"] = "ø", ["an"] = "ã", ["aon"] = "ɔ", ["en"] = "ɐŋ", ["on"] = "oŋ", ["ien"] = "ĩ", ["ioen"] = "ỹ", ["ian"] = "iã", ["in"] = "iŋ", ["ion"] = "yoŋ", ["un"] = "ũ", ["uan"] = "uã", ["uaon"] = "uɔ", ["uen"] = "uɐŋ", ["aq"] = "ɐʔ", ["oq"] = "oʔ", ["iaq"] = "iɐʔ", ["iq"] = "iəʔ", ["uaq"] = "uɐʔ", ["iuq"] = "yɐʔ", ["er"] = "əl", ["y"] = "z̩", ["yu"] = "z̩ʷ" }, } data.tone_contours = { --if a lect is missing tone sandhi then uhh i'll add them later ['sh'] = { ["10"] = "", ["1-"] = "33", ["11"] = "53", ["21"] = "55 21", ["31"] = "55 33 21", ["41"] = "55 33 33 21", ["51"] = "55 33 33 33 21", ["15"] = "34", ["25"] = "33 44", ["35"] = "33 55 21", ["45"] = "33 55 33 21", ["55"] = "33 55 33 33 21", ["16"] = "23", ["26"] = "22 44", ["36"] = "22 55 21", ["46"] = "22 55 33 21", ["56"] = "22 55 33 33 21", ["17"] = "55", ["27"] = "33 44", ["37"] = "33 55 21", ["47"] = "33 55 33 21", ["57"] = "33 55 33 33 21", ["18"] = "12", ["28"] = "11 23", ["38"] = "11 22 23", ["48"] = "11 22 22 23", ["58"] = "22 55 33 33 21", --RPS ["1s"] = "44", ["5s"] = "44", ["6s"] = "33", ["7s"] = "44", ["8s"] = "22", ["multiple"] = "33" }, ['jd'] = { ["10"] = "", ["11"] = "53", ["12"] = "31", ["13"] = "34", ["14"] = "13", ["15"] = "34", ["16"] = "13", ["17"] = "55", ["18"] = "12", ["211"] = "55 21", ["212"] = "55 21", ["213"] = "45 21", ["214"] = "45 21", ["215"] = "33 44", ["216"] = "33 44", ["217"] = "55 21", ["218"] = "55 21", ["221"] = "22 53", ["222"] = "22 53", ["223"] = "24 21", ["224"] = "24 21", ["225"] = "23 44", ["226"] = "23 44", ["227"] = "24 21", ["228"] = "24 21", ["231"] = "35 21", ["232"] = "35 21", ["233"] = "35 21", ["234"] = "35 21", ["235"] = "33 53", ["236"] = "33 53", ["237"] = "35 21", ["238"] = "35 21", ["241"] = "22 53", ["242"] = "22 53", ["243"] = "24 21", ["244"] = "24 21", ["245"] = "22 24", ["246"] = "22 24", ["247"] = "24 21", ["248"] = "24 21", ["251"] = "35 21", ["252"] = "35 21", ["253"] = "35 21", ["254"] = "35 21", ["255"] = "44 44", ["256"] = "44 44", ["257"] = "35 21", ["258"] = "35 21", ["261"] = "22 53", ["262"] = "22 53", ["263"] = "24 21", ["264"] = "24 21", ["265"] = "24 44", ["266"] = "24 44", ["267"] = "24 21", ["268"] = "24 21", ["271"] = "44 53", ["272"] = "44 53", ["273"] = "44 21", ["274"] = "44 21", ["275"] = "44 44", ["276"] = "44 44", ["277"] = "44 21", ["278"] = "44 21", ["281"] = "11 24", ["282"] = "11 24", ["283"] = "11 24", ["284"] = "11 24", ["285"] = "11 24", ["286"] = "11 24", ["287"] = "22 44", ["288"] = "22 44", ["3111"] = "55 33 21", ["3112"] = "55 33 21", ["3113"] = "55 33 21", ["3114"] = "55 33 21", ["3115"] = "55 33 21", ["3116"] = "55 33 21", ["3117"] = "55 33 21", ["3118"] = "55 33 21", ["3121"] = "55 33 21", ["3122"] = "55 33 21", ["3123"] = "55 33 21", ["3124"] = "55 33 21", ["3125"] = "55 33 21", ["3126"] = "55 33 21", ["3127"] = "55 33 21", ["3128"] = "55 33 21", ["3131"] = "35 33 21", ["3132"] = "35 33 21", ["3133"] = "35 33 21", ["3134"] = "35 33 21", ["3135"] = "35 33 21", ["3136"] = "35 33 21", ["3137"] = "35 33 21", ["3138"] = "35 33 21", ["3141"] = "35 33 21", ["3142"] = "35 33 21", ["3143"] = "35 33 21", ["3144"] = "35 33 21", ["3145"] = "35 33 21", ["3146"] = "35 33 21", ["3147"] = "35 33 21", ["3148"] = "35 33 21", ["3151"] = "55 33 21", ["3152"] = "55 33 21", ["3153"] = "55 33 21", ["3154"] = "55 33 21", ["3155"] = "55 33 21", ["3156"] = "55 33 21", ["3157"] = "55 33 21", ["3158"] = "55 33 21", ["3161"] = "55 33 21", ["3162"] = "55 33 21", ["3163"] = "55 33 21", ["3164"] = "55 33 21", ["3165"] = "55 33 21", ["3166"] = "55 33 21", ["3167"] = "55 33 21", ["3168"] = "55 33 21", ["3171"] = "55 33 21", ["3172"] = "55 33 21", ["3173"] = "55 33 21", ["3174"] = "55 33 21", ["3175"] = "55 33 21", ["3176"] = "55 33 21", ["3177"] = "55 33 21", ["3178"] = "55 33 21", ["3181"] = "55 33 21", ["3182"] = "55 33 21", ["3183"] = "55 33 21", ["3184"] = "55 33 21", ["3185"] = "55 33 21", ["3186"] = "55 33 21", ["3187"] = "55 33 21", ["3188"] = "55 33 21", ["3211"] = "22 55 21", ["3212"] = "22 55 21", ["3213"] = "22 55 21", ["3214"] = "22 55 21", ["3215"] = "22 55 44", ["3216"] = "22 55 44", ["3217"] = "22 55 21", ["3218"] = "22 55 21", ["3221"] = "22 55 21", ["3222"] = "22 55 21", ["3223"] = "22 55 21", ["3224"] = "22 55 21", ["3225"] = "22 55 44", ["3226"] = "22 55 44", ["3227"] = "22 55 21", ["3228"] = "22 55 21", ["3231"] = "24 33 21", ["3232"] = "24 33 21", ["3233"] = "24 33 21", ["3234"] = "24 33 21", ["3235"] = "24 33 21", ["3236"] = "24 33 21", ["3237"] = "24 33 21", ["3238"] = "24 33 21", ["3241"] = "24 33 21", ["3242"] = "24 33 21", ["3243"] = "24 33 21", ["3244"] = "24 33 21", ["3245"] = "24 33 21", ["3246"] = "24 33 21", ["3247"] = "24 33 21", ["3248"] = "24 33 21", ["3251"] = "22 55 21", ["3252"] = "22 55 21", ["3253"] = "22 55 21", ["3254"] = "22 55 21", ["3255"] = "22 55 44", ["3256"] = "22 55 44", ["3257"] = "22 55 21", ["3258"] = "22 55 21", ["3261"] = "22 55 21", ["3262"] = "22 55 21", ["3263"] = "22 55 21", ["3264"] = "22 55 21", ["3265"] = "22 55 44", ["3266"] = "22 55 44", ["3267"] = "22 55 21", ["3268"] = "22 55 21", ["3271"] = "22 55 21", ["3272"] = "22 55 21", ["3273"] = "22 55 21", ["3274"] = "22 55 21", ["3275"] = "22 55 44", ["3276"] = "22 55 44", ["3277"] = "22 55 21", ["3278"] = "22 55 21", ["3281"] = "22 55 21", ["3282"] = "22 55 21", ["3283"] = "22 55 21", ["3284"] = "22 55 21", ["3285"] = "22 55 44", ["3286"] = "22 55 44", ["3287"] = "22 55 21", ["3288"] = "22 55 21", ["3311"] = "33 55 21", ["3312"] = "33 55 21", ["3313"] = "33 55 21", ["3314"] = "33 55 21", ["3315"] = "35 33 21", ["3316"] = "35 33 21", ["3317"] = "33 55 21", ["3318"] = "33 55 21", ["3321"] = "33 55 21", ["3322"] = "33 55 21", ["3323"] = "33 55 21", ["3324"] = "33 55 21", ["3325"] = "35 33 21", ["3326"] = "35 33 21", ["3327"] = "33 55 21", ["3328"] = "33 55 21", ["3331"] = "33 55 21", ["3332"] = "33 55 21", ["3333"] = "33 55 21", ["3334"] = "33 55 21", ["3335"] = "35 33 21", ["3336"] = "35 33 21", ["3337"] = "33 55 21", ["3338"] = "33 55 21", ["3341"] = "33 55 21", ["3342"] = "33 55 21", ["3343"] = "33 55 21", ["3344"] = "33 55 21", ["3345"] = "35 33 21", ["3346"] = "35 33 21", ["3347"] = "33 55 21", ["3348"] = "33 55 21", ["3351"] = "33 55 21", ["3352"] = "33 55 21", ["3353"] = "33 55 21", ["3354"] = "33 55 21", ["3355"] = "33 55 21", ["3356"] = "33 55 21", ["3357"] = "33 55 21", ["3358"] = "33 55 21", ["3361"] = "33 55 21", ["3362"] = "33 55 21", ["3363"] = "33 55 21", ["3364"] = "33 55 21", ["3365"] = "33 55 21", ["3366"] = "33 55 21", ["3367"] = "33 55 21", ["3368"] = "33 55 21", ["3371"] = "33 55 21", ["3372"] = "33 55 21", ["3373"] = "33 55 21", ["3374"] = "33 55 21", ["3375"] = "35 33 21", ["3376"] = "35 33 21", ["3377"] = "33 55 21", ["3378"] = "33 55 21", ["3381"] = "33 55 21", ["3382"] = "33 55 21", ["3383"] = "33 55 21", ["3384"] = "33 55 21", ["3385"] = "35 33 21", ["3386"] = "35 33 21", ["3387"] = "33 55 21", ["3388"] = "33 55 21", ["3411"] = "22 55 21", ["3412"] = "22 55 21", ["3413"] = "22 55 21", ["3414"] = "22 55 21", ["3415"] = "22 55 44", ["3416"] = "22 55 44", ["3417"] = "22 55 21", ["3418"] = "22 55 21", ["3421"] = "22 55 21", ["3422"] = "22 55 21", ["3423"] = "22 55 21", ["3424"] = "22 55 21", ["3425"] = "22 55 44", ["3426"] = "22 55 44", ["3427"] = "22 55 21", ["3428"] = "22 55 21", ["3431"] = "22 55 21", ["3432"] = "22 55 21", ["3433"] = "22 55 21", ["3434"] = "22 55 21", ["3435"] = "35 33 21", ["3436"] = "35 33 21", ["3437"] = "35 33 21", ["3438"] = "35 33 21", ["3441"] = "22 55 21", ["3442"] = "22 55 21", ["3443"] = "22 55 21", ["3444"] = "22 55 21", ["3445"] = "35 33 21", ["3446"] = "35 33 21", ["3447"] = "35 33 21", ["3448"] = "35 33 21", ["3451"] = "22 55 21", ["3452"] = "22 55 21", ["3453"] = "22 55 21", ["3454"] = "22 55 21", ["3455"] = "22 55 44", ["3456"] = "22 55 44", ["3457"] = "22 55 21", ["3458"] = "22 55 21", ["3461"] = "22 55 21", ["3462"] = "22 55 21", ["3463"] = "22 55 21", ["3464"] = "22 55 21", ["3465"] = "22 55 44", ["3466"] = "22 55 44", ["3467"] = "22 55 21", ["3468"] = "22 55 21", ["3471"] = "22 55 21", ["3472"] = "22 55 21", ["3473"] = "22 55 21", ["3474"] = "22 55 21", ["3475"] = "22 55 44", ["3476"] = "22 55 44", ["3477"] = "22 55 21", ["3478"] = "22 55 21", ["3481"] = "22 55 21", ["3482"] = "22 55 21", ["3483"] = "22 55 21", ["3484"] = "22 55 21", ["3485"] = "22 55 44", ["3486"] = "22 55 44", ["3487"] = "22 55 21", ["3488"] = "22 55 21", ["3511"] = "33 55 21", ["3512"] = "33 55 21", ["3513"] = "33 55 21", ["3514"] = "33 55 21", ["3515"] = "24 33 21", ["3516"] = "24 33 21", ["3517"] = "33 55 21", ["3518"] = "33 55 21", ["3521"] = "33 55 21", ["3522"] = "33 55 21", ["3523"] = "33 55 21", ["3524"] = "33 55 21", ["3525"] = "24 33 21", ["3526"] = "24 33 21", ["3527"] = "33 55 21", ["3528"] = "33 55 21", ["3531"] = "55 33 21", ["3532"] = "55 33 21", ["3533"] = "35 33 21", ["3534"] = "35 33 21", ["3535"] = "35 33 21", ["3536"] = "35 33 21", ["3537"] = "35 33 21", ["3538"] = "35 33 21", ["3541"] = "24 33 21", ["3542"] = "24 33 21", ["3543"] = "24 33 21", ["3544"] = "24 33 21", ["3545"] = "24 33 21", ["3546"] = "24 33 21", ["3547"] = "24 33 21", ["3548"] = "24 33 21", ["3551"] = "44 44 53", ["3552"] = "44 44 53", ["3553"] = "44 44 53", ["3554"] = "44 44 53", ["3555"] = "44 44 53", ["3556"] = "44 44 53", ["3557"] = "44 44 53", ["3558"] = "44 44 53", ["3561"] = "44 44 53", ["3562"] = "44 44 53", ["3563"] = "44 44 53", ["3564"] = "44 44 53", ["3565"] = "44 44 53", ["3566"] = "44 44 53", ["3567"] = "44 44 53", ["3568"] = "44 44 53", ["3571"] = "33 55 21", ["3572"] = "33 55 21", ["3573"] = "33 55 21", ["3574"] = "33 55 21", ["3575"] = "35 33 21", ["3576"] = "35 33 21", ["3577"] = "33 55 21", ["3578"] = "33 55 21", ["3581"] = "33 55 21", ["3582"] = "33 55 21", ["3583"] = "33 55 21", ["3584"] = "33 55 21", ["3585"] = "35 33 21", ["3586"] = "35 33 21", ["3587"] = "33 55 21", ["3588"] = "33 55 21", ["3611"] = "22 55 21", ["3612"] = "22 55 21", ["3613"] = "22 55 21", ["3614"] = "22 55 21", ["3615"] = "22 55 44", ["3616"] = "22 55 44", ["3617"] = "22 55 21", ["3618"] = "22 55 21", ["3621"] = "22 55 21", ["3622"] = "22 55 21", ["3623"] = "22 55 21", ["3624"] = "22 55 21", ["3625"] = "22 55 44", ["3626"] = "22 55 44", ["3627"] = "22 55 21", ["3628"] = "22 55 21", ["3631"] = "22 55 21", ["3632"] = "22 55 21", ["3633"] = "22 55 21", ["3634"] = "22 55 21", ["3635"] = "24 33 21", ["3636"] = "24 33 21", ["3637"] = "24 33 21", ["3638"] = "24 33 21", ["3641"] = "24 33 21", ["3642"] = "24 33 21", ["3643"] = "24 33 21", ["3644"] = "24 33 21", ["3645"] = "24 33 21", ["3646"] = "24 33 21", ["3647"] = "24 33 21", ["3648"] = "24 33 21", ["3651"] = "22 55 21", ["3652"] = "22 55 21", ["3653"] = "22 55 21", ["3654"] = "22 55 21", ["3655"] = "22 55 44", ["3656"] = "22 55 44", ["3657"] = "22 55 21", ["3658"] = "22 55 21", ["3661"] = "22 55 21", ["3662"] = "22 55 21", ["3663"] = "22 55 21", ["3664"] = "22 55 21", ["3665"] = "22 55 44", ["3666"] = "22 55 44", ["3667"] = "22 55 21", ["3668"] = "22 55 21", ["3671"] = "22 55 21", ["3672"] = "22 55 21", ["3673"] = "22 55 21", ["3674"] = "22 55 21", ["3675"] = "22 55 44", ["3676"] = "22 55 44", ["3677"] = "22 55 21", ["3678"] = "22 55 21", ["3681"] = "22 55 21", ["3682"] = "22 55 21", ["3683"] = "22 55 21", ["3684"] = "22 55 21", ["3685"] = "22 55 44", ["3686"] = "22 55 44", ["3687"] = "22 55 21", ["3688"] = "22 55 21", ["3711"] = "33 55 21", ["3712"] = "33 55 21", ["3713"] = "33 55 21", ["3714"] = "33 55 21", ["3715"] = "33 55 44", ["3716"] = "33 55 44", ["3717"] = "33 55 21", ["3718"] = "33 55 21", ["3721"] = "33 55 21", ["3722"] = "33 55 21", ["3723"] = "33 55 21", ["3724"] = "33 55 21", ["3725"] = "33 55 44", ["3726"] = "33 55 44", ["3727"] = "33 55 21", ["3728"] = "33 55 21", ["3731"] = "33 55 21", ["3732"] = "33 55 21", ["3733"] = "33 55 21", ["3734"] = "33 55 21", ["3735"] = "33 55 21", ["3736"] = "33 55 21", ["3737"] = "33 55 21", ["3738"] = "33 55 21", ["3741"] = "33 55 21", ["3742"] = "33 55 21", ["3743"] = "33 55 21", ["3744"] = "33 55 21", ["3745"] = "33 55 21", ["3746"] = "33 55 21", ["3747"] = "33 55 21", ["3748"] = "33 55 21", ["3751"] = "33 55 21", ["3752"] = "33 55 21", ["3753"] = "33 55 21", ["3754"] = "33 55 21", ["3755"] = "33 55 44", ["3756"] = "33 55 44", ["3757"] = "33 55 21", ["3758"] = "33 55 21", ["3761"] = "33 55 21", ["3762"] = "33 55 21", ["3763"] = "33 55 21", ["3764"] = "33 55 21", ["3765"] = "33 55 44", ["3766"] = "33 55 44", ["3727"] = "33 55 21", ["3768"] = "33 55 21", ["3771"] = "33 55 21", ["3772"] = "33 55 21", ["3773"] = "33 55 21", ["3774"] = "33 55 21", ["3775"] = "33 55 44", ["3776"] = "33 55 44", ["3777"] = "33 55 21", ["3778"] = "33 55 21", ["3781"] = "33 55 21", ["3782"] = "33 55 21", ["3783"] = "33 55 21", ["3784"] = "33 55 21", ["3785"] = "33 55 44", ["3786"] = "33 55 44", ["3787"] = "33 55 21", ["3788"] = "33 55 21", ["3811"] = "11 11 24", ["3812"] = "11 11 24", ["3813"] = "11 11 24", ["3814"] = "11 11 24", ["3815"] = "11 11 24", ["3816"] = "11 11 24", ["3817"] = "11 11 24", ["3818"] = "11 11 24", ["3821"] = "11 11 24", ["3822"] = "11 11 24", ["3823"] = "11 11 24", ["3824"] = "11 11 24", ["3825"] = "11 11 24", ["3826"] = "11 11 24", ["3827"] = "11 11 24", ["3828"] = "11 11 24", ["3831"] = "22 55 21", ["3832"] = "22 55 21", ["3833"] = "22 55 21", ["3834"] = "22 55 21", ["3835"] = "22 55 21", ["3836"] = "22 55 21", ["3837"] = "22 55 21", ["3838"] = "22 55 21", ["3841"] = "22 55 21", ["3842"] = "22 55 21", ["3843"] = "22 55 21", ["3844"] = "22 55 21", ["3845"] = "22 55 21", ["3846"] = "22 55 21", ["3847"] = "22 55 21", ["3848"] = "22 55 21", ["3851"] = "22 55 21", ["3852"] = "22 55 21", ["3853"] = "22 55 21", ["3854"] = "22 55 21", ["3855"] = "22 55 21", ["3856"] = "22 55 21", ["3857"] = "22 55 21", ["3858"] = "22 55 21", ["3861"] = "22 55 21", ["3862"] = "22 55 21", ["3863"] = "22 55 21", ["3864"] = "22 55 21", ["3865"] = "22 55 21", ["3866"] = "22 55 21", ["3867"] = "22 55 21", ["3868"] = "22 55 21", ["3871"] = "11 11 24", ["3872"] = "11 11 24", ["3873"] = "11 11 24", ["3874"] = "11 11 24", ["3875"] = "11 11 24", ["3876"] = "11 11 24", ["3877"] = "11 11 24", ["3878"] = "11 11 24", ["3881"] = "11 11 24", ["3882"] = "11 11 24", ["3883"] = "11 11 24", ["3884"] = "11 11 24", ["3885"] = "11 11 24", ["3886"] = "11 11 24", ["3887"] = "11 11 24", ["3888"] = "11 11 24", }, ['sj'] = { ["10"] = "", ["11"] = "53", ["12"] = "31", ["13"] = "44", ["14"] = "22", ["15"] = "35", ["16"] = "13", ["17"] = "44", ["18"] = "22", ["211"] = "35 53", ["212"] = "35 53", ["213"] = "35 53", ["214"] = "35 53", ["215"] = "55 31", ["216"] = "55 31", ["217"] = "53 31", ["218"] = "53 31", ["221"] = "15 53", ["222"] = "15 53", ["223"] = "15 53", ["224"] = "15 53", ["225"] = "24 31", ["226"] = "24 31", ["227"] = "22 22", ["228"] = "22 22", ["231"] = "35 31", ["232"] = "35 31", ["233"] = "35 31", ["234"] = "35 31", ["235"] = "44 44", ["236"] = "44 44", ["237"] = "35 31", ["238"] = "35 31", ["241"] = "24 31", ["242"] = "24 31", ["243"] = "24 31", ["244"] = "24 31", ["245"] = "22 35", ["246"] = "22 35", ["247"] = "24 31", ["248"] = "24 31", ["251"] = "53 31", ["252"] = "53 31", ["253"] = "53 31", ["254"] = "53 31", ["255"] = "44 44", ["256"] = "44 44", ["257"] = "35 31", ["258"] = "35 31", ["261"] = "22 22", ["262"] = "22 22", ["263"] = "22 22", ["264"] = "22 22", ["265"] = "22 35", ["266"] = "22 35", ["267"] = "24 31", ["268"] = "24 31", ["271"] = "44 53", ["272"] = "44 53", ["273"] = "44 44", ["274"] = "44 44", ["275"] = "44 35", ["276"] = "44 35", ["277"] = "44 44", ["278"] = "44 44", ["281"] = "22 53", ["282"] = "22 53", ["283"] = "22 22", ["284"] = "22 22", ["285"] = "22 35", ["286"] = "22 35", ["287"] = "22 22", ["288"] = "22 22", ["3111"] = "35 55 31", ["3112"] = "35 55 31", ["3113"] = "35 55 31", ["3114"] = "35 55 31", ["3115"] = "35 55 31", ["3116"] = "35 55 31", ["3117"] = "55 33 31", ["3118"] = "55 33 31", ["3121"] = "35 55 31", ["3122"] = "35 55 31", ["3123"] = "35 55 31", ["3124"] = "35 55 31", ["3125"] = "35 55 31", ["3126"] = "35 55 31", ["3127"] = "55 33 31", ["3128"] = "55 33 31", ["3131"] = "55 33 31", ["3132"] = "55 33 31", ["3133"] = "55 33 31", ["3134"] = "55 33 31", ["3135"] = "35 55 31", ["3136"] = "35 55 31", ["3137"] = "55 33 31", ["3138"] = "55 33 31", ["3141"] = "55 33 31", ["3142"] = "55 33 31", ["3143"] = "55 33 31", ["3144"] = "55 33 31", ["3145"] = "35 55 31", ["3146"] = "35 55 31", ["3147"] = "55 33 31", ["3148"] = "55 33 31", ["3151"] = "55 33 31", ["3152"] = "55 33 31", ["3153"] = "55 33 31", ["3154"] = "55 33 31", ["3155"] = "55 33 31", ["3156"] = "55 33 31", ["3157"] = "55 33 31", ["3158"] = "55 33 31", ["3161"] = "55 33 31", ["3162"] = "55 33 31", ["3163"] = "55 33 31", ["3164"] = "55 33 31", ["3165"] = "55 33 31", ["3166"] = "55 33 31", ["3167"] = "55 33 31", ["3168"] = "55 33 31", ["3171"] = "35 55 31", ["3172"] = "35 55 31", ["3173"] = "55 33 31", ["3174"] = "55 33 31", ["3175"] = "55 33 31", ["3176"] = "55 33 31", ["3177"] = "55 33 31", ["3178"] = "55 33 31", ["3181"] = "35 55 31", ["3182"] = "35 55 31", ["3183"] = "55 33 31", ["3184"] = "55 33 31", ["3185"] = "55 33 31", ["3186"] = "55 33 31", ["3187"] = "55 33 31", ["3188"] = "55 33 31", ["3211"] = "13 55 31", ["3212"] = "13 55 31", ["3213"] = "13 55 31", ["3214"] = "13 55 31", ["3215"] = "13 55 31", ["3216"] = "13 55 31", ["3217"] = "22 22 22", ["3218"] = "22 22 22", ["3221"] = "13 55 31", ["3222"] = "13 55 31", ["3223"] = "13 55 31", ["3224"] = "13 55 31", ["3225"] = "13 55 31", ["3226"] = "13 55 31", ["3227"] = "22 22 22", ["3228"] = "22 22 22", ["3231"] = "24 33 31", ["3232"] = "24 33 31", ["3233"] = "24 33 31", ["3234"] = "24 33 31", ["3235"] = "13 55 31", ["3236"] = "13 55 31", ["3237"] = "24 33 31", ["3238"] = "24 33 31", ["3241"] = "24 33 31", ["3242"] = "24 33 31", ["3243"] = "24 33 31", ["3244"] = "24 33 31", ["3245"] = "13 55 31", ["3246"] = "13 55 31", ["3247"] = "24 33 31", ["3248"] = "24 33 31", ["3251"] = "24 33 31", ["3252"] = "24 33 31", ["3253"] = "24 33 31", ["3254"] = "24 33 31", ["3255"] = "24 33 31", ["3256"] = "24 33 31", ["3257"] = "24 33 31", ["3258"] = "24 33 31", ["3261"] = "24 33 31", ["3262"] = "24 33 31", ["3263"] = "24 33 31", ["3264"] = "24 33 31", ["3265"] = "24 33 31", ["3266"] = "24 33 31", ["3267"] = "22 22 22", ["3268"] = "22 22 22", ["3271"] = "13 55 31", ["3272"] = "13 55 31", ["3273"] = "22 22 22", ["3274"] = "22 22 22", ["3275"] = "22 22 22", ["3276"] = "22 22 22", ["3277"] = "22 22 22", ["3278"] = "22 22 22", ["3281"] = "13 55 31", ["3282"] = "13 55 31", ["3283"] = "22 22 22", ["3284"] = "22 22 22", ["3285"] = "22 22 22", ["3286"] = "22 22 22", ["3287"] = "22 22 22", ["3288"] = "22 22 22", ["3311"] = "33 55 31", ["3312"] = "33 55 31", ["3313"] = "33 55 31", ["3314"] = "33 55 31", ["3315"] = "35 33 31", ["3316"] = "35 33 31", ["3317"] = "33 55 31", ["3318"] = "33 55 31", ["3321"] = "33 55 31", ["3322"] = "33 55 31", ["3323"] = "33 55 31", ["3324"] = "33 55 31", ["3325"] = "35 33 31", ["3326"] = "35 33 31", ["3327"] = "33 55 31", ["3328"] = "33 55 31", ["3331"] = "33 55 31", ["3332"] = "33 55 31", ["3333"] = "33 55 31", ["3334"] = "33 55 31", ["3335"] = "35 33 31", ["3336"] = "35 33 31", ["3337"] = "33 55 31", ["3338"] = "33 55 31", ["3341"] = "33 55 31", ["3342"] = "33 55 31", ["3343"] = "33 55 31", ["3344"] = "33 55 31", ["3345"] = "35 33 31", ["3346"] = "35 33 31", ["3347"] = "33 55 31", ["3348"] = "33 55 31", ["3351"] = "33 55 31", ["3352"] = "33 55 31", ["3353"] = "33 55 31", ["3354"] = "33 55 31", ["3355"] = "35 33 31", ["3356"] = "35 33 31", ["3357"] = "33 55 31", ["3358"] = "33 55 31", ["3361"] = "33 55 31", ["3362"] = "33 55 31", ["3363"] = "33 55 31", ["3364"] = "33 55 31", ["3365"] = "35 33 31", ["3366"] = "35 33 31", ["3367"] = "33 55 31", ["3368"] = "33 55 31", ["3371"] = "33 55 53", ["3372"] = "33 55 53", ["3373"] = "33 55 31", ["3374"] = "33 55 31", ["3375"] = "35 33 31", ["3376"] = "35 33 31", ["3377"] = "33 55 31", ["3378"] = "33 55 31", ["3381"] = "33 55 53", ["3382"] = "33 55 53", ["3383"] = "33 55 31", ["3384"] = "33 55 31", ["3385"] = "35 33 31", ["3386"] = "35 33 31", ["3387"] = "33 55 31", ["3388"] = "33 55 31", ["3411"] = "22 55 31", ["3412"] = "22 55 31", ["3413"] = "22 55 31", ["3414"] = "22 55 31", ["3415"] = "24 33 31", ["3416"] = "24 33 31", ["3417"] = "22 55 31", ["3418"] = "22 55 31", ["3421"] = "22 55 31", ["3422"] = "22 55 31", ["3423"] = "22 55 31", ["3424"] = "22 55 31", ["3425"] = "24 33 31", ["3426"] = "24 33 31", ["3427"] = "22 55 31", ["3428"] = "22 55 31", ["3431"] = "22 55 31", ["3432"] = "22 55 31", ["3433"] = "22 55 31", ["3434"] = "22 55 31", ["3435"] = "24 33 31", ["3436"] = "24 33 31", ["3437"] = "22 55 31", ["3438"] = "22 55 31", ["3441"] = "22 55 31", ["3442"] = "22 55 31", ["3443"] = "22 55 31", ["3444"] = "22 55 31", ["3445"] = "24 33 31", ["3446"] = "24 33 31", ["3447"] = "22 55 31", ["3448"] = "22 55 31", ["3451"] = "22 55 31", ["3452"] = "22 55 31", ["3453"] = "22 55 31", ["3454"] = "22 55 31", ["3455"] = "24 33 31", ["3456"] = "24 33 31", ["3457"] = "22 55 31", ["3458"] = "22 55 31", ["3461"] = "22 55 31", ["3462"] = "22 55 31", ["3463"] = "22 55 31", ["3464"] = "22 55 31", ["3465"] = "24 33 31", ["3466"] = "24 33 31", ["3467"] = "22 55 31", ["3468"] = "22 55 31", ["3471"] = "22 55 53", ["3472"] = "22 55 53", ["3473"] = "22 55 31", ["3474"] = "22 55 31", ["3475"] = "24 33 31", ["3476"] = "24 33 31", ["3477"] = "22 55 31", ["3478"] = "22 55 31", ["3481"] = "22 55 53", ["3482"] = "22 55 53", ["3483"] = "22 55 31", ["3484"] = "22 55 31", ["3485"] = "24 33 31", ["3486"] = "24 33 31", ["3487"] = "22 55 31", ["3488"] = "22 55 31", ["3511"] = "55 33 31", ["3512"] = "55 33 31", ["3513"] = "55 33 31", ["3514"] = "55 33 31", ["3515"] = "55 33 31", ["3516"] = "55 33 31", ["3517"] = "55 33 31", ["3518"] = "55 33 31", ["3521"] = "55 33 31", ["3522"] = "55 33 31", ["3523"] = "55 33 31", ["3524"] = "55 33 31", ["3525"] = "55 33 31", ["3526"] = "55 33 31", ["3527"] = "55 33 31", ["3528"] = "55 33 31", ["3531"] = "44 44 53", ["3532"] = "44 44 53", ["3533"] = "44 44 53", ["3534"] = "44 44 53", ["3535"] = "55 33 31", ["3536"] = "55 33 31", ["3537"] = "44 44 53", ["3538"] = "44 44 53", ["3541"] = "33 55 31", ["3542"] = "33 55 31", ["3543"] = "33 55 31", ["3544"] = "33 55 31", ["3545"] = "55 33 31", ["3546"] = "55 33 31", ["3547"] = "44 44 53", ["3548"] = "44 44 53", ["3551"] = "33 55 31", ["3552"] = "33 55 31", ["3553"] = "33 55 31", ["3554"] = "33 55 31", ["3555"] = "35 33 31", ["3556"] = "35 33 31", ["3557"] = "44 44 53", ["3558"] = "44 44 53", ["3561"] = "33 55 31", ["3562"] = "33 55 31", ["3563"] = "33 55 31", ["3564"] = "33 55 31", ["3565"] = "35 33 31", ["3566"] = "35 33 31", ["3567"] = "44 44 53", ["3568"] = "44 44 53", ["3571"] = "33 55 53", ["3572"] = "33 55 53", ["3573"] = "33 55 31", ["3574"] = "33 55 31", ["3575"] = "35 33 31", ["3576"] = "35 33 31", ["3577"] = "33 55 31", ["3578"] = "33 55 31", ["3581"] = "33 55 53", ["3582"] = "33 55 53", ["3583"] = "33 55 31", ["3584"] = "33 55 31", ["3585"] = "35 33 31", ["3586"] = "35 33 31", ["3587"] = "33 55 31", ["3588"] = "33 55 31", ["3611"] = "22 22 22", ["3612"] = "22 22 22", ["3613"] = "22 22 22", ["3614"] = "22 22 22", ["3615"] = "22 22 22", ["3616"] = "22 22 22", ["3617"] = "22 22 22", ["3618"] = "22 22 22", ["3621"] = "22 22 22", ["3622"] = "22 22 22", ["3623"] = "22 22 22", ["3624"] = "22 22 22", ["3625"] = "22 22 22", ["3626"] = "22 22 22", ["3627"] = "22 22 22", ["3628"] = "22 22 22", ["3631"] = "22 55 53", ["3632"] = "22 55 53", ["3633"] = "22 55 53", ["3634"] = "22 55 53", ["3635"] = "22 22 22", ["3636"] = "22 22 22", ["3637"] = "22 55 53", ["3638"] = "22 55 53", ["3641"] = "22 55 53", ["3642"] = "22 55 53", ["3643"] = "22 55 53", ["3644"] = "22 55 53", ["3645"] = "22 22 22", ["3646"] = "22 22 22", ["3647"] = "22 55 53", ["3648"] = "22 55 53", ["3651"] = "22 55 31", ["3652"] = "22 55 31", ["3653"] = "22 55 31", ["3654"] = "22 55 31", ["3655"] = "24 33 31", ["3656"] = "24 33 31", ["3657"] = "22 55 31", ["3658"] = "22 55 31", ["3661"] = "22 55 31", ["3662"] = "22 55 31", ["3663"] = "22 55 31", ["3664"] = "22 55 31", ["3665"] = "24 33 31", ["3666"] = "24 33 31", ["3667"] = "22 55 31", ["3668"] = "22 55 31", ["3671"] = "22 55 53", ["3672"] = "22 55 53", ["3673"] = "22 55 31", ["3674"] = "22 55 31", ["3675"] = "24 33 31", ["3676"] = "24 33 31", ["3677"] = "22 55 31", ["3678"] = "22 55 31", ["3681"] = "22 55 53", ["3682"] = "22 55 53", ["3683"] = "22 55 31", ["3684"] = "22 55 31", ["3685"] = "24 33 31", ["3686"] = "24 33 31", ["3687"] = "22 55 31", ["3688"] = "22 55 31", ["3711"] = "33 55 53", ["3712"] = "33 55 53", ["3713"] = "33 55 53", ["3714"] = "33 55 53", ["3715"] = "33 55 31", ["3716"] = "33 55 31", ["3717"] = "33 55 31", ["3718"] = "33 55 31", ["3721"] = "33 55 53", ["3722"] = "33 55 53", ["3723"] = "33 55 53", ["3724"] = "33 55 53", ["3725"] = "33 55 31", ["3726"] = "33 55 31", ["3727"] = "33 55 31", ["3728"] = "33 55 31", ["3731"] = "33 55 53", ["3732"] = "33 55 53", ["3733"] = "33 55 53", ["3734"] = "33 55 53", ["3735"] = "44 44 44", ["3736"] = "44 44 44", ["3737"] = "33 55 53", ["3738"] = "33 55 53", ["3741"] = "33 55 53", ["3742"] = "33 55 53", ["3743"] = "33 55 53", ["3744"] = "33 55 53", ["3745"] = "44 44 44", ["3746"] = "44 44 44", ["3747"] = "33 55 53", ["3748"] = "33 55 53", ["3751"] = "33 55 31", ["3752"] = "33 55 31", ["3753"] = "33 55 31", ["3754"] = "33 55 31", ["3755"] = "44 44 44", ["3756"] = "44 44 44", ["3757"] = "33 55 53", ["3758"] = "33 55 53", ["3761"] = "33 55 31", ["3762"] = "33 55 31", ["3763"] = "33 55 31", ["3764"] = "33 55 31", ["3765"] = "44 44 44", ["3766"] = "44 44 44", ["3767"] = "33 55 53", ["3768"] = "33 55 53", ["3771"] = "33 55 53", ["3772"] = "33 55 53", ["3773"] = "33 55 53", ["3774"] = "33 55 53", ["3775"] = "44 44 44", ["3776"] = "44 44 44", ["3777"] = "44 44 44", ["3778"] = "44 44 44", ["3781"] = "33 55 53", ["3782"] = "33 55 53", ["3783"] = "33 55 53", ["3784"] = "33 55 53", ["3785"] = "44 44 44", ["3786"] = "44 44 44", ["3787"] = "44 44 44", ["3788"] = "44 44 44", ["3811"] = "22 55 53", ["3812"] = "22 55 53", ["3813"] = "22 55 53", ["3814"] = "22 55 53", ["3815"] = "22 55 31", ["3816"] = "22 55 31", ["3817"] = "22 55 31", ["3818"] = "22 55 31", ["3821"] = "22 55 53", ["3822"] = "22 55 53", ["3823"] = "22 55 53", ["3824"] = "22 55 53", ["3825"] = "22 55 31", ["3826"] = "22 55 31", ["3827"] = "22 55 31", ["3828"] = "22 55 31", ["3831"] = "22 55 53", ["3832"] = "22 55 53", ["3833"] = "22 55 53", ["3834"] = "22 55 53", ["3835"] = "22 22 22", ["3836"] = "22 22 22", ["3837"] = "22 55 53", ["3838"] = "22 55 53", ["3841"] = "22 55 53", ["3842"] = "22 55 53", ["3843"] = "22 55 53", ["3844"] = "22 55 53", ["3845"] = "22 22 22", ["3846"] = "22 22 22", ["3847"] = "22 55 53", ["3848"] = "22 55 53", ["3851"] = "22 55 31", ["3852"] = "22 55 31", ["3853"] = "22 55 31", ["3854"] = "22 55 31", ["3855"] = "22 22 22", ["3856"] = "22 22 22", ["3857"] = "22 55 53", ["3858"] = "22 55 53", ["3861"] = "22 55 31", ["3862"] = "22 55 31", ["3863"] = "22 55 31", ["3864"] = "22 55 31", ["3865"] = "22 22 22", ["3866"] = "22 22 22", ["3867"] = "22 55 53", ["3868"] = "22 55 53", ["3871"] = "22 55 53", ["3872"] = "22 55 53", ["3873"] = "22 55 53", ["3874"] = "22 55 53", ["3875"] = "22 22 22", ["3876"] = "22 22 22", ["3877"] = "22 22 22", ["3878"] = "22 22 22", ["3881"] = "22 55 53", ["3882"] = "22 55 53", ["3883"] = "22 55 53", ["3884"] = "22 55 53", ["3885"] = "22 22 22", ["3886"] = "22 22 22", ["3887"] = "22 22 22", ["3888"] = "22 22 22", --!RPS! : potentially doesn't exist? source found that claims that Old SH doesn't have RPS but whether or not this applies to Songjiang may be up for debate }, ['cm'] = { ["10"] = "", ["11"] = "55", ["12"] = "24", ["13"] = "424", ["14"] = "242", ["15"] = "33", ["16"] = "313", ["17"] = "5", ["18"] = "2", -- disylls -- regular LPS ["211"] = "55 55", ["212"] = "55 55", ["213"] = "55 0", ["214"] = "55 0", ["215"] = "55 0", ["216"] = "55 0", ["217"] = "55 5", ["218"] = "55 5", ["221"] = "24 55", ["222"] = "24 55", ["223"] = "24 0", ["224"] = "24 0", ["225"] = "24 33", ["226"] = "24 0", ["227"] = "24 5", ["228"] = "24 5", ["231"] = "42 55", ["232"] = "42 55", ["233"] = "33 0", ["234"] = "42 33", ["235"] = "42 33", ["236"] = "42 33", ["237"] = "42 5", ["238"] = "42 5", ["241"] = "31 55", ["242"] = "31 55", ["243"] = "31 33", ["244"] = "242 0", ["245"] = "242 0", ["246"] = "242 0", ["247"] = "31 5", ["248"] = "31 5", ["251"] = "42 55", ["252"] = "42 55", ["253"] = "33 0", ["254"] = "33 0", ["255"] = "42 33", ["256"] = "33 0", ["257"] = "42 5", ["258"] = "42 5", ["261"] = "31 55", ["262"] = "31 55", ["263"] = "31 33", ["264"] = "31 33", ["265"] = "31 33", ["266"] = "31 33", ["267"] = "31 5", ["268"] = "31 5", ["271"] = "55 55", ["272"] = "55 55", ["273"] = "55 33", ["274"] = "55 33", ["275"] = "55 33", ["276"] = "55 33", ["277"] = "55 55", ["278"] = "55 55", ["281"] = "22 55", ["282"] = "22 55", ["283"] = "22 33", ["284"] = "22 33", ["285"] = "22 33", ["286"] = "22 33", ["287"] = "22 55", ["288"] = "22 55", -- numeral-classifier and verb/adjective-complement LPS ["211C"] = "55 55", ["212C"] = "55 55", ["213C"] = "55 0", ["214C"] = "55 0", ["215C"] = "55 0", ["216C"] = "55 0", ["217C"] = "55 55", ["218C"] = "55 55", ["221C"] = "24 55", ["222C"] = "24 55", ["223C"] = "24 0", ["224C"] = "24 0", ["225C"] = "24 33", ["226C"] = "24 0", ["227C"] = "24 55", ["228C"] = "24 55", ["231C"] = "42 33", ["232C"] = "42 33", ["233C"] = "42 33", ["234C"] = "42 33", ["235C"] = "42 33", ["236C"] = "42 33", ["237C"] = "42 0", ["238C"] = "42 0", ["241C"] = "242 0", ["242C"] = "242 0", ["243C"] = "242 0", ["244C"] = "242 0", ["245C"] = "242 0", ["246C"] = "242 0", ["247C"] = "242 0", ["248C"] = "242 0", ["251C"] = "33 55", ["252C"] = "33 55", ["253C"] = "33 55", ["254C"] = "33 55", ["255C"] = "33 55", ["256C"] = "33 55", ["257C"] = "33 0", ["258C"] = "33 0", ["261C"] = "31 33", ["262C"] = "31 33", ["263C"] = "31 33", ["264C"] = "31 33", ["265C"] = "31 33", ["266C"] = "31 33", ["267C"] = "31 0", ["268C"] = "31 0", ["271C"] = "55 55", ["272C"] = "55 55", ["273C"] = "55 33", ["274C"] = "55 33", ["275C"] = "55 33", ["276C"] = "55 33", ["277C"] = "55 55", ["278C"] = "55 55", ["281C"] = "22 55", ["282C"] = "22 55", ["283C"] = "22 33", ["284C"] = "22 33", ["285C"] = "22 33", ["286C"] = "22 33", ["287C"] = "22 55", ["288C"] = "22 55", -- motion verbs → 過來、出來、上去、進去 ["3M"] = "42 55", ["4M"] = "31 55", ["5M"] = "42 55", ["7M"] = "55 55", -- verb-pronoun → 幫我、怪你、學渠 ["1P"] = "55 55", ["2P"] = "24 55", ["3P"] = "53 33", ["4P"] = "242 0", ["5P"] = "33 55", ["6P"] = "31 33", ["7P"] = "55 55", ["8P"] = "22 55", -- reduplicated (verb, counter, noun) → 天天、花花、做做、日日、坐坐 ["RV1"] = "55 55", ["RV2"] = "24 55", ["RV3"] = "42 33", ["RV4"] = "242 0", ["RV5"] = "33 55", ["RV6"] = "31 33", ["RV7"] = "5 5", ["RV8"] = "2 5", ["RC1"] = "55 55", ["RC2"] = "24 55", ["RC3"] = "42 33", ["RC4"] = "24 0", ["RC5"] = "42 33", ["RC6"] = "24 0", ["RC7"] = "5 5", ["RC8"] = "2 5", ["RN1"] = "55 55", ["RN2"] = "24 55", ["RN3"] = "42 55", ["RN4"] = "242 0", ["RN5"] = "42 55", ["RN6"] = "42 55", ["RN7"] = "5 5", ["RN8"] = "2 5", --regular trisyll LPS ["3111"] = "55 55 55", ["3112"] = "55 55 55", ["3113"] = "55 55 0", ["3114"] = "55 55 0", ["3115"] = "55 55 0", ["3116"] = "55 55 0", ["3117"] = "55 55 55", ["3118"] = "55 55 55", ["3121"] = "55 55 55", ["3122"] = "55 55 55", ["3123"] = "55 55 0", ["3124"] = "55 55 0", ["3125"] = "55 55 0", ["3126"] = "55 55 0", ["3127"] = "55 55 55", ["3128"] = "55 55 55", ["3131"] = "55 0 55", ["3132"] = "55 0 55", ["3133"] = "55 0 0", ["3134"] = "55 0 0", ["3135"] = "55 0 0", ["3136"] = "55 0 0", ["3137"] = "55 0 0", ["3138"] = "55 0 0", ["3141"] = "55 0 55", ["3142"] = "55 0 55", ["3143"] = "55 0 0", ["3144"] = "55 0 0", ["3145"] = "55 0 0", ["3146"] = "55 0 0", ["3147"] = "55 0 0", ["3148"] = "55 0 0", ["3151"] = "55 0 55", ["3152"] = "55 0 55", ["3153"] = "55 0 0", ["3154"] = "55 0 0", ["3155"] = "55 0 0", ["3156"] = "55 0 0", ["3157"] = "55 0 0", ["3158"] = "55 0 0", ["3161"] = "55 0 55", ["3162"] = "55 0 55", ["3163"] = "55 0 0", ["3164"] = "55 0 0", ["3165"] = "55 0 0", ["3166"] = "55 0 0", ["3167"] = "55 0 0", ["3168"] = "55 0 0", ["3171"] = "55 55 55", ["3172"] = "55 55 55", ["3173"] = "55 55 0", ["3174"] = "55 55 0", ["3175"] = "55 55 0", ["3176"] = "55 55 0", ["3177"] = "55 55 55", ["3178"] = "55 55 55", ["3181"] = "55 55 55", ["3182"] = "55 55 55", ["3183"] = "55 55 0", ["3184"] = "55 55 0", ["3185"] = "55 55 0", ["3186"] = "55 55 0", ["3187"] = "55 55 55", ["3188"] = "55 55 55", ["3211"] = "24 33 55", ["3212"] = "24 33 55", ["3213"] = "24 55 0", ["3214"] = "24 55 0", ["3215"] = "24 55 0", ["3216"] = "24 55 0", ["3217"] = "24 33 55", ["3218"] = "24 33 55", ["3221"] = "24 33 55", ["3222"] = "24 33 55", ["3223"] = "24 55 0", ["3224"] = "24 55 0", ["3225"] = "24 55 0", ["3226"] = "24 55 0", ["3227"] = "24 33 55", ["3228"] = "24 33 55", ["3231"] = "24 33 55", ["3232"] = "24 33 55", ["3233"] = "24 33 0", ["3234"] = "24 33 0", ["3235"] = "24 0 0", ["3236"] = "24 0 0", ["3237"] = "24 33 55", ["3238"] = "24 33 55", ["3241"] = "24 0 55", ["3242"] = "24 0 55", ["3243"] = "24 0 0", ["3244"] = "24 0 0", ["3245"] = "24 0 0", ["3246"] = "24 0 0", ["3247"] = "24 0 0", ["3248"] = "24 0 0", ["3251"] = "24 33 55", ["3252"] = "24 33 55", ["3253"] = "24 33 0", ["3254"] = "24 33 0", ["3255"] = "24 33 0", ["3256"] = "24 33 0", ["3257"] = "24 33 55", ["3258"] = "24 33 5", ["3261"] = "24 0 55", ["3262"] = "24 0 55", ["3263"] = "24 0 0", ["3264"] = "24 0 0", ["3265"] = "24 0 0", ["3266"] = "24 0 0", ["3267"] = "24 0 0", ["3268"] = "24 0 0", ["3271"] = "24 55 55", ["3272"] = "24 55 55", ["3273"] = "24 55 0", ["3274"] = "24 55 0", ["3275"] = "24 55 0", ["3276"] = "24 55 0", ["3277"] = "24 55 55", ["3278"] = "24 55 55", ["3281"] = "24 55 55", ["3282"] = "24 55 55", ["3283"] = "24 55 0", ["3284"] = "24 55 0", ["3285"] = "24 55 0", ["3286"] = "24 55 0", ["3287"] = "24 55 55", ["3288"] = "24 55 55", ["3311"] = "42 33 55", ["3312"] = "42 33 55", ["3313"] = "42 55 0", ["3314"] = "42 55 0", ["3315"] = "42 55 0", ["3316"] = "42 55 0", ["3317"] = "42 33 55", ["3318"] = "42 33 55", ["3321"] = "42 33 55", ["3322"] = "42 33 55", ["3323"] = "42 55 0", ["3324"] = "42 55 0", ["3325"] = "42 55 0", ["3326"] = "42 55 0", ["3327"] = "42 33 55", ["3328"] = "42 33 55", ["3331"] = "42 33 55", ["3332"] = "42 33 55", ["3333"] = "42 33 0", ["3334"] = "42 33 0", ["3335"] = "42 33 0", ["3336"] = "42 33 0", ["3337"] = "42 33 55", ["3338"] = "42 33 55", ["3341"] = "42 33 55", ["3342"] = "42 33 55", ["3343"] = "42 33 0", ["3344"] = "42 33 0", ["3345"] = "42 33 0", ["3346"] = "42 33 0", ["3347"] = "42 33 55", ["3348"] = "42 33 55", ["3351"] = "42 33 55", ["3352"] = "42 33 55", ["3353"] = "42 33 0", ["3354"] = "42 33 0", ["3355"] = "42 33 0", ["3356"] = "42 33 0", ["3357"] = "42 33 55", ["3358"] = "42 33 55", ["3361"] = "42 33 55", ["3362"] = "42 33 55", ["3363"] = "42 33 0", ["3364"] = "42 33 0", ["3365"] = "42 33 0", ["3366"] = "42 33 0", ["3367"] = "42 33 55", ["3368"] = "42 33 55", ["3371"] = "42 55 55", ["3372"] = "42 55 55", ["3373"] = "42 55 0", ["3374"] = "42 55 0", ["3375"] = "42 55 0", ["3376"] = "42 55 0", ["3377"] = "42 55 55", ["3378"] = "42 55 55", ["3381"] = "42 55 55", ["3382"] = "42 55 55", ["3383"] = "42 55 0", ["3384"] = "42 55 0", ["3385"] = "42 55 0", ["3386"] = "42 55 0", ["3387"] = "42 55 55", ["3388"] = "42 55 55", ["3411"] = "31 33 55", ["3412"] = "31 33 55", ["3413"] = "31 55 0", ["3414"] = "31 55 0", ["3415"] = "31 55 0", ["3416"] = "31 55 0", ["3417"] = "31 33 55", ["3418"] = "31 33 55", ["3421"] = "31 33 55", ["3422"] = "31 33 55", ["3423"] = "31 55 0", ["3424"] = "31 55 0", ["3425"] = "31 55 0", ["3426"] = "31 55 0", ["3427"] = "31 33 55", ["3428"] = "31 33 55", ["3431"] = "31 33 55", ["3432"] = "31 33 55", ["3433"] = "31 33 0", ["3434"] = "31 33 0", ["3435"] = "31 33 0", ["3436"] = "31 33 0", ["3437"] = "31 33 55", ["3438"] = "31 33 55", ["3441"] = "31 33 55", ["3442"] = "31 33 55", ["3443"] = "31 33 0", ["3444"] = "31 33 0", ["3445"] = "31 33 0", ["3446"] = "31 33 0", ["3447"] = "31 33 55", ["3448"] = "31 33 55", ["3451"] = "31 33 55", ["3452"] = "31 33 55", ["3453"] = "31 33 0", ["3454"] = "31 33 0", ["3455"] = "31 33 0", ["3456"] = "31 33 0", ["3457"] = "31 33 55", ["3458"] = "31 33 55", ["3461"] = "31 33 55", ["3462"] = "31 33 55", ["3463"] = "31 33 0", ["3464"] = "31 33 0", ["3465"] = "31 33 0", ["3466"] = "31 33 0", ["3467"] = "31 33 55", ["3468"] = "31 33 55", ["3471"] = "31 55 55", ["3472"] = "31 55 55", ["3473"] = "31 55 0", ["3474"] = "31 55 0", ["3475"] = "31 55 0", ["3476"] = "31 55 0", ["3477"] = "31 55 55", ["3478"] = "31 55 55", ["3481"] = "31 55 55", ["3482"] = "31 55 55", ["3483"] = "31 55 0", ["3484"] = "31 55 0", ["3485"] = "31 55 0", ["3486"] = "31 55 0", ["3487"] = "31 55 55", ["3488"] = "31 55 55", ["3511"] = "42 33 55", ["3512"] = "42 33 55", ["3513"] = "42 55 0", ["3514"] = "42 55 0", ["3515"] = "42 55 0", ["3516"] = "42 55 0", ["3517"] = "42 33 55", ["3518"] = "42 33 55", ["3521"] = "42 33 55", ["3522"] = "42 33 55", ["3523"] = "42 55 0", ["3524"] = "42 55 0", ["3525"] = "42 55 0", ["3526"] = "42 55 0", ["3527"] = "42 33 55", ["3528"] = "42 33 55", ["3531"] = "42 33 55", ["3532"] = "42 33 55", ["3533"] = "42 33 0", ["3534"] = "42 33 0", ["3535"] = "42 33 0", ["3536"] = "42 33 0", ["3537"] = "42 33 55", ["3538"] = "42 33 55", ["3541"] = "42 33 55", ["3542"] = "42 33 55", ["3543"] = "42 33 0", ["3544"] = "42 33 0", ["3545"] = "42 33 0", ["3546"] = "42 33 0", ["3547"] = "42 33 55", ["3548"] = "42 33 55", ["3551"] = "42 33 55", ["3552"] = "42 33 55", ["3553"] = "42 33 0", ["3554"] = "42 33 0", ["3555"] = "42 33 0", ["3556"] = "42 33 0", ["3557"] = "42 33 55", ["3558"] = "42 33 55", ["3561"] = "42 33 55", ["3562"] = "42 33 55", ["3563"] = "42 33 0", ["3564"] = "42 33 0", ["3565"] = "42 33 0", ["3566"] = "42 33 0", ["3567"] = "42 33 55", ["3568"] = "42 33 55", ["3571"] = "42 55 55", ["3572"] = "42 55 55", ["3573"] = "42 55 0", ["3574"] = "42 55 0", ["3575"] = "42 55 0", ["3576"] = "42 55 0", ["3577"] = "42 55 55", ["3578"] = "42 55 55", ["3581"] = "42 55 55", ["3582"] = "42 55 55", ["3583"] = "42 55 0", ["3584"] = "42 55 0", ["3585"] = "42 55 0", ["3586"] = "42 55 0", ["3587"] = "42 55 55", ["3588"] = "42 55 55", ["3611"] = "31 33 55", ["3612"] = "31 33 55", ["3613"] = "31 55 0", ["3614"] = "31 55 0", ["3615"] = "31 55 0", ["3616"] = "31 55 0", ["3617"] = "31 33 55", ["3618"] = "31 33 55", ["3621"] = "31 33 55", ["3622"] = "31 33 55", ["3623"] = "31 55 0", ["3624"] = "31 55 0", ["3625"] = "31 55 0", ["3626"] = "31 55 0", ["3627"] = "31 33 55", ["3628"] = "31 33 55", ["3631"] = "31 33 55", ["3632"] = "31 33 55", ["3633"] = "31 33 0", ["3634"] = "31 33 0", ["3635"] = "31 33 0", ["3636"] = "31 33 0", ["3637"] = "31 33 55", ["3638"] = "31 33 55", ["3641"] = "31 33 55", ["3642"] = "31 33 55", ["3643"] = "31 33 0", ["3644"] = "31 33 0", ["3645"] = "31 33 0", ["3646"] = "31 33 0", ["3647"] = "31 33 55", ["3648"] = "31 33 55", ["3651"] = "31 33 55", ["3652"] = "31 33 55", ["3653"] = "31 33 0", ["3654"] = "31 33 0", ["3655"] = "31 33 0", ["3656"] = "31 33 0", ["3657"] = "31 33 55", ["3658"] = "31 33 55", ["3661"] = "31 33 55", ["3662"] = "31 33 55", ["3663"] = "31 33 0", ["3664"] = "31 33 0", ["3665"] = "31 33 0", ["3666"] = "31 33 0", ["3667"] = "31 33 55", ["3668"] = "31 33 55", ["3671"] = "31 55 55", ["3672"] = "31 55 55", ["3673"] = "31 55 0", ["3674"] = "31 55 0", ["3675"] = "31 55 0", ["3676"] = "31 55 0", ["3677"] = "31 55 55", ["3678"] = "31 55 55", ["3681"] = "31 55 55", ["3682"] = "31 55 55", ["3683"] = "31 55 0", ["3684"] = "31 55 0", ["3685"] = "31 55 0", ["3686"] = "31 55 0", ["3687"] = "31 55 55", ["3688"] = "31 55 55", ["3711"] = "55 55 55", ["3712"] = "55 55 55", ["3713"] = "55 55 0", ["3714"] = "55 55 0", ["3715"] = "55 55 0", ["3716"] = "55 55 0", ["3717"] = "55 55 55", ["3718"] = "55 55 55", ["3721"] = "55 55 55", ["3722"] = "55 55 55", ["3723"] = "55 55 0", ["3724"] = "55 55 0", ["3725"] = "55 55 0", ["3726"] = "55 55 0", ["3727"] = "55 55 55", ["3728"] = "55 55 55", ["3731"] = "55 33 55", ["3732"] = "55 33 55", ["3733"] = "55 33 0", ["3734"] = "55 33 0", ["3735"] = "55 33 0", ["3736"] = "55 33 0", ["3737"] = "55 33 55", ["3738"] = "55 33 55", ["3741"] = "55 33 55", ["3742"] = "55 33 55", ["3743"] = "55 33 0", ["3744"] = "55 33 0", ["3745"] = "55 33 0", ["3746"] = "55 33 0", ["3747"] = "55 33 55", ["3748"] = "55 33 55", ["3751"] = "55 33 55", ["3752"] = "55 33 55", ["3753"] = "55 33 0", ["3754"] = "55 33 0", ["3755"] = "55 33 0", ["3756"] = "55 33 0", ["3757"] = "55 33 55", ["3758"] = "55 33 55", ["3761"] = "55 33 55", ["3762"] = "55 33 55", ["3763"] = "55 33 0", ["3764"] = "55 33 0", ["3765"] = "55 33 0", ["3766"] = "55 33 0", ["3767"] = "55 33 55", ["3768"] = "55 33 55", ["3771"] = "55 55 55", ["3772"] = "55 55 55", ["3773"] = "55 55 0", ["3774"] = "55 55 0", ["3775"] = "55 55 0", ["3776"] = "55 55 0", ["3777"] = "55 55 55", ["3778"] = "55 55 55", ["3781"] = "55 55 55", ["3782"] = "55 55 55", ["3783"] = "55 55 0", ["3784"] = "55 55 0", ["3785"] = "55 55 0", ["3786"] = "55 55 0", ["3787"] = "55 55 55", ["3788"] = "55 55 55", ["3811"] = "22 33 55", ["3812"] = "22 33 55", ["3813"] = "22 55 0", ["3814"] = "22 55 0", ["3815"] = "22 55 0", ["3816"] = "22 55 0", ["3817"] = "22 33 55", ["3818"] = "22 33 55", ["3821"] = "22 33 55", ["3822"] = "22 33 55", ["3823"] = "22 55 0", ["3824"] = "22 55 0", ["3825"] = "22 55 0", ["3826"] = "22 55 0", ["3827"] = "22 33 55", ["3828"] = "22 33 55", ["3831"] = "22 33 55", ["3832"] = "22 33 55", ["3833"] = "22 33 0", ["3834"] = "22 33 0", ["3835"] = "22 33 0", ["3836"] = "22 33 0", ["3837"] = "22 33 55", ["3838"] = "22 33 55", ["3841"] = "22 33 55", ["3842"] = "22 33 55", ["3843"] = "22 33 0", ["3844"] = "22 33 0", ["3845"] = "22 33 0", ["3846"] = "22 33 0", ["3847"] = "22 33 55", ["3848"] = "22 33 55", ["3851"] = "22 33 55", ["3852"] = "22 33 55", ["3853"] = "22 33 0", ["3854"] = "22 33 0", ["3855"] = "22 33 0", ["3856"] = "22 33 0", ["3857"] = "22 33 55", ["3858"] = "22 33 55", ["3861"] = "22 33 55", ["3862"] = "22 33 55", ["3863"] = "22 33 0", ["3864"] = "22 33 0", ["3865"] = "22 33 0", ["3866"] = "22 33 0", ["3867"] = "22 33 55", ["3868"] = "22 33 55", ["3871"] = "22 55 55", ["3872"] = "22 55 55", ["3873"] = "22 55 0", ["3874"] = "22 55 0", ["3875"] = "22 55 0", ["3876"] = "22 55 0", ["3877"] = "22 55 55", ["3878"] = "22 55 55", ["3881"] = "22 55 55", ["3882"] = "22 55 55", ["3883"] = "22 55 0", ["3884"] = "22 55 0", ["3885"] = "22 55 0", ["3886"] = "22 55 0", ["3887"] = "22 55 55", ["3888"] = "22 55 55", }, ['cs'] = { ["10"] = "", ["11"] = "53", ["13"] = "44", ["14"] = "213", ["15"] = "35", ["16"] = "13", ["17"] = "55", ["18"] = "23", ["211"] = "55 53", ["212"] = "55 53", ["213"] = "55 21", ["214"] = "55 21", ["215"] = "55 21", ["216"] = "55 21", ["217"] = "55 53", ["218"] = "55 53", ["221"] = "22 22", ["222"] = "22 22", ["223"] = "22 22", ["224"] = "22 22", ["225"] = "22 24", ["226"] = "22 24", ["227"] = "22 44", ["228"] = "22 44", ["231"] = "33 53", ["232"] = "33 53", ["233"] = "35 21", ["234"] = "35 21", ["235"] = "44 44", ["236"] = "44 44", ["237"] = "33 53", ["238"] = "33 53", ["241"] = "22 53", ["242"] = "22 53", ["243"] = "13 21", ["244"] = "13 21", ["245"] = "22 34", ["246"] = "22 34", ["247"] = "22 53", ["248"] = "22 53", ["251"] = "33 53", ["252"] = "33 53", ["253"] = "44 44", ["254"] = "44 44", ["255"] = "55 21", ["256"] = "55 21", ["257"] = "33 53", ["258"] = "33 53", ["261"] = "22 53", ["262"] = "22 53", ["263"] = "13 21", ["264"] = "13 21", ["265"] = "22 34", ["266"] = "22 34", ["267"] = "22 53", ["268"] = "22 53", ["271"] = "33 53", ["272"] = "33 53", ["273"] = "44 44", ["274"] = "44 44", ["275"] = "33 34", ["276"] = "33 34", ["277"] = "33 53", ["278"] = "33 53", ["281"] = "22 34", ["282"] = "22 34", ["283"] = "22 34", ["284"] = "22 34", ["285"] = "22 34", ["286"] = "22 34", ["287"] = "22 34", ["288"] = "22 34", ["311"] = "55 55 53", ["312"] = "55 55 53", ["313"] = "55 55 21", ["314"] = "55 55 21", ["315"] = "55 33 21", ["316"] = "55 33 21", ["317"] = "55 55 53", ["318"] = "55 55 53", ["321"] = "22 22 22", ["322"] = "22 22 22", ["323"] = "22 22 22", ["324"] = "22 22 22", ["325"] = "22 22 22", ["326"] = "22 22 22", ["327"] = "22 22 22", ["328"] = "22 22 22", ["331"] = "33 55 53", ["332"] = "33 55 53", ["333"] = "35 33 21", ["334"] = "44 44 44", ["335"] = "33 55 21", ["336"] = "33 55 21", ["337"] = "33 55 53", ["338"] = "33 55 53", ["341"] = "22 55 53", ["342"] = "22 55 53", ["343"] = "13 22 21", ["344"] = "13 22 21", ["345"] = "22 55 21", ["346"] = "22 55 21", ["347"] = "22 55 53", ["348"] = "22 55 53", ["351"] = "33 55 53", ["352"] = "33 55 53", ["353"] = "35 33 21", ["354"] = "44 44 44", ["355"] = "33 55 21", ["356"] = "33 55 21", ["357"] = "33 55 53", ["358"] = "33 55 53", ["361"] = "22 55 53", ["362"] = "22 55 53", ["363"] = "13 22 21", ["364"] = "13 22 21", ["365"] = "22 55 21", ["366"] = "22 55 21", ["367"] = "22 55 53", ["368"] = "22 55 53", ["371"] = "33 55 53", ["372"] = "33 55 53", ["373"] = "35 33 21", ["374"] = "44 44 44", ["375"] = "33 55 21", ["376"] = "33 55 21", ["377"] = "33 55 53", ["378"] = "33 55 53", ["381"] = "22 22 53", ["382"] = "22 22 53", ["383"] = "22 22 53", ["384"] = "22 22 53", ["385"] = "22 22 34", ["386"] = "22 22 34", ["387"] = "22 22 34", ["388"] = "22 22 34", }, ['sz'] = { ["1-"] = "33", ["2-"] = "33 33", ["3-"] = "33 33 33", ["4-"] = "33 33 33 33", ["10"] = "", ["11"] = "44", ["21"] = "44 0", ["31"] = "44 44 0", ["41"] = "44 44 44 0", ["12"] = "223", ["22"] = "22 33", ["32"] = "22 33 0", ["42"] = "22 33 44 0", ["13"] = "51", ["23"] = "52 11", ["33"] = "52 11 0", ["43"] = "52 11 11 0", ["15"] = "523", ["25"] = "52 33", ["35"] = "52 33 0", ["45"] = "52 33 44 0", ["16"] = "231", ["26"] = "23 11", ["36"] = "23 11 0", ["46"] = "23 11 11 0", ["17"] = "43", ["18"] = "23", ["271"] = "44 23", ["371"] = "44 23 0", ["471"] = "44 23 44 0", ["272"] = "44 23", ["372"] = "44 23 0", ["472"] = "44 23 44 0", ["273"] = "55 51", ["373"] = "55 51 0", ["473"] = "55 51 11 0", ["275"] = "55 523", ["375"] = "55 52 33", ["475"] = "55 52 22 33", ["276"] = "55 523", ["376"] = "55 52 33", ["476"] = "55 52 22 33", ["277"] = "44 44", ["377"] = "44 44 0", ["477"] = "44 44 44 22", ["278"] = "44 44", ["378"] = "44 44 0", ["478"] = "44 44 44 22", ["270"] = "44 0", ["281"] = "22 33", ["381"] = "22 33 0", ["481"] = "22 33 44 0", ["282"] = "22 33", ["382"] = "22 33 0", ["482"] = "22 33 44 0", ["283"] = "22 51", ["383"] = "22 51 0", ["483"] = "22 51 11 0", ["285"] = "22 523", ["385"] = "22 52 33", ["485"] = "22 52 22 33", ["286"] = "22 523", ["386"] = "22 52 33", ["486"] = "22 52 22 33", ["287"] = "33 44", ["387"] = "33 44 0", ["487"] = "33 44 22 0", ["288"] = "33 44", ["388"] = "33 44 0", ["488"] = "33 44 22 0", ["280"] = "33 0", --RPS ["1s"] = "44", ["2s"] = "223", ["3s"] = "51", ["5s"] = "51", ["6s"] = "231", ["7s"] = "43", ["8s"] = "23", ["multiple"] = "33" }, ['ks'] = { ["10"] = "", ["11"] = "55", ["12"] = "13", ["13"] = "52", ["15"] = "412", ["16"] = "213", ["17"] = "55", ["18"] = "23", ["211"] = "44 41", ["212"] = "44 41", ["213"] = "55 31", ["214"] = "55 31", ["215"] = "55 31", ["216"] = "55 31", ["217"] = "44 44", ["218"] = "44 44", --55 31 ["221"] = "23 41", ["222"] = "23 41", ["223"] = "23 41", ["224"] = "23 41", ["225"] = "23 41", ["226"] = "23 41", ["227"] = "23 44", ["228"] = "23 44", ["231"] = "52 33", ["232"] = "52 33", ["233"] = "52 33", ["234"] = "52 33", ["235"] = "53 41", ["236"] = "53 41", ["237"] = "52 33", ["238"] = "52 33", ["241"] = "22 44", ["242"] = "31 33", ["243"] = "31 33", ["244"] = "31 31", ["245"] = "31 31", ["246"] = "31 31", ["247"] = "31 31", ["248"] = "31 31", ["251"] = "52 33", ["252"] = "52 33", ["253"] = "22 44", ["254"] = "22 44", ["255"] = "22 44", ["256"] = "22 44", ["257"] = "23 44", ["258"] = "23 44", --22 44 ["261"] = "22 44", ["262"] = "22 44", ["263"] = "22 44", ["264"] = "22 44", ["265"] = "22 44", ["266"] = "22 44", ["267"] = "22 44", ["268"] = "22 44", ["271"] = "44 44", ["272"] = "44 44", ["273"] = "55 52", ["274"] = "55 52", ["275"] = "55 31", ["276"] = "55 31", ["277"] = "55 55", ["278"] = "55 55", --55 33 ["281"] = "22 31", ["282"] = "22 31", ["283"] = "22 23", ["284"] = "22 23", ["285"] = "22 31", ["286"] = "22 31", ["287"] = "22 33", ["288"] = "22 33", }, ['yx'] = { ["10"] = "", ["11"] = "55", ["12"] = "224", ["13"] = "52", ["14"] = "33", ["15"] = "412", ["16"] = "21", ["17"] = "55", ["18"] = "33", }, ['cz'] = { --for the underlying sequences that are listed with multiple chains, one is chosen for simplicity. The other sandhi chain can be accessed by having the chain tone be different from the underlying tone ["10"] = "", ["11"] = "55", ["12"] = "13", ["13"] = "45", ["15"] = "523", ["16"] = "24", ["17"] = "55", ["18"] = "23", ["3066"] = "45 55 0", ["211"] = "33 33", ["212"] = "33 33", ["213"] = "33 33", ["215"] = "55 0", ["216"] = "55 0", ["217"] = "55 55", ["218"] = "55 55", ["221"] = "11 33", ["222"] = "11 33", ["223"] = "11 33", ["225"] = "11 33", ["226"] = "11 33", ["227"] = "11 33", ["228"] = "11 33", ["231"] = "45 55", ["232"] = "45 55", ["233"] = "45 55", ["235"] = "45 55", ["236"] = "45 55", ["237"] = "45 55", ["238"] = "45 5", ["251"] = "55 23", ["252"] = "55 23", ["253"] = "55 23", ["255"] = "55 23", ["256"] = "55 23", ["257"] = "55 23", ["258"] = "55 23", ["261"] = "11 24", ["262"] = "11 24", ["263"] = "11 24", ["265"] = "23 11", ["266"] = "23 11", ["267"] = "11 24", ["268"] = "11 24", ["271"] = "55 55", ["272"] = "55 55", ["273"] = "55 55", ["275"] = "55 42", ["276"] = "55 42", ["277"] = "55 55", ["278"] = "55 55", --aspirated tone 7 is considered underlying tone 8 for simplicity ["281"] = "11 13", ["282"] = "11 13", ["283"] = "11 13", ["285"] = "22 42", ["286"] = "22 42", ["287"] = "22 55", ["288"] = "22 55", ["3111"] = "33 33 0", ["3112"] = "33 33 0", ["3113"] = "33 33 0", ["3115"] = "33 33 0", ["3116"] = "33 33 0", ["3117"] = "33 33 0", ["3118"] = "33 33 0", ["3121"] = "33 33 0", ["3122"] = "33 33 0", ["3123"] = "33 33 0", ["3125"] = "33 33 0", ["3126"] = "33 33 0", ["3127"] = "33 33 0", ["3128"] = "33 33 0", ["3131"] = "55 42 0", ["3132"] = "55 42 0", ["3133"] = "55 42 0", ["3135"] = "55 42 0", ["3136"] = "55 42 0", ["3137"] = "55 42 0", ["3138"] = "55 42 0", ["3151"] = "55 42 0", ["3152"] = "55 42 0", ["3153"] = "55 42 0", ["3155"] = "55 42 0", ["3156"] = "55 42 0", ["3157"] = "55 42 0", ["3158"] = "55 42 0", ["3161"] = "55 42 0", ["3162"] = "55 42 0", ["3163"] = "55 42 0", ["3165"] = "55 42 0", ["3166"] = "55 42 0", ["3167"] = "55 42 0", ["3168"] = "55 42 0", ["3171"] = "55 55 0", ["3172"] = "55 55 0", ["3173"] = "55 55 0", ["3175"] = "55 55 0", ["3176"] = "", ["3177"] = "55 55 55", ["3178"] = "55 55 55", ["3181"] = "55 55 0", ["3182"] = "55 55 0", ["3183"] = "55 55 0", ["3185"] = "55 55 0", ["3186"] = "55 55 0", ["3187"] = "55 55 55", ["3188"] = "55 55 55", ["3102"] = "33 33 0", ["3211"] = "11 33 0", ["3212"] = "11 33 0", ["3213"] = "11 33 0", ["3215"] = "11 33 0", ["3216"] = "11 33 0", ["3217"] = "11 33 55", ["3218"] = "11 33 55", ["3221"] = "11 33 0", ["3222"] = "11 33 0", ["3223"] = "11 33 0", ["3225"] = "11 33 0", ["3226"] = "11 33 0", ["3227"] = "11 33 55", ["3228"] = "11 33 55", ["3231"] = "11 33 0", ["3232"] = "11 33 0", ["3233"] = "11 33 0", ["3235"] = "11 33 0", ["3236"] = "11 33 0", ["3237"] = "11 33 55", ["3238"] = "11 33 55", ["3251"] = "11 33 0", ["3252"] = "11 33 0", ["3253"] = "11 33 0", ["3255"] = "11 33 0", ["3256"] = "11 33 0", ["3257"] = "11 33 55", ["3258"] = "11 33 55", ["3261"] = "11 33 0", ["3262"] = "11 33 0", ["3263"] = "11 33 0", ["3265"] = "11 33 0", ["3266"] = "11 33 0", ["3267"] = "11 33 55", ["3268"] = "11 33 55", ["3271"] = "11 33 0", ["3272"] = "11 33 0", ["3273"] = "11 33 0", ["3275"] = "11 33 0", ["3276"] = "11 33 0", ["3277"] = "11 33 55", ["3278"] = "11 33 55", ["3281"] = "11 33 0", ["3282"] = "11 33 0", ["3283"] = "11 33 0", ["3285"] = "11 33 0", ["3286"] = "11 33 0", ["3287"] = "11 33 55", ["3288"] = "11 33 55", ["3202"] = "11 33 0", ["3311"] = "45 55 0", ["3312"] = "45 55 0", ["3313"] = "45 55 0", ["3315"] = "45 55 0", ["3316"] = "45 55 0", ["3317"] = "45 55 55", ["3318"] = "45 55 55", ["3321"] = "45 55 0", ["3322"] = "45 55 0", ["3323"] = "45 55 0", ["3325"] = "45 55 0", ["3326"] = "45 55 0", ["3327"] = "45 55 55", ["3328"] = "45 55 55", ["3331"] = "45 55 0", ["3332"] = "45 55 0", ["3333"] = "45 55 0", ["3335"] = "45 55 0", ["3336"] = "45 55 0", ["3337"] = "", ["3338"] = "45 55 55", ["3351"] = "45 55 0", ["3352"] = "45 55 0", ["3353"] = "45 55 0", ["3355"] = "45 55 0", ["3356"] = "45 55 0", ["3357"] = "45 55 55", ["3358"] = "45 55 55", ["3361"] = "45 55 0", ["3362"] = "45 55 0", ["3363"] = "45 55 0", ["3365"] = "45 55 0", ["3366"] = "45 55 0", ["3367"] = "45 55 55", ["3368"] = "", ["3371"] = "45 55 0", ["3372"] = "45 55 0", ["3373"] = "45 55 0", ["3375"] = "45 55 0", ["3376"] = "45 55 0", ["3377"] = "45 55 55", ["3378"] = "45 55 55", ["3381"] = "45 55 0", ["3382"] = "45 55 0", ["3383"] = "45 55 0", ["3385"] = "45 55 0", ["3386"] = "45 55 0", ["3387"] = "45 55 0", ["3388"] = "45 55 55", ["3330"] = "45 55 0", ["3303"] = "45 55 0", ["3305"] = "45 55 0", ["3511"] = "52 22 33", ["3512"] = "52 22 33", ["3513"] = "52 22 33", ["3515"] = "52 22 33", ["3516"] = "52 22 33", ["3517"] = "52 22 33", ["3518"] = "52 22 33", ["3521"] = "52 22 33", ["3522"] = "52 22 33", ["3523"] = "52 22 33", ["3525"] = "52 22 33", ["3526"] = "52 22 33", ["3527"] = "52 22 33", ["3528"] = "52 22 33", ["3531"] = "52 22 33", ["3532"] = "52 22 33", ["3533"] = "52 22 33", ["3535"] = "52 22 33", ["3536"] = "52 22 33", ["3537"] = "52 22 33", ["3538"] = "52 22 33", ["3551"] = "52 22 33", ["3552"] = "52 22 33", ["3553"] = "52 22 33", ["3555"] = "52 22 33", ["3556"] = "52 22 33", ["3557"] = "52 22 33", ["3558"] = "45 55 55", ["3561"] = "", ["3562"] = "52 22 33", ["3563"] = "", ["3565"] = "45 55 0", ["3566"] = "52 22 33", ["3567"] = "", ["3568"] = "45 55 55", ["3571"] = "52 22 33", ["3572"] = "52 22 33", ["3573"] = "52 22 33", ["3575"] = "52 22 33", ["3576"] = "", ["3577"] = "52 22 33", ["3578"] = "52 22 33", ["3581"] = "52 22 33", ["3582"] = "52 22 33", ["3583"] = "52 22 33", ["3585"] = "", ["3586"] = "52 22 33", ["3587"] = "52 22 33", ["3588"] = "52 22 33", ["3500"] = "52 22 33", ["3507"] = "52 22 33", ["3611"] = "11 11 24", ["3612"] = "11 11 24", ["3613"] = "11 11 24", ["3615"] = "11 11 24", ["3616"] = "11 11 24", ["3617"] = "11 11 24", ["3618"] = "11 11 24", ["3621"] = "11 11 24", ["3622"] = "11 11 24", ["3623"] = "11 11 24", ["3625"] = "11 11 24", ["3626"] = "11 11 24", ["3627"] = "11 11 24", ["3628"] = "11 11 24", ["3631"] = "11 11 24", ["3632"] = "11 11 24", ["3633"] = "11 11 24", ["3635"] = "11 11 24", ["3636"] = "11 11 24", ["3637"] = "11 11 24", ["3638"] = "11 11 24", ["3651"] = "11 11 24", ["3652"] = "11 11 24", ["3653"] = "11 11 24", ["3655"] = "23 11 0", ["3656"] = "23 11 0", ["3657"] = "23 11 0", ["3658"] = "23 11 0", ["3661"] = "23 11 0", ["3662"] = "11 11 24", ["3663"] = "23 11 0", ["3665"] = "23 11 0", ["3666"] = "23 11 0", ["3667"] = "23 11 0", ["3668"] = "23 11 0", ["3671"] = "11 11 24", ["3672"] = "11 11 24", ["3673"] = "11 11 24", ["3675"] = "11 11 24", ["3676"] = "11 11 24", ["3677"] = "11 11 24", ["3678"] = "11 11 24", ["3681"] = "11 11 24", ["3682"] = "11 11 24", ["3683"] = "11 11 24", ["3685"] = "11 11 24", ["3686"] = "11 11 24", ["3687"] = "11 11 24", ["3688"] = "11 11 24", ["3600"] = "11 11 24", ["3711"] = "55 55 0", ["3712"] = "55 55 0", ["3713"] = "55 55 0", ["3715"] = "55 55 0", ["3716"] = "55 55 0", ["3717"] = "11 11 13", ["3718"] = "11 11 13", ["3721"] = "11 11 13", ["3722"] = "11 11 13", ["3723"] = "11 11 13", ["3725"] = "55 42 0", ["3726"] = "55 55 0", ["3727"] = "55 55 55", ["3728"] = "55 55 55", ["3731"] = "55 55 0", ["3732"] = "55 55 0", ["3733"] = "11 11 13", ["3735"] = "55 55 0", ["3736"] = "55 55 0", ["3737"] = "55 55 55", ["3738"] = "55 55 55", ["3751"] = "55 42 0", ["3752"] = "55 42 0", ["3753"] = "55 42 0", ["3755"] = "55 42 0", ["3756"] = "", ["3757"] = "55 42 0", ["3758"] = "", ["3761"] = "55 42 0", ["3762"] = "55 42 0", ["3763"] = "55 42 0", ["3765"] = "55 42 0", ["3766"] = "55 42 0", ["3767"] = "55 42 0", ["3768"] = "55 42 0", ["3771"] = "55 55 0", ["3772"] = "55 55 0", ["3773"] = "55 55 0", ["3775"] = "55 55 0", ["3776"] = "55 55 0", ["3777"] = "55 55 55", ["3778"] = "55 55 55", ["3781"] = "", ["3782"] = "55 55 0", ["3783"] = "55 55 0", ["3785"] = "55 55 0", ["3786"] = "55 55 0", ["3787"] = "55 55 55", ["3788"] = "55 55 55", ["3770"] = "55 55 0", ["3780"] = "55 55 0", ["3707"] = "55 55 55", ["3811"] = "11 11 13", ["3812"] = "11 11 13", ["3813"] = "11 11 13", ["3815"] = "11 11 13", ["3816"] = "11 11 13", ["3817"] = "11 11 13", ["3818"] = "", ["3821"] = "11 11 13", ["3822"] = "11 11 13", ["3823"] = "11 11 13", ["3825"] = "11 11 13", ["3826"] = "11 11 13", ["3827"] = "11 11 13", ["3828"] = "11 11 13", ["3831"] = "11 11 13", ["3832"] = "11 11 13", ["3833"] = "11 11 13", ["3835"] = "11 11 13", ["3836"] = "11 11 13", ["3837"] = "11 11 13", ["3838"] = "11 11 13", ["3851"] = "22 42 0", ["3852"] = "22 42 0", ["3853"] = "22 42 0", ["3855"] = "22 42 0", ["3856"] = "22 42 0", ["3857"] = "22 42 0", ["3858"] = "", ["3861"] = "22 42 0", ["3862"] = "22 42 0", ["3863"] = "", ["3865"] = "22 42 0", ["3866"] = "22 42 0", ["3867"] = "22 42 0", ["3868"] = "22 42 0", ["3871"] = "11 11 13", ["3872"] = "11 11 13", ["3873"] = "11 11 13", ["3875"] = "22 55 0", ["3876"] = "22 55 0", ["3877"] = "22 55 55", ["3878"] = "22 55 55", ["3881"] = "11 11 13", ["3882"] = "11 11 13", ["3883"] = "11 11 13", ["3885"] = "22 55 0", ["3886"] = "22 55 0", ["3887"] = "22 55 55", ["3888"] = "22 55 55", ["3850"] = "22 42 0", ["3802"] = "22 42 0", --RPS ["1s"] = "", ["2s"] = "", ["3s"] = "", ["5s"] = "", ["6s"] = "", ["7s"] = "", ["8s"] = "", ["multiple"] = "33" }, ['jj'] = { ["10"] = "", ["11"] = "44", ["12"] = "213", ["13"] = "35", ["15"] = "52", ["16"] = "31", ["17"] = "55", ["18"] = "23", ["211"] = "44 31", ["212"] = "44 31", ["213"] = "44 31", ["215"] = "44 31", ["216"] = "44 31", ["217"] = "44 31", ["218"] = "44 31", ["221"] = "23 21", ["222"] = "23 21", ["223"] = "23 21", ["225"] = "23 21", ["226"] = "23 21", ["227"] = "23 22", ["228"] = "23 22", ["231"] = "35 33", ["232"] = "35 33", ["233"] = "35 33", ["235"] = "35 33", ["236"] = "35 33", ["237"] = "35 33", ["238"] = "35 33", ["251"] = "52 21", ["252"] = "52 21", ["253"] = "52 21", ["255"] = "52 21", ["256"] = "52 21", ["257"] = "31 22", ["258"] = "31 22", ["261"] = "31 21", ["262"] = "31 21", ["263"] = "31 21", ["265"] = "31 21", ["266"] = "31 21", ["267"] = "31 22", ["268"] = "31 22", ["271"] = "55 31", ["272"] = "55 31", ["273"] = "55 31", ["275"] = "55 31", ["276"] = "55 31", ["277"] = "55 33", ["278"] = "55 33", ["281"] = "23 31", ["282"] = "23 31", ["283"] = "23 31", ["285"] = "23 31", ["286"] = "23 31", ["287"] = "23 33", ["288"] = "23 22", }, ['jx'] = { ["10"] = "", ["11"] = "53", ["12"] = "31", ["13A"] = "433", ["13B"] = "435", ["14"] = "213", ["15"] = "334", ["16"] = "113", ["17"] = "55", ["18"] = "22", ["211"] = "44 53", ["212"] = "44 31", ["213"] = "44 21", ["214"] = "44 21", ["215"] = "44 21", ["216"] = "44 21", ["217"] = "44 55", ["218"] = "44 55", ["221"] = "22 44", ["222"] = "22 22", ["223"] = "13 53", ["224"] = "13 31", ["225"] = "13 53", ["226"] = "13 31", ["227"] = "31 55", ["228"] = "31 55", ["23A1"] = "44 53", ["23A2"] = "44 31", ["23A3"] = "44 21", ["23A4"] = "44 21", ["23A5"] = "44 21", ["23A6"] = "44 21", ["23A7"] = "44 55", ["23A8"] = "44 55", ["23B1"] = "13 53", ["23B2"] = "13 31", ["23B3"] = "22 13", ["23B4"] = "22 13", ["23B5"] = "22 13", ["23B6"] = "22 13", ["23B7"] = "13 55", ["23B8"] = "13 55", ["241"] = "22 13", ["242"] = "22 31", ["243"] = "22 13", ["244"] = "22 13", ["245"] = "22 13", ["246"] = "22 13", ["247"] = "22 55", ["248"] = "22 55", ["251"] = "44 53", ["252"] = "44 31", ["253"] = "44 21", ["254"] = "44 21", ["255"] = "44 21", ["256"] = "44 21", ["257"] = "44 55", ["258"] = "44 55", ["261"] = "22 53", ["262"] = "22 13", ["263"] = "13 21", ["264"] = "13 21", ["265"] = "13 21", ["266"] = "13 21", ["267"] = "22 55", ["268"] = "22 55", ["271"] = "55 44", ["272"] = "55 44", ["273"] = "55 21", ["274"] = "55 21", ["275"] = "55 21", ["276"] = "55 21", ["277"] = "55 55", ["278"] = "55 55", ["281"] = "22 44", ["282"] = "22 13", ["283"] = "22 13", ["284"] = "22 13", ["285"] = "22 13", ["286"] = "22 13", ["287"] = "22 55", ["288"] = "22 55", ["3111"] = "44 44 31", ["3112"] = "44 44 31", ["3113"] = "44 44 31", ["3114"] = "44 44 31", ["3115"] = "44 44 31", ["3116"] = "44 44 31", ["3117"] = "44 44 31", ["3118"] = "44 44 31", ["3121"] = "44 44 31", ["3122"] = "44 44 31", ["3123"] = "44 44 31", ["3124"] = "44 44 31", ["3125"] = "44 44 31", ["3126"] = "44 44 31", ["3127"] = "44 44 31", ["3128"] = "44 44 31", ["3131"] = "55 33 21", ["3132"] = "55 33 21", ["3133"] = "55 33 21", ["3134"] = "55 33 21", ["3135"] = "55 33 21", ["3136"] = "55 33 21", ["3137"] = "55 33 21", ["3138"] = "55 33 21", ["3141"] = "55 33 21", ["3142"] = "55 33 21", ["3143"] = "55 33 21", ["3144"] = "55 33 21", ["3145"] = "55 33 21", ["3146"] = "55 33 21", ["3147"] = "55 33 21", ["3148"] = "55 33 21", ["3151"] = "55 33 21", ["3152"] = "55 33 21", ["3153"] = "55 33 21", ["3154"] = "55 33 21", ["3155"] = "55 33 21", ["3156"] = "55 33 21", ["3157"] = "55 33 21", ["3158"] = "55 33 21", ["3161"] = "55 33 21", ["3162"] = "55 33 21", ["3163"] = "55 33 21", ["3164"] = "55 33 21", ["3165"] = "55 33 21", ["3166"] = "55 33 21", ["3167"] = "55 33 21", ["3168"] = "55 33 21", ["3171"] = "44 44 31", ["3172"] = "44 44 31", ["3173"] = "44 44 31", ["3174"] = "44 44 31", ["3175"] = "44 44 31", ["3176"] = "44 44 31", ["3177"] = "44 44 31", ["3178"] = "44 44 31", ["3181"] = "44 44 31", ["3182"] = "44 44 31", ["3183"] = "44 44 31", ["3184"] = "44 44 31", ["3185"] = "44 44 31", ["3186"] = "44 44 31", ["3187"] = "44 44 31", ["3188"] = "44 44 31", ["3211"] = "22 44 51", ["3212"] = "22 44 51", ["3213"] = "22 44 51", ["3214"] = "22 44 51", ["3215"] = "22 44 51", ["3216"] = "22 44 51", ["3217"] = "22 44 55", ["3218"] = "22 44 55", ["3221"] = "22 44 51", ["3222"] = "22 44 51", ["3223"] = "22 44 51", ["3224"] = "22 44 51", ["3225"] = "22 44 51", ["3226"] = "22 44 51", ["3227"] = "22 44 55", ["3228"] = "22 44 55", ["3231"] = "24 44 31", ["3232"] = "24 44 31", ["3233"] = "24 44 31", ["3234"] = "24 44 31", ["3235"] = "24 44 31", ["3236"] = "24 44 31", ["3237"] = "24 44 31", ["3238"] = "24 44 31", ["3241"] = "24 44 31", ["3242"] = "24 44 31", ["3243"] = "24 44 31", ["3244"] = "24 44 31", ["3245"] = "24 44 31", ["3246"] = "24 44 31", ["3247"] = "24 44 31", ["3248"] = "24 44 31", ["3251"] = "24 44 31", ["3252"] = "24 44 31", ["3253"] = "24 44 31", ["3254"] = "24 44 31", ["3255"] = "24 44 31", ["3256"] = "24 44 31", ["3257"] = "24 44 31", ["3258"] = "24 44 31", ["3261"] = "24 44 31", ["3262"] = "24 44 31", ["3263"] = "24 44 31", ["3264"] = "24 44 31", ["3265"] = "24 44 31", ["3266"] = "24 44 31", ["3267"] = "24 44 31", ["3268"] = "24 44 31", ["3271"] = "22 44 51", ["3272"] = "22 44 51", ["3273"] = "22 55 31", ["3274"] = "22 55 31", ["3275"] = "22 55 31", ["3276"] = "22 55 31", ["3277"] = "22 44 55", ["3278"] = "22 44 55", ["3281"] = "22 44 51", ["3282"] = "22 44 51", ["3283"] = "22 55 31", ["3284"] = "22 55 31", ["3285"] = "22 55 31", ["3286"] = "22 55 31", ["3287"] = "22 44 55", ["3288"] = "22 44 55", ["33A11"] = "44 33 51", ["33A12"] = "44 33 51", ["33A13"] = "44 44 31", ["33A14"] = "44 44 31", ["33A15"] = "44 44 31", ["33A16"] = "44 44 31", ["33A17"] = "44 33 55", ["33A18"] = "44 33 55", ["33A21"] = "44 33 51", ["33A22"] = "44 33 51", ["33A23"] = "44 44 31", ["33A24"] = "44 44 31", ["33A25"] = "44 44 31", ["33A26"] = "44 44 31", ["33A27"] = "44 33 55", ["33A28"] = "44 33 55", ["33A31"] = "44 33 51", ["33A32"] = "44 33 51", ["33A33"] = "44 44 31", ["33A34"] = "44 44 31", ["33A35"] = "44 44 31", ["33A36"] = "44 33 51", ["33A37"] = "44 33 55", ["33A38"] = "44 33 55", ["33A41"] = "44 33 51", ["33A42"] = "44 33 51", ["33A43"] = "44 44 31", ["33A44"] = "44 44 31", ["33A45"] = "44 44 31", ["33A46"] = "44 33 51", ["33A47"] = "44 33 55", ["33A48"] = "44 33 55", ["33A51"] = "44 33 51", ["33A52"] = "44 33 51", ["33A53"] = "44 44 31", ["33A54"] = "44 44 31", ["33A55"] = "44 33 51", ["33A56"] = "44 33 51", ["33A57"] = "44 33 55", ["33A58"] = "44 33 55", ["33A61"] = "44 33 51", ["33A62"] = "44 33 51", ["33A63"] = "44 33 51", ["33A64"] = "44 33 51", ["33A65"] = "44 44 31", ["33A66"] = "44 44 31", ["33A67"] = "44 33 55", ["33A68"] = "44 33 55", ["33A71"] = "44 33 51", ["33A72"] = "44 33 51", ["33A73"] = "44 44 31", ["33A74"] = "44 44 31", ["33A75"] = "44 44 31", ["33A76"] = "44 44 31", ["33A77"] = "44 33 55", ["33A78"] = "44 33 55", ["33A81"] = "44 33 51", ["33A82"] = "44 33 51", ["33A83"] = "44 44 31", ["33A84"] = "44 44 31", ["33A85"] = "44 44 31", ["33A86"] = "44 44 31", ["33A87"] = "44 33 55", ["33A88"] = "44 33 55", ["33B11"] = "22 22 51", ["33B12"] = "22 22 51", ["33B13"] = "22 44 31", ["33B14"] = "22 44 31", ["33B15"] = "22 44 31", ["33B16"] = "22 44 31", ["33B17"] = "44 33 55", ["33B18"] = "44 33 55", ["33B21"] = "22 22 51", ["33B22"] = "22 22 51", ["33B23"] = "22 44 31", ["33B24"] = "22 44 31", ["33B25"] = "22 44 31", ["33B26"] = "22 44 31", ["33B27"] = "44 33 55", ["33B28"] = "44 33 55", ["33B31"] = "22 22 51", ["33B32"] = "22 22 51", ["33B33"] = "22 22 51", ["33B34"] = "22 22 51", ["33B35"] = "22 22 51", ["33B36"] = "22 22 51", ["33B37"] = "22 22 55", ["33B38"] = "22 22 55", ["33B41"] = "22 22 51", ["33B42"] = "22 22 51", ["33B43"] = "22 22 51", ["33B44"] = "22 22 51", ["33B45"] = "22 22 51", ["33B46"] = "22 22 51", ["33B47"] = "22 22 55", ["33B48"] = "22 22 55", ["33B51"] = "22 22 51", ["33B52"] = "22 22 51", ["33B53"] = "22 44 31", ["33B54"] = "22 44 31", ["33B55"] = "22 44 31", ["33B56"] = "22 44 31", ["33B57"] = "22 22 55", ["33B58"] = "22 22 55", ["33B61"] = "22 22 51", ["33B62"] = "22 22 51", ["33B63"] = "22 44 31", ["33B64"] = "22 44 31", ["33B65"] = "22 44 31", ["33B66"] = "22 44 31", ["33B67"] = "22 22 55", ["33B68"] = "22 22 55", ["33B71"] = "22 22 51", ["33B72"] = "22 22 51", ["33B73"] = "22 44 31", ["33B74"] = "22 44 31", ["33B75"] = "22 44 31", ["33B76"] = "22 44 31", ["33B77"] = "22 22 55", ["33B78"] = "22 22 55", ["33B81"] = "22 22 51", ["33B82"] = "22 22 51", ["33B83"] = "22 44 31", ["33B84"] = "22 44 31", ["33B85"] = "22 44 31", ["33B86"] = "22 44 31", ["33B87"] = "22 22 55", ["33B88"] = "22 22 55", ["3411"] = "22 22 55", ["3412"] = "22 22 55", ["3413"] = "22 55 31", ["3414"] = "22 55 31", ["3415"] = "22 55 31", ["3416"] = "22 55 31", ["3417"] = "22 22 55", ["3418"] = "22 22 55", ["3421"] = "22 22 55", ["3422"] = "22 22 55", ["3423"] = "22 55 31", ["3424"] = "22 55 31", ["3425"] = "22 55 31", ["3426"] = "22 55 31", ["3427"] = "22 22 55", ["3428"] = "22 22 55", ["3431"] = "22 22 55", ["3432"] = "22 22 55", ["3433"] = "22 22 55", ["3434"] = "22 22 55", ["3435"] = "22 22 55", ["3436"] = "22 22 55", ["3437"] = "22 22 55", ["3438"] = "22 22 55", ["3441"] = "22 55 51", ["3442"] = "22 55 51", ["3443"] = "22 22 55", ["3444"] = "22 22 55", ["3445"] = "22 22 55", ["3446"] = "22 22 55", ["3447"] = "22 22 55", ["3448"] = "22 22 55", ["3451"] = "22 55 51", ["3452"] = "22 55 51", ["3453"] = "22 22 55", ["3454"] = "22 22 55", ["3455"] = "22 22 55", ["3456"] = "22 22 55", ["3457"] = "22 22 55", ["3458"] = "22 22 55", ["3461"] = "22 55 51", ["3462"] = "22 55 51", ["3463"] = "22 22 55", ["3464"] = "22 22 55", ["3465"] = "22 22 55", ["3466"] = "22 22 55", ["3467"] = "22 22 55", ["3468"] = "22 22 55", ["3471"] = "22 22 55", ["3472"] = "22 22 55", ["3473"] = "22 55 31", ["3474"] = "22 55 31", ["3475"] = "22 55 31", ["3476"] = "22 55 31", ["3477"] = "22 22 55", ["3478"] = "22 22 55", ["3481"] = "22 22 55", ["3482"] = "22 22 55", ["3483"] = "22 55 31", ["3484"] = "22 55 31", ["3485"] = "22 55 31", ["3486"] = "22 55 31", ["3487"] = "22 22 55", ["3488"] = "22 22 55", ["3401"] = "44 44 31", ["3402"] = "44 44 31", ["3403"] = "44 44 31", ["3404"] = "44 44 31", ["3405"] = "44 44 31", ["3406"] = "44 44 31", ["3407"] = "44 44 31", ["3408"] = "44 44 31", ["3511"] = "33 44 51", ["3512"] = "33 44 51", ["3513"] = "33 55 31", ["3514"] = "33 55 31", ["3515"] = "33 55 31", ["3516"] = "33 55 31", ["3517"] = "33 44 55", ["3518"] = "33 44 55", ["3521"] = "33 44 51", ["3522"] = "33 44 51", ["3523"] = "33 55 31", ["3524"] = "33 55 31", ["3525"] = "33 55 31", ["3526"] = "33 55 31", ["3527"] = "33 44 55", ["3528"] = "33 44 55", ["3531"] = "35 33 31", ["3532"] = "35 33 31", ["3533"] = "35 33 31", ["3534"] = "35 33 31", ["3535"] = "35 33 31", ["3536"] = "35 33 31", ["3537"] = "35 33 31", ["3538"] = "35 33 31", ["3541"] = "35 33 31", ["3542"] = "35 33 31", ["3543"] = "33 44 51", ["3544"] = "33 44 51", ["3545"] = "33 44 51", ["3546"] = "33 44 51", ["3547"] = "35 33 31", ["3548"] = "35 33 31", ["3551"] = "35 33 31", ["3552"] = "35 33 31", ["3553"] = "35 33 31", ["3554"] = "35 33 31", ["3555"] = "35 33 31", ["3556"] = "35 33 31", ["3557"] = "35 33 31", ["3558"] = "35 33 31", ["3561"] = "35 33 31", ["3562"] = "35 33 31", ["3563"] = "35 33 31", ["3564"] = "35 33 31", ["3565"] = "35 33 31", ["3566"] = "35 33 31", ["3567"] = "33 55 31", ["3568"] = "33 55 31", ["3571"] = "33 44 51", ["3572"] = "33 44 51", ["3573"] = "33 55 31", ["3574"] = "33 55 31", ["3575"] = "33 55 31", ["3576"] = "33 55 31", ["3577"] = "33 44 55", ["3578"] = "33 44 55", ["3581"] = "33 44 51", ["3582"] = "33 44 51", ["3583"] = "33 55 31", ["3584"] = "33 55 31", ["3585"] = "33 55 31", ["3586"] = "33 55 31", ["3587"] = "33 44 55", ["3588"] = "33 44 55", ["3611"] = "22 44 51", ["3612"] = "22 44 51", ["3613"] = "22 55 31", ["3614"] = "22 55 31", ["3615"] = "22 55 31", ["3616"] = "22 55 31", ["3617"] = "22 44 55", ["3618"] = "22 44 55", ["3621"] = "22 44 51", ["3622"] = "22 33 44", ["3623"] = "22 55 31", ["3624"] = "22 55 31", ["3625"] = "22 55 31", ["3626"] = "22 55 31", ["3627"] = "22 44 55", ["3628"] = "22 44 55", ["3631"] = "22 44 51", ["3632"] = "24 33 31", ["3633"] = "24 33 31", ["3634"] = "24 33 31", ["3635"] = "22 22 24", ["3636"] = "24 33 31", ["3637"] = "24 33 31", ["3638"] = "24 33 31", ["3641"] = "22 55 31", ["3642"] = "22 55 31", ["3643"] = "24 33 31", ["3644"] = "24 33 31", ["3645"] = "24 33 31", ["3646"] = "24 33 31", ["3647"] = "24 33 31", ["3648"] = "24 33 31", ["3651"] = "22 22 44", ["3652"] = "24 33 31", ["3653"] = "24 33 31", ["3654"] = "24 33 31", ["3655"] = "24 33 31", ["3656"] = "24 33 31", ["3657"] = "24 33 31", ["3658"] = "24 33 31", ["3661"] = "22 55 31", ["3662"] = "22 55 31", ["3663"] = "24 33 31", ["3664"] = "24 33 31", ["3665"] = "24 33 31", ["3666"] = "24 33 31", ["3667"] = "22 55 31", ["3668"] = "22 55 31", ["3671"] = "22 44 51", ["3672"] = "22 44 51", ["3673"] = "22 55 31", ["3674"] = "22 55 31", ["3675"] = "22 55 31", ["3676"] = "22 55 31", ["3677"] = "22 44 55", ["3678"] = "22 44 55", ["3681"] = "22 44 51", ["3682"] = "22 44 51", ["3683"] = "22 55 31", ["3684"] = "22 55 31", ["3685"] = "22 55 31", ["3686"] = "22 55 31", ["3687"] = "22 44 55", ["3688"] = "22 44 55", ["3601"] = "33 44 51", ["3602"] = "33 44 51", ["3603"] = "33 55 31", ["3604"] = "33 55 31", ["3605"] = "35 33 31", ["3606"] = "35 33 31", ["3607"] = "33 44 55", ["3608"] = "33 44 55", ["3711"] = "33 44 51", ["3712"] = "33 44 51", ["3713"] = "33 44 51", ["3714"] = "33 44 51", ["3715"] = "33 44 51", ["3716"] = "33 44 51", ["3717"] = "33 44 55", ["3718"] = "33 44 55", ["3721"] = "33 44 51", ["3722"] = "33 44 51", ["3723"] = "33 44 51", ["3724"] = "33 44 51", ["3725"] = "33 44 51", ["3726"] = "33 44 51", ["3727"] = "33 44 55", ["3728"] = "33 44 55", ["3731"] = "53 33 31", ["3732"] = "53 33 31", ["3733"] = "53 33 31", ["3734"] = "53 33 31", ["3735"] = "53 33 31", ["3736"] = "53 33 31", ["3737"] = "53 33 31", ["3738"] = "53 33 31", ["3741"] = "53 33 31", ["3742"] = "53 33 31", ["3743"] = "53 33 31", ["3744"] = "53 33 31", ["3745"] = "53 33 31", ["3746"] = "53 33 31", ["3747"] = "53 33 31", ["3748"] = "53 33 31", ["3751"] = "53 33 31", ["3752"] = "53 33 31", ["3753"] = "53 33 31", ["3754"] = "53 33 31", ["3755"] = "53 33 31", ["3756"] = "53 33 31", ["3757"] = "53 33 31", ["3758"] = "53 33 31", ["3761"] = "53 33 31", ["3762"] = "53 33 31", ["3763"] = "53 33 31", ["3764"] = "53 33 31", ["3765"] = "53 33 31", ["3766"] = "53 33 31", ["3767"] = "53 33 31", ["3768"] = "53 33 31", ["3771"] = "33 44 51", ["3772"] = "33 44 51", ["3773"] = "33 44 51", ["3774"] = "33 44 51", ["3775"] = "33 44 51", ["3776"] = "33 44 51", ["3777"] = "33 44 55", ["3778"] = "33 44 55", ["3781"] = "33 44 51", ["3782"] = "33 44 51", ["3783"] = "33 44 51", ["3784"] = "33 44 51", ["3785"] = "33 44 51", ["3786"] = "33 44 51", ["3787"] = "33 44 55", ["3788"] = "33 44 55", ["3811"] = "22 44 51", ["3812"] = "22 44 51", ["3813"] = "22 44 51", ["3814"] = "22 44 51", ["3815"] = "22 44 51", ["3816"] = "22 44 51", ["3817"] = "22 44 55", ["3818"] = "22 44 55", ["3821"] = "22 44 51", ["3822"] = "22 44 51", ["3823"] = "22 44 51", ["3824"] = "22 44 51", ["3825"] = "22 44 51", ["3826"] = "22 44 51", ["3827"] = "22 44 55", ["3828"] = "22 44 55", ["3831"] = "11 22 44", ["3832"] = "11 22 44", ["3833"] = "11 22 44", ["3834"] = "11 22 44", ["3835"] = "11 22 44", ["3836"] = "11 22 44", ["3837"] = "11 22 44", ["3838"] = "11 22 44", ["3841"] = "11 22 44", ["3842"] = "11 22 44", ["3843"] = "11 22 44", ["3844"] = "11 22 44", ["3845"] = "11 22 44", ["3846"] = "11 22 44", ["3847"] = "11 22 44", ["3848"] = "11 22 44", ["3851"] = "11 22 44", ["3852"] = "11 22 44", ["3853"] = "11 22 44", ["3854"] = "11 22 44", ["3855"] = "11 22 44", ["3856"] = "11 22 44", ["3857"] = "11 22 44", ["3858"] = "11 22 44", ["3861"] = "11 22 44", ["3862"] = "11 22 44", ["3863"] = "11 22 44", ["3864"] = "11 22 44", ["3865"] = "11 22 44", ["3866"] = "11 22 44", ["3867"] = "11 22 44", ["3868"] = "11 22 44", ["3871"] = "22 44 51", ["3872"] = "22 44 51", ["3873"] = "22 44 51", ["3874"] = "22 44 51", ["3875"] = "22 44 51", ["3876"] = "22 44 51", ["3877"] = "22 44 55", ["3878"] = "22 44 55", ["3881"] = "22 44 51", ["3882"] = "22 44 51", ["3883"] = "22 44 51", ["3884"] = "22 44 51", ["3885"] = "22 44 51", ["3886"] = "22 44 51", ["3887"] = "22 44 55", ["3888"] = "22 44 55", }, ['tx'] = { ["10"] = "", ["11"] = "44", ["12"] = "22", ["13"] = "53", ["14"] = "42", ["15"] = "334", ["16"] = "113", ["17"] = "55", ["18"] = "22", ["211"] = "44 44", ["212"] = "44 22", ["213"] = "44 44", ["214"] = "44 22", ["215"] = "44 44", ["216"] = "44 22", ["217"] = "44 55", ["218"] = "44 22", ["221"] = "22 44", ["222"] = "22 22", ["223"] = "22 44", ["224"] = "22 22", ["225"] = "22 44", ["226"] = "22 22", ["227"] = "22 55", ["228"] = "22 22", ["231"] = "53 53", ["232"] = "53 42", ["233"] = "53 53", ["234"] = "53 42", ["235"] = "53 53", ["236"] = "53 42", ["237"] = "53 55", ["238"] = "53 22", ["241"] = "42 53", ["242"] = "42 42", ["243"] = "42 53", ["244"] = "42 42", ["245"] = "42 53", ["246"] = "42 42", ["247"] = "42 55", ["248"] = "42 22", ["251"] = "334 334", ["252"] = "334 113", ["253"] = "334 53", ["254"] = "334 42", ["255"] = "334 334", ["256"] = "334 113", ["257"] = "334 55", ["258"] = "334 22", ["261"] = "113 334", ["262"] = "113 113", ["263"] = "113 53", ["264"] = "113 42", ["265"] = "113 334", ["266"] = "113 113", ["267"] = "113 55", ["268"] = "113 22", ["271"] = "55 44", ["272"] = "55 22", ["273"] = "55 53", ["274"] = "55 42", ["275"] = "55 334", ["276"] = "55 113", ["277"] = "55 55", ["278"] = "55 22", ["281"] = "22 44", ["282"] = "22 22", ["283"] = "22 53", ["284"] = "22 42", ["285"] = "22 334", ["286"] = "22 113", ["287"] = "22 55", ["288"] = "22 22", ["3111"] = "44 44 44", ["3112"] = "44 44 22", ["3113"] = "44 44 44", ["3114"] = "44 44 22", ["3115"] = "44 44 44", ["3116"] = "44 44 22", ["3117"] = "44 44 55", ["3118"] = "44 44 22", ["3121"] = "44 22 44", ["3122"] = "44 22 22", ["3123"] = "44 22 44", ["3124"] = "44 22 22", ["3125"] = "44 22 44", ["3126"] = "44 22 22", ["3127"] = "44 22 55", ["3128"] = "44 22 22", ["3131"] = "44 44 44", ["3132"] = "44 44 22", ["3133"] = "44 44 44", ["3134"] = "44 44 22", ["3135"] = "44 44 44", ["3136"] = "44 44 22", ["3137"] = "44 44 55", ["3138"] = "44 44 22", ["3141"] = "44 22 44", ["3142"] = "44 22 22", ["3143"] = "44 22 44", ["3144"] = "44 22 22", ["3145"] = "44 22 44", ["3146"] = "44 22 22", ["3147"] = "44 22 55", ["3148"] = "44 22 22", ["3151"] = "44 44 44", ["3152"] = "44 44 22", ["3153"] = "44 44 44", ["3154"] = "44 44 22", ["3155"] = "44 44 44", ["3156"] = "44 44 22", ["3157"] = "44 44 55", ["3158"] = "44 44 22", ["3161"] = "44 22 44", ["3162"] = "44 22 22", ["3163"] = "44 22 44", ["3164"] = "44 22 22", ["3165"] = "44 22 44", ["3166"] = "44 22 22", ["3167"] = "44 22 55", ["3168"] = "44 22 22", ["3171"] = "44 55 44", ["3172"] = "44 55 22", ["3173"] = "44 55 44", ["3174"] = "44 55 22", ["3175"] = "44 55 44", ["3176"] = "44 55 22", ["3177"] = "44 55 55", ["3178"] = "44 55 22", ["3181"] = "44 22 44", ["3182"] = "44 22 22", ["3183"] = "44 22 44", ["3184"] = "44 22 22", ["3185"] = "44 22 44", ["3186"] = "44 22 22", ["3187"] = "44 22 55", ["3188"] = "44 22 22", ["3211"] = "22 44 44", ["3212"] = "22 44 22", ["3213"] = "22 44 44", ["3214"] = "22 44 22", ["3215"] = "22 44 44", ["3216"] = "22 44 22", ["3217"] = "22 44 55", ["3218"] = "22 44 22", ["3221"] = "22 22 44", ["3222"] = "22 22 22", ["3223"] = "22 22 44", ["3224"] = "22 22 22", ["3225"] = "22 22 44", ["3226"] = "22 22 22", ["3227"] = "22 22 55", ["3228"] = "22 22 22", ["3231"] = "22 44 44", ["3232"] = "22 44 22", ["3233"] = "22 44 44", ["3234"] = "22 44 22", ["3235"] = "22 44 44", ["3236"] = "22 44 22", ["3237"] = "22 44 55", ["3238"] = "22 44 22", ["3241"] = "22 22 44", ["3242"] = "22 22 22", ["3243"] = "22 22 44", ["3244"] = "22 22 22", ["3245"] = "22 22 44", ["3246"] = "22 22 22", ["3247"] = "22 22 55", ["3248"] = "22 22 22", ["3251"] = "22 44 44", ["3252"] = "22 44 22", ["3253"] = "22 44 44", ["3254"] = "22 44 22", ["3255"] = "22 44 44", ["3256"] = "22 44 22", ["3257"] = "22 44 55", ["3258"] = "22 44 22", ["3261"] = "22 22 44", ["3262"] = "22 22 22", ["3263"] = "22 22 44", ["3264"] = "22 22 22", ["3265"] = "22 22 44", ["3266"] = "22 22 22", ["3267"] = "22 22 55", ["3268"] = "22 22 22", ["3271"] = "22 55 44", ["3272"] = "22 55 22", ["3273"] = "22 55 44", ["3274"] = "22 55 22", ["3275"] = "22 55 44", ["3276"] = "22 55 22", ["3277"] = "22 55 55", ["3278"] = "22 55 22", ["3281"] = "22 22 44", ["3282"] = "22 22 22", ["3283"] = "22 22 44", ["3284"] = "22 22 22", ["3285"] = "22 22 44", ["3286"] = "22 22 22", ["3287"] = "22 22 55", ["3288"] = "22 22 22", ["3311"] = "53 53 53", ["3312"] = "53 53 42", ["3313"] = "53 53 53", ["3314"] = "53 53 42", ["3315"] = "53 53 53", ["3316"] = "53 53 42", ["3317"] = "53 53 55", ["3318"] = "53 53 22", ["3321"] = "53 42 53", ["3322"] = "53 42 42", ["3323"] = "53 42 53", ["3324"] = "53 42 42", ["3325"] = "53 42 53", ["3326"] = "53 42 42", ["3327"] = "53 42 55", ["3328"] = "53 42 22", ["3331"] = "53 53 53", ["3332"] = "53 53 42", ["3333"] = "53 53 53", ["3334"] = "53 53 42", ["3335"] = "53 53 53", ["3336"] = "53 53 42", ["3337"] = "53 53 55", ["3338"] = "53 53 22", ["3341"] = "53 42 53", ["3342"] = "53 42 42", ["3343"] = "53 42 53", ["3344"] = "53 42 42", ["3345"] = "53 42 53", ["3346"] = "53 42 42", ["3347"] = "53 42 55", ["3348"] = "53 42 22", ["3351"] = "53 53 53", ["3352"] = "53 53 42", ["3353"] = "53 53 53", ["3354"] = "53 53 42", ["3355"] = "53 53 53", ["3356"] = "53 53 42", ["3357"] = "53 53 55", ["3358"] = "53 53 22", ["3361"] = "53 42 53", ["3362"] = "53 42 42", ["3363"] = "53 42 53", ["3364"] = "53 42 42", ["3365"] = "53 42 53", ["3366"] = "53 42 42", ["3367"] = "53 42 55", ["3368"] = "53 42 22", ["3371"] = "53 55 53", ["3372"] = "53 55 42", ["3373"] = "53 55 53", ["3374"] = "53 55 42", ["3375"] = "53 55 53", ["3376"] = "53 55 42", ["3377"] = "53 55 55", ["3378"] = "53 55 22", ["3381"] = "53 22 53", ["3382"] = "53 22 42", ["3383"] = "53 22 53", ["3384"] = "53 22 42", ["3385"] = "53 22 53", ["3386"] = "53 22 42", ["3387"] = "53 22 55", ["3388"] = "53 22 22", ["3411"] = "42 53 53", ["3412"] = "42 53 42", ["3413"] = "42 53 53", ["3414"] = "42 53 42", ["3415"] = "42 53 53", ["3416"] = "42 53 42", ["3417"] = "42 53 55", ["3418"] = "42 53 22", ["3421"] = "42 42 53", ["3422"] = "42 42 42", ["3423"] = "42 42 53", ["3424"] = "42 42 42", ["3425"] = "42 42 53", ["3426"] = "42 42 42", ["3427"] = "42 42 55", ["3428"] = "42 42 22", ["3431"] = "42 53 53", ["3432"] = "42 53 42", ["3433"] = "42 53 53", ["3434"] = "42 53 42", ["3435"] = "42 53 53", ["3436"] = "42 53 42", ["3437"] = "42 53 55", ["3438"] = "42 53 22", ["3441"] = "42 42 53", ["3442"] = "42 42 42", ["3443"] = "42 42 53", ["3444"] = "42 42 42", ["3445"] = "42 42 53", ["3446"] = "42 42 42", ["3447"] = "42 42 55", ["3448"] = "42 42 22", ["3451"] = "42 53 53", ["3452"] = "42 53 42", ["3453"] = "42 53 53", ["3454"] = "42 53 42", ["3455"] = "42 53 53", ["3456"] = "42 53 42", ["3457"] = "42 53 55", ["3458"] = "42 53 22", ["3461"] = "42 42 53", ["3462"] = "42 42 42", ["3463"] = "42 42 53", ["3464"] = "42 42 42", ["3465"] = "42 42 53", ["3466"] = "42 42 42", ["3467"] = "42 42 55", ["3468"] = "42 42 22", ["3471"] = "42 55 53", ["3472"] = "42 55 42", ["3473"] = "42 55 53", ["3474"] = "42 55 42", ["3475"] = "42 55 53", ["3476"] = "42 55 42", ["3477"] = "42 55 55", ["3478"] = "42 55 22", ["3481"] = "42 22 53", ["3482"] = "42 22 42", ["3483"] = "42 22 53", ["3484"] = "42 22 42", ["3485"] = "42 22 53", ["3486"] = "42 22 42", ["3487"] = "42 22 55", ["3488"] = "42 22 22", ["3511"] = "334 53 53", ["3512"] = "334 53 42", ["3513"] = "334 53 53", ["3514"] = "334 53 42", ["3515"] = "334 53 53", ["3516"] = "334 53 42", ["3517"] = "334 53 55", ["3518"] = "334 53 22", ["3521"] = "334 42 53", ["3522"] = "334 42 42", ["3523"] = "334 42 53", ["3524"] = "334 42 42", ["3525"] = "334 42 53", ["3526"] = "334 42 42", ["3527"] = "334 42 55", ["3528"] = "334 42 22", ["3531"] = "334 53 53", ["3532"] = "334 53 42", ["3533"] = "334 53 53", ["3534"] = "334 53 42", ["3535"] = "334 53 53", ["3536"] = "334 53 42", ["3537"] = "334 53 55", ["3538"] = "334 53 22", ["3541"] = "334 42 53", ["3542"] = "334 42 42", ["3543"] = "334 42 53", ["3544"] = "334 42 42", ["3545"] = "334 42 53", ["3546"] = "334 42 42", ["3547"] = "334 42 55", ["3548"] = "334 42 22", ["3551"] = "334 334 44", ["3552"] = "334 334 22", ["3553"] = "334 334 53", ["3554"] = "334 334 42", ["3555"] = "334 334 334", ["3556"] = "334 334 113", ["3557"] = "334 334 55", ["3558"] = "334 334 22", ["3561"] = "334 113 44", ["3562"] = "334 113 22", ["3563"] = "334 113 53", ["3564"] = "334 113 42", ["3565"] = "334 113 334", ["3566"] = "334 113 113", ["3567"] = "334 113 55", ["3568"] = "334 113 22", ["3571"] = "334 55 44", ["3572"] = "334 55 22", ["3573"] = "334 55 44", ["3574"] = "334 55 22", ["3575"] = "334 55 44", ["3576"] = "334 55 22", ["3577"] = "334 55 55", ["3578"] = "334 55 22", ["3581"] = "334 22 44", ["3582"] = "334 22 22", ["3583"] = "334 22 44", ["3584"] = "334 22 22", ["3585"] = "334 22 44", ["3586"] = "334 22 22", ["3587"] = "334 22 55", ["3588"] = "334 22 22", ["3611"] = "113 53 53", ["3612"] = "113 53 42", ["3613"] = "113 53 53", ["3614"] = "113 53 42", ["3615"] = "113 53 53", ["3616"] = "113 53 42", ["3617"] = "113 53 55", ["3618"] = "113 53 22", ["3621"] = "113 42 53", ["3622"] = "113 42 42", ["3623"] = "113 42 53", ["3624"] = "113 42 42", ["3625"] = "113 42 53", ["3626"] = "113 42 42", ["3627"] = "113 42 55", ["3628"] = "113 42 22", ["3631"] = "113 53 53", ["3632"] = "113 53 42", ["3633"] = "113 53 53", ["3634"] = "113 53 42", ["3635"] = "113 53 53", ["3636"] = "113 53 42", ["3637"] = "113 53 55", ["3638"] = "113 53 22", ["3641"] = "113 42 53", ["3642"] = "113 42 42", ["3643"] = "113 42 53", ["3644"] = "113 42 42", ["3645"] = "113 42 53", ["3646"] = "113 42 42", ["3647"] = "113 42 55", ["3648"] = "113 42 22", ["3651"] = "113 334 44", ["3652"] = "113 334 22", ["3653"] = "113 334 53", ["3654"] = "113 334 42", ["3655"] = "113 334 334", ["3656"] = "113 334 113", ["3657"] = "113 334 55", ["3658"] = "113 334 22", ["3661"] = "113 113 44", ["3662"] = "113 113 22", ["3663"] = "113 113 53", ["3664"] = "113 113 42", ["3665"] = "113 113 334", ["3666"] = "113 113 113", ["3667"] = "113 113 55", ["3668"] = "113 113 22", ["3671"] = "113 55 44", ["3672"] = "113 55 22", ["3673"] = "113 55 44", ["3674"] = "113 55 22", ["3675"] = "113 55 44", ["3676"] = "113 55 22", ["3677"] = "113 55 55", ["3678"] = "113 55 22", ["3681"] = "113 22 44", ["3682"] = "113 22 22", ["3683"] = "113 22 44", ["3684"] = "113 22 22", ["3685"] = "113 22 44", ["3686"] = "113 22 22", ["3687"] = "113 22 55", ["3688"] = "113 22 22", ["3711"] = "55 44 44", ["3712"] = "55 44 22", ["3713"] = "55 44 44", ["3714"] = "55 44 22", ["3715"] = "55 44 44", ["3716"] = "55 44 22", ["3717"] = "55 44 55", ["3718"] = "55 44 22", ["3721"] = "55 22 44", ["3722"] = "55 22 22", ["3723"] = "55 22 44", ["3724"] = "55 22 22", ["3725"] = "55 22 44", ["3726"] = "55 22 22", ["3727"] = "55 22 55", ["3728"] = "55 22 22", ["3731"] = "55 53 53", ["3732"] = "55 53 42", ["3733"] = "55 53 53", ["3734"] = "55 53 42", ["3735"] = "55 53 53", ["3736"] = "55 53 42", ["3737"] = "55 53 55", ["3738"] = "55 53 22", ["3741"] = "55 42 53", ["3742"] = "55 42 42", ["3743"] = "55 42 53", ["3744"] = "55 42 42", ["3745"] = "55 42 53", ["3746"] = "55 42 42", ["3747"] = "55 42 55", ["3748"] = "55 42 22", ["3751"] = "55 334 44", ["3752"] = "55 334 22", ["3753"] = "55 334 53", ["3754"] = "55 334 42", ["3755"] = "55 334 334", ["3756"] = "55 334 113", ["3757"] = "55 334 55", ["3758"] = "55 334 22", ["3761"] = "55 113 44", ["3762"] = "55 113 22", ["3763"] = "55 113 53", ["3764"] = "55 113 42", ["3765"] = "55 113 334", ["3766"] = "55 113 113", ["3767"] = "55 113 55", ["3768"] = "55 113 22", ["3771"] = "55 55 44", ["3772"] = "55 55 22", ["3773"] = "55 55 53", ["3774"] = "55 55 42", ["3775"] = "55 55 334", ["3776"] = "55 55 113", ["3777"] = "55 55 55", ["3778"] = "55 55 22", ["3781"] = "55 22 44", ["3782"] = "55 22 22", ["3783"] = "55 22 53", ["3784"] = "55 22 42", ["3785"] = "55 22 334", ["3786"] = "55 22 113", ["3787"] = "55 22 55", ["3788"] = "55 22 22", ["3811"] = "22 44 44", ["3812"] = "22 44 22", ["3813"] = "22 44 44", ["3814"] = "22 44 22", ["3815"] = "22 44 44", ["3816"] = "22 44 22", ["3817"] = "22 44 55", ["3818"] = "22 44 22", ["3821"] = "22 22 44", ["3822"] = "22 22 22", ["3823"] = "22 22 44", ["3824"] = "22 22 22", ["3825"] = "22 22 44", ["3826"] = "22 22 22", ["3827"] = "22 22 55", ["3828"] = "22 22 22", ["3831"] = "22 53 53", ["3832"] = "22 53 42", ["3833"] = "22 53 53", ["3834"] = "22 53 42", ["3835"] = "22 53 53", ["3836"] = "22 53 42", ["3837"] = "22 53 55", ["3838"] = "22 53 22", ["3841"] = "22 42 53", ["3842"] = "22 42 42", ["3843"] = "22 42 53", ["3844"] = "22 42 42", ["3845"] = "22 42 53", ["3846"] = "22 42 42", ["3847"] = "22 42 55", ["3848"] = "22 42 22", ["3851"] = "22 334 44", ["3852"] = "22 334 22", ["3853"] = "22 334 53", ["3854"] = "22 334 42", ["3855"] = "22 334 334", ["3856"] = "22 334 113", ["3857"] = "22 334 55", ["3858"] = "22 334 22", ["3861"] = "22 113 44", ["3862"] = "22 113 22", ["3863"] = "22 113 53", ["3864"] = "22 113 42", ["3865"] = "22 113 334", ["3866"] = "22 113 113", ["3867"] = "22 113 55", ["3868"] = "22 113 22", ["3871"] = "22 55 44", ["3872"] = "22 55 22", ["3873"] = "22 55 53", ["3874"] = "22 55 42", ["3875"] = "22 55 334", ["3876"] = "22 55 113", ["3877"] = "22 55 55", ["3878"] = "22 55 22", ["3881"] = "22 22 44", ["3882"] = "22 22 22", ["3883"] = "22 22 53", ["3884"] = "22 22 42", ["3885"] = "22 22 334", ["3886"] = "22 22 113", ["3887"] = "22 22 55", ["3888"] = "22 22 22", --!RPS! }, ['hn'] = { ["10"] = "", ["11"] = "55", ["12"] = "113", ["13"] = "53", ["14"] = "42", ["15"] = "445", ["16"] = "113", ["17"] = "55", ["18"] = "22", ["211"] = "55 55", ["212"] = "55 55", ["213"] = "55 55", ["214"] = "55 55", ["215"] = "55 55", ["216"] = "55 55", ["217"] = "55 11", ["218"] = "55 11", ["221"] = "11 55", ["222"] = "11 55", ["223"] = "11 55", ["224"] = "11 55", ["225"] = "11 55", ["226"] = "11 55", ["227"] = "11 55", ["228"] = "55 22", ["231"] = "55 55", ["232"] = "55 55", ["233"] = "55 21", ["234"] = "55 21", ["235"] = "55 21", ["236"] = "55 21", ["237"] = "55 55", ["238"] = "55 55", ["241"] = "55 55", ["242"] = "55 55", ["243"] = "55 21", ["244"] = "55 21", ["245"] = "55 21", ["246"] = "55 21", ["247"] = "55 55", ["248"] = "55 55", ["251"] = "33 53", ["252"] = "33 42", ["253"] = "33 53", ["254"] = "33 42", ["255"] = "33 53", ["256"] = "33 42", ["257"] = "33 55", ["258"] = "33 22", ["261"] = "11 53", ["262"] = "11 42", ["263"] = "11 53", ["264"] = "11 42", ["265"] = "11 53", ["266"] = "11 42", ["267"] = "11 55", ["268"] = "11 22", ["271"] = "55 55", ["272"] = "55 55", ["273"] = "55 21", ["274"] = "55 21", ["275"] = "55 21", ["276"] = "55 21", ["277"] = "55 55", ["278"] = "55 55", ["281"] = "11 55", ["282"] = "11 55", ["283"] = "22 21", ["284"] = "22 21", ["285"] = "22 21", ["286"] = "22 21", ["287"] = "11 55", ["288"] = "11 22", ["3111"] = "55 55 55", ["3112"] = "55 55 55", ["3113"] = "55 55 55", ["3114"] = "55 55 55", ["3115"] = "55 55 55", ["3116"] = "55 55 55", ["3117"] = "55 55 11", ["3118"] = "55 55 11", ["3121"] = "55 55 55", ["3122"] = "55 55 55", ["3123"] = "55 55 55", ["3124"] = "55 55 55", ["3125"] = "55 55 55", ["3126"] = "55 55 55", ["3127"] = "55 55 11", ["3128"] = "55 55 11", ["3131"] = "55 55 55", ["3132"] = "55 55 55", ["3133"] = "55 55 55", ["3134"] = "55 55 55", ["3135"] = "55 55 55", ["3136"] = "55 55 55", ["3137"] = "55 55 11", ["3138"] = "55 55 11", ["3141"] = "55 55 55", ["3142"] = "55 55 55", ["3143"] = "55 55 55", ["3144"] = "55 55 55", ["3145"] = "55 55 55", ["3146"] = "55 55 55", ["3147"] = "55 55 11", ["3148"] = "55 55 11", ["3151"] = "55 55 55", ["3152"] = "55 55 55", ["3153"] = "55 55 55", ["3154"] = "55 55 55", ["3155"] = "55 55 55", ["3156"] = "55 55 55", ["3157"] = "55 55 11", ["3158"] = "55 55 11", ["3161"] = "55 55 55", ["3162"] = "55 55 55", ["3163"] = "55 55 55", ["3164"] = "55 55 55", ["3165"] = "55 55 55", ["3166"] = "55 55 55", ["3167"] = "55 55 11", ["3168"] = "55 55 11", ["3171"] = "55 33 21", ["3172"] = "55 33 21", ["3173"] = "55 33 21", ["3174"] = "55 33 21", ["3175"] = "55 33 21", ["3176"] = "55 33 21", ["3177"] = "55 33 11", ["3178"] = "55 33 11", ["3181"] = "55 33 11", ["3182"] = "55 33 11", ["3183"] = "55 33 11", ["3184"] = "55 33 11", ["3185"] = "55 33 11", ["3186"] = "55 33 11", ["3187"] = "55 33 11", ["3188"] = "55 33 11", ["3211"] = "11 55 55", ["3212"] = "11 55 55", ["3213"] = "11 55 55", ["3214"] = "11 55 55", ["3215"] = "11 55 55", ["3216"] = "11 55 55", ["3217"] = "11 55 11", ["3218"] = "11 55 11", ["3221"] = "11 55 55", ["3222"] = "11 55 55", ["3223"] = "11 55 55", ["3224"] = "11 55 55", ["3225"] = "11 55 55", ["3226"] = "11 55 55", ["3227"] = "11 55 11", ["3228"] = "11 55 11", ["3231"] = "11 55 55", ["3232"] = "11 55 55", ["3233"] = "11 55 55", ["3234"] = "11 55 55", ["3235"] = "11 55 55", ["3236"] = "11 55 55", ["3237"] = "11 55 11", ["3238"] = "11 55 11", ["3241"] = "11 55 55", ["3242"] = "11 55 55", ["3243"] = "11 55 55", ["3244"] = "11 55 55", ["3245"] = "11 55 55", ["3246"] = "11 55 55", ["3247"] = "11 55 11", ["3248"] = "11 55 11", ["3251"] = "11 55 55", ["3252"] = "11 55 55", ["3253"] = "11 55 55", ["3254"] = "11 55 55", ["3255"] = "11 55 55", ["3256"] = "11 55 55", ["3257"] = "11 55 11", ["3258"] = "11 55 11", ["3261"] = "11 55 55", ["3262"] = "11 55 55", ["3263"] = "11 55 55", ["3264"] = "11 55 55", ["3265"] = "11 55 55", ["3266"] = "11 55 55", ["3267"] = "11 55 11", ["3268"] = "11 55 11", ["3271"] = "11 55 21", ["3272"] = "11 55 21", ["3273"] = "11 55 21", ["3274"] = "11 55 21", ["3275"] = "11 55 21", ["3276"] = "11 55 21", ["3277"] = "11 55 11", ["3278"] = "11 55 11", ["3281"] = "11 55 21", ["3282"] = "11 55 21", ["3283"] = "11 55 21", ["3284"] = "11 55 21", ["3285"] = "11 55 21", ["3286"] = "11 55 21", ["3287"] = "11 55 11", ["3288"] = "11 55 11", ["3311"] = "55 55 55", ["3312"] = "55 55 55", ["3313"] = "55 55 55", ["3314"] = "55 55 55", ["3315"] = "55 55 55", ["3316"] = "55 55 55", ["3317"] = "55 55 11", ["3318"] = "55 55 11", ["3321"] = "55 55 55", ["3322"] = "55 55 55", ["3323"] = "55 55 55", ["3324"] = "55 55 55", ["3325"] = "55 55 55", ["3326"] = "55 55 55", ["3327"] = "55 55 11", ["3328"] = "55 55 11", ["3331"] = "55 33 21", ["3332"] = "55 33 21", ["3333"] = "55 33 21", ["3334"] = "55 33 21", ["3335"] = "55 33 21", ["3336"] = "55 33 21", ["3337"] = "55 33 11", ["3338"] = "", ["3341"] = "55 33 21", ["3342"] = "55 33 21", ["3343"] = "55 33 21", ["3344"] = "55 33 21", ["3345"] = "55 33 21", ["3346"] = "55 33 21", ["3347"] = "55 33 11", ["3348"] = "55 33 11", ["3351"] = "55 33 21", ["3352"] = "55 33 21", ["3353"] = "55 33 21", ["3354"] = "55 33 21", ["3355"] = "55 33 21", ["3356"] = "55 33 21", ["3357"] = "55 33 11", ["3358"] = "55 33 11", ["3361"] = "55 33 21", ["3362"] = "55 33 21", ["3363"] = "55 33 21", ["3364"] = "55 33 21", ["3365"] = "55 33 21", ["3366"] = "55 33 21", ["3367"] = "55 33 11", ["3368"] = "55 33 11", ["3371"] = "55 55 21", ["3372"] = "55 55 21", ["3373"] = "55 55 21", ["3374"] = "55 55 21", ["3375"] = "55 55 21", ["3376"] = "55 55 21", ["3377"] = "55 55 11", ["3378"] = "55 55 11", ["3381"] = "55 55 21", ["3382"] = "55 55 21", ["3383"] = "55 55 21", ["3384"] = "55 55 21", ["3385"] = "55 55 21", ["3386"] = "55 55 21", ["3387"] = "55 55 11", ["3388"] = "55 55 11", ["3411"] = "55 55 55", ["3412"] = "55 55 55", ["3413"] = "55 55 55", ["3414"] = "55 55 55", ["3415"] = "55 55 55", ["3416"] = "55 55 55", ["3417"] = "55 55 11", ["3418"] = "55 55 11", ["3421"] = "55 55 55", ["3422"] = "55 55 55", ["3423"] = "55 55 55", ["3424"] = "55 55 55", ["3425"] = "55 55 55", ["3426"] = "55 55 55", ["3427"] = "55 55 11", ["3428"] = "55 55 11", ["3431"] = "55 33 21", ["3432"] = "55 33 21", ["3433"] = "55 33 21", ["3434"] = "55 33 21", ["3435"] = "55 33 21", ["3436"] = "55 33 21", ["3437"] = "55 33 11", ["3438"] = "55 33 11", ["3441"] = "55 33 21", ["3442"] = "55 33 21", ["3443"] = "55 33 21", ["3444"] = "55 33 21", ["3445"] = "55 33 21", ["3446"] = "55 33 21", ["3447"] = "55 33 11", ["3448"] = "55 33 11", ["3451"] = "55 33 21", ["3452"] = "55 33 21", ["3453"] = "55 33 21", ["3454"] = "55 33 21", ["3455"] = "55 33 21", ["3456"] = "55 33 21", ["3457"] = "55 33 11", ["3458"] = "55 33 11", ["3461"] = "55 33 21", ["3462"] = "55 33 21", ["3463"] = "55 33 21", ["3464"] = "55 33 21", ["3465"] = "55 33 21", ["3466"] = "55 33 21", ["3467"] = "55 33 11", ["3468"] = "55 33 11", ["3471"] = "55 55 21", ["3472"] = "55 55 21", ["3473"] = "55 55 21", ["3474"] = "55 55 21", ["3475"] = "55 55 21", ["3476"] = "55 55 21", ["3477"] = "55 55 11", ["3478"] = "55 55 11", ["3481"] = "55 55 21", ["3482"] = "55 55 21", ["3483"] = "55 55 21", ["3484"] = "55 55 21", ["3485"] = "55 55 21", ["3486"] = "55 55 21", ["3487"] = "55 55 11", ["3488"] = "55 55 11", ["3511"] = "33 55 21", ["3512"] = "33 55 21", ["3513"] = "33 55 21", ["3514"] = "33 55 21", ["3515"] = "33 55 21", ["3516"] = "33 55 21", ["3517"] = "33 55 11", ["3518"] = "33 55 11", ["3521"] = "33 55 21", ["3522"] = "33 55 21", ["3523"] = "33 55 21", ["3524"] = "33 55 21", ["3525"] = "33 55 21", ["3526"] = "33 55 21", ["3527"] = "33 55 11", ["3528"] = "33 55 11", ["3531"] = "33 55 21", ["3532"] = "33 55 21", ["3533"] = "33 55 21", ["3534"] = "33 55 21", ["3535"] = "33 55 21", ["3536"] = "33 55 21", ["3537"] = "33 55 11", ["3538"] = "33 55 11", ["3541"] = "33 55 21", ["3542"] = "33 55 21", ["3543"] = "33 55 21", ["3544"] = "33 55 21", ["3545"] = "33 55 21", ["3546"] = "33 55 21", ["3547"] = "33 55 11", ["3548"] = "33 55 11", ["3551"] = "33 55 21", ["3552"] = "33 55 21", ["3553"] = "33 55 21", ["3554"] = "33 55 21", ["3555"] = "33 55 21", ["3556"] = "33 55 21", ["3557"] = "33 55 11", ["3558"] = "33 55 11", ["3561"] = "33 55 21", ["3562"] = "33 55 21", ["3563"] = "33 55 21", ["3564"] = "33 55 21", ["3565"] = "33 55 21", ["3566"] = "33 55 21", ["3567"] = "33 55 11", ["3568"] = "33 55 11", ["3571"] = "33 55 21", ["3572"] = "33 55 21", ["3573"] = "33 55 21", ["3574"] = "33 55 21", ["3575"] = "33 55 21", ["3576"] = "33 55 21", ["3577"] = "33 55 11", ["3578"] = "33 55 11", ["3581"] = "33 55 21", ["3582"] = "33 55 21", ["3583"] = "33 55 21", ["3584"] = "33 55 21", ["3585"] = "33 55 21", ["3586"] = "33 55 21", ["3587"] = "33 55 11", ["3588"] = "33 55 11", ["3611"] = "11 55 21", ["3612"] = "11 55 21", ["3613"] = "11 55 21", ["3614"] = "11 55 21", ["3615"] = "11 55 21", ["3616"] = "11 55 21", ["3617"] = "11 55 11", ["3618"] = "11 55 11", ["3621"] = "11 55 21", ["3622"] = "11 55 21", ["3623"] = "11 55 21", ["3624"] = "11 55 21", ["3625"] = "11 55 21", ["3626"] = "11 55 21", ["3627"] = "11 55 11", ["3628"] = "11 55 11", ["3631"] = "11 55 21", ["3632"] = "11 55 21", ["3633"] = "11 55 21", ["3634"] = "11 55 21", ["3635"] = "11 55 21", ["3636"] = "11 55 21", ["3637"] = "11 55 11", ["3638"] = "11 55 11", ["3641"] = "11 55 21", ["3642"] = "11 55 21", ["3643"] = "11 55 21", ["3644"] = "11 55 21", ["3645"] = "11 55 21", ["3646"] = "11 55 21", ["3647"] = "11 55 11", ["3648"] = "11 55 11", ["3651"] = "11 55 21", ["3652"] = "11 55 21", ["3653"] = "11 55 21", ["3654"] = "11 55 21", ["3655"] = "11 55 21", ["3656"] = "11 55 21", ["3657"] = "11 55 11", ["3658"] = "11 55 11", ["3661"] = "11 55 21", ["3662"] = "11 55 21", ["3663"] = "11 55 21", ["3664"] = "11 55 21", ["3665"] = "11 55 21", ["3666"] = "11 55 21", ["3667"] = "11 55 11", ["3668"] = "11 55 11", ["3671"] = "11 55 21", ["3672"] = "11 55 21", ["3673"] = "11 55 21", ["3674"] = "11 55 21", ["3675"] = "11 55 21", ["3676"] = "11 55 21", ["3677"] = "11 55 11", ["3678"] = "11 55 11", ["3681"] = "11 55 21", ["3682"] = "11 55 21", ["3683"] = "11 55 21", ["3684"] = "11 55 21", ["3685"] = "11 55 21", ["3686"] = "11 55 21", ["3687"] = "11 55 11", ["3688"] = "11 55 11", ["3711"] = "55 55 55", ["3712"] = "55 55 55", ["3713"] = "55 55 55", ["3714"] = "55 55 55", ["3715"] = "55 55 55", ["3716"] = "55 55 55", ["3717"] = "55 55 11", ["3718"] = "55 55 11", ["3721"] = "55 55 55", ["3722"] = "55 55 55", ["3723"] = "55 55 55", ["3724"] = "55 55 55", ["3725"] = "55 55 55", ["3726"] = "55 55 55", ["3727"] = "55 55 11", ["3728"] = "55 55 11", ["3731"] = "55 33 21", ["3732"] = "55 33 21", ["3733"] = "55 33 21", ["3734"] = "55 33 21", ["3735"] = "55 33 21", ["3736"] = "55 33 21", ["3737"] = "55 33 11", ["3738"] = "55 33 11", ["3741"] = "55 33 21", ["3742"] = "55 33 21", ["3743"] = "55 33 21", ["3744"] = "55 33 21", ["3745"] = "55 33 21", ["3746"] = "55 33 21", ["3747"] = "55 33 11", ["3748"] = "55 33 11", ["3751"] = "55 33 21", ["3752"] = "55 33 21", ["3753"] = "55 33 21", ["3754"] = "55 33 21", ["3755"] = "55 33 21", ["3756"] = "55 33 21", ["3757"] = "55 33 11", ["3758"] = "55 33 11", ["3761"] = "55 33 21", ["3762"] = "55 33 21", ["3763"] = "55 33 21", ["3764"] = "55 33 21", ["3765"] = "55 33 21", ["3766"] = "55 33 21", ["3767"] = "55 33 11", ["3768"] = "55 33 11", ["3771"] = "55 55 55", ["3772"] = "55 55 55", ["3773"] = "55 55 55", ["3774"] = "55 55 55", ["3775"] = "55 55 55", ["3776"] = "55 55 55", ["3777"] = "55 55 55", ["3778"] = "55 55 55", ["3781"] = "55 55 55", ["3782"] = "55 55 55", ["3783"] = "55 55 55", ["3784"] = "55 55 55", ["3785"] = "55 55 55", ["3786"] = "55 55 55", ["3787"] = "55 55 55", ["3788"] = "55 55 55", --3811 to 3816, 3821 to 3826 extrapolated from linguistic trends & data in vocab section ["3811"] = "11 55 55", ["3812"] = "11 55 55", ["3813"] = "11 55 55", ["3814"] = "11 55 55", ["3815"] = "11 55 55", ["3816"] = "11 55 55", ["3817"] = "11 55 11", ["3818"] = "11 55 11", ["3821"] = "11 55 55", ["3822"] = "11 55 55", ["3823"] = "11 55 55", ["3824"] = "11 55 55", ["3825"] = "11 55 55", ["3826"] = "11 55 55", ["3827"] = "11 55 11", ["3828"] = "11 55 11", ["3831"] = "22 33 21", ["3832"] = "22 33 21", ["3833"] = "22 33 21", ["3834"] = "22 33 21", ["3835"] = "22 33 21", ["3836"] = "22 33 21", ["3837"] = "", ["3838"] = "22 33 11", ["3841"] = "22 33 21", ["3842"] = "22 33 21", ["3843"] = "22 33 21", ["3844"] = "22 33 21", ["3845"] = "22 33 21", ["3846"] = "22 33 21", ["3847"] = "22 33 11", ["3848"] = "22 33 11", ["3851"] = "22 33 21", ["3852"] = "22 33 21", ["3853"] = "22 33 21", ["3854"] = "22 33 21", ["3855"] = "22 33 21", ["3856"] = "22 33 21", ["3857"] = "22 33 11", ["3858"] = "22 33 11", ["3861"] = "22 33 21", ["3862"] = "22 33 21", ["3863"] = "22 33 21", ["3864"] = "22 33 21", ["3865"] = "22 33 21", ["3866"] = "22 33 21", ["3867"] = "22 33 11", ["3868"] = "22 33 11", ["3871"] = "11 55 55", ["3872"] = "11 55 55", ["3873"] = "11 55 55", ["3874"] = "11 55 55", ["3875"] = "11 55 55", ["3876"] = "11 55 55", ["3877"] = "11 55 55", ["3878"] = "11 55 55", ["3881"] = "11 55 55", ["3882"] = "11 55 55", ["3883"] = "11 55 55", ["3884"] = "11 55 55", ["3885"] = "11 55 55", ["3886"] = "11 55 55", ["3887"] = "11 55 55", ["3888"] = "11 55 55", --RPS ["1s"] = "33", ["2s"] = "11", ["3s"] = "33", ["4s"] = "33", ["5s"] = "33", ["6s"] = "11", ["7s"] = "33", ["8s"] = "11", --2 and 8 have sporadic 1 & 8 shifts ["multiple"] = "33" }, ['hy'] = { ["10"] = "", ["11"] = "51", ["12"] = "31", ["13"] = "343", ["14"] = "232", ["15"] = "35", ["16"] = "213", ["17"] = "55", ["18"] = "22", ["211"] = "35 51", ["212"] = "35 51", ["213"] = "53 31", ["214"] = "53 31", ["215"] = "53 31", ["216"] = "53 31", ["217"] = "35 55", ["218"] = "35 55", ["221"] = "13 51", ["222"] = "13 51", ["223"] = "13 51", ["224"] = "13 51", ["225"] = "13 51", ["226"] = "13 51", ["227"] = "13 33", ["228"] = "13 33", ["231"] = "343 51", ["232"] = "343 51", ["233"] = "343 35", ["234"] = "343 35", ["235"] = "343 35", ["236"] = "343 35", ["237"] = "343 55", ["238"] = "343 55", ["241"] = "232 51", ["242"] = "232 31", ["243"] = "232 35", ["244"] = "232 35", ["245"] = "232 35", ["246"] = "232 35", ["247"] = "232 55", ["248"] = "232 55", ["251"] = "35 31", ["252"] = "35 31", ["253"] = "35 31", ["254"] = "35 31", ["255"] = "35 31", ["256"] = "35 31", ["257"] = "35 33", ["258"] = "35 33", ["261"] = "35 31", ["262"] = "35 31", ["263"] = "35 31", ["264"] = "35 31", ["265"] = "35 31", ["266"] = "35 31", ["267"] = "213 55", ["268"] = "213 55", ["271"] = "55 51", ["272"] = "55 51", ["273"] = "55 35", ["274"] = "55 35", ["275"] = "55 35", ["276"] = "55 35", ["277"] = "55 55", ["278"] = "55 55", ["281"] = "22 51", ["282"] = "22 51", ["283"] = "22 35", ["284"] = "22 35", ["285"] = "22 35", ["286"] = "22 35", ["287"] = "22 55", ["288"] = "22 55", --based on the source, i think this is what they mean ["311"] = "35 55 31", ["312"] = "35 55 31", ["313"] = "53 55 31", ["314"] = "53 55 31", ["315"] = "35 55 31", ["316"] = "35 55 31", ["317"] = "35 55 31", ["318"] = "35 55 31", ["321"] = "31 55 31", ["322"] = "31 55 31", ["323"] = "31 55 31", ["324"] = "31 55 31", ["325"] = "31 55 31", ["326"] = "31 55 31", ["327"] = "31 55 31", ["328"] = "31 55 31", ["331"] = "34 53 31", ["332"] = "34 44 31", ["333"] = "34 44 31", ["334"] = "34 44 31", ["335"] = "34 44 31", ["336"] = "34 44 31", ["337"] = "34 44 31", ["338"] = "34 44 31", ["341"] = "23 53 31", ["342"] = "23 53 31", ["343"] = "23 44 31", ["344"] = "23 44 31", ["345"] = "23 44 31", ["346"] = "23 44 31", ["347"] = "23 44 31", ["348"] = "23 44 31", ["351"] = "35 55 31", ["352"] = "35 55 31", ["353"] = "35 55 31", ["354"] = "35 55 31", ["355"] = "35 55 31", ["356"] = "35 55 31", ["357"] = "35 55 31", ["358"] = "25 55 31", ["361"] = "13 44 31", ["362"] = "13 44 31", ["363"] = "13 44 31", ["364"] = "13 44 31", ["365"] = "13 44 31", ["366"] = "13 44 31", ["367"] = "13 44 31", ["368"] = "13 44 31", ["371"] = "55 55 51", ["372"] = "55 55 51", ["373"] = "55 55 31", ["374"] = "55 55 31", ["375"] = "55 55 31", ["376"] = "55 55 31", ["377"] = "55 55 31", ["378"] = "55 55 31", ["381"] = "22 55 51", ["382"] = "22 55 51", ["383"] = "22 55 51", ["384"] = "22 55 51", ["385"] = "22 55 51", ["386"] = "22 55 51", ["387"] = "22 55 51", ["388"] = "22 55 53", --!RPS! }, ['dq'] = { ["11"] = "44", ["12"] = "213", ["13"] = "53", ["14"] = "31", ["15"] = "435", ["16"] = "224", ["17"] = "55", ["18"] = "33", }, ['hz'] = { ["10"] = "", ["11"] = "334", ["21"] = "33 34", ["31"] = "33 34 52", ["41"] = "33 34 55 21", ["51"] = "33 34 55 22 21", ["213"] = "33 53", ["313"] = "33 55 21", ["413"] = "33 55 22 21", ["217"] = "33 55", ["317"] = "33 34 55", ["12"] = "23", ["22"] = "22 34", ["32"] = "22 34 53", ["42"] = "22 34 55 21", ["223"] = "22 53", ["323"] = "22 55 21", ["423"] = "22 55 22 21", ["13"] = "53", ["23"] = "55 21", ["33"] = "55 22 21", ["43"] = "55 22 22 21", ["53"] = "55 22 22 22 21", ["15"] = "45", ["25"] = "34 53", ["35"] = "34 55 21", ["45"] = "34 55 22 21", ["16"] = "113", ["26"] = "11 53", ["36"] = "11 55 21", ["46"] = "11 55 22 21", ["56"] = "11 55 22 22 21", ["17"] = "55", ["27"] = "33 34", ["37"] = "33 34 53", ["47"] = "33 34 55 21", ["273"] = "33 53", ["373"] = "33 55 21", ["473"] = "33 55 22 21", ["270"] = "55 21", ["370"] = "55 22 21", ["470"] = "55 22 22 21", ["377"] = "44 44 55", ["378"] = "44 44 55", ["18"] = "23", ["28"] = "22 34", ["38"] = "22 34 53", ["48"] = "22 34 55 21", ["58"] = "22 34 55 22 21", ["283"] = "22 53", ["383"] = "22 55 21", ["483"] = "22 55 22 21", ["380"] = "22 22 33", --RPS ["1s"] = "33", ["2s"] = "22", ["3s"] = "33", ["5s"] = "34", ["6s"] = "12", ["7s"] = "44", ["8s"] = "22", --3: /33~44/, 5: /33~34/, 6: /11~12~23/, 7: /3~4/, 8: /2~3/ ["multiple"] = "33" }, ['xs'] = { ["10"] = "", ["11"] = "44", ["12"] = "13", ["13"] = "34", ["14"] = "213", ["15"] = "53", ["16"] = "31", ["17"] = "55", ["18"] = "22", }, ['fy'] = { ["10"] = "", ["11"] = "53", ["12"] = "113", ["13"] = "424", ["14"] = "212", ["15"] = "335", ["16"] = "212", ["17"] = "55", ["18"] = "22", ["211"] = "55 55", ["212"] = "55 55", ["213"] = "55 31", ["214"] = "55 31", ["215"] = "55 31", ["216"] = "55 31", ["217"] = "55 55", ["218"] = "55 55", ["22"] = "11 11", ["23"] = "33 35", ["24"] = "11 53", ["25"] = "33 53", ["26"] = "11 35", ["271"] = "55 31", ["272"] = "55 31", ["273"] = "33 35", ["274"] = "33 35", ["275"] = "33 35", ["276"] = "33 35", ["277"] = "55 31", ["278"] = "55 31", ["28"] = "11 53", --RPS ["1s"] = "33", ["2s"] = "11", ["3s"] = "33", ["4s"] = "11", ["5s"] = "33", ["6s"] = "11", ["7s"] = "33", ["8s"] = "11", }, ['sx'] = { ["10"] = "", ["11"] = "52", ["12"] = "231", ["13"] = "335", ["14"] = "113", ["15"] = "33", ["16"] = "11", ["17"] = "45", ["18"] = "23", --regular disyllabic LPS ["211"] = "33 52", ["212"] = "33 52", ["213"] = "33 55", ["214"] = "33 55", ["215"] = "33 55", ["216"] = "33 55", ["217"] = "33 55", ["218"] = "33 55", ["221"] = "11 52", ["222"] = "11 52", ["223"] = "11 55", ["224"] = "11 55", ["225"] = "11 55", ["226"] = "11 55", ["227"] = "11 55", ["228"] = "11 55", ["231"] = "335 52", ["232"] = "335 52", ["233"] = "335 52", ["234"] = "335 52", ["235"] = "335 52", ["236"] = "335 52", ["237"] = "335 54", ["238"] = "335 54", ["241"] = "115 52", ["242"] = "115 52", ["243"] = "115 52", ["244"] = "115 52", ["245"] = "115 52", ["246"] = "115 52", ["247"] = "115 54", ["248"] = "115 54", ["251"] = "33 33", ["252"] = "33 33", ["253"] = "33 33", ["254"] = "33 33", ["255"] = "33 33", ["256"] = "33 33", ["257"] = "33 33", ["258"] = "33 33", ["261"] = "11 11", ["262"] = "11 11", ["263"] = "11 11", ["264"] = "11 11", ["265"] = "11 11", ["266"] = "11 11", ["267"] = "11 11", ["268"] = "11 11", ["271"] = "33 52", ["272"] = "33 52", ["273"] = "33 55", ["274"] = "33 55", ["275"] = "33 55", ["276"] = "33 55", ["277"] = "33 55", ["278"] = "33 55", ["281"] = "11 52", ["282"] = "11 52", ["283"] = "11 55", ["284"] = "11 55", ["285"] = "11 55", ["286"] = "11 55", ["287"] = "11 55", ["288"] = "11 55", --irregular LPS ["250"] = "33 55", ["260"] = "11 55", --regular trisyllabic LPS ["3111"] = "33 55 52", ["3112"] = "33 55 52", ["3113"] = "33 55 52", ["3114"] = "33 55 52", ["3115"] = "33 55 52", ["3116"] = "33 55 52", ["3117"] = "33 55 54", ["3118"] = "33 55 54", ["3121"] = "33 55 52", ["3122"] = "33 55 52", ["3123"] = "33 55 52", ["3124"] = "33 55 52", ["3125"] = "33 55 52", ["3126"] = "33 55 52", ["3127"] = "33 55 54", ["3128"] = "33 55 54", ["3131"] = "33 55 52", ["3132"] = "33 55 52", ["3133"] = "33 55 52", ["3134"] = "33 55 52", ["3135"] = "33 55 52", ["3136"] = "33 55 52", ["3137"] = "33 55 54", ["3138"] = "33 55 54", ["3141"] = "33 55 52", ["3142"] = "33 55 52", ["3143"] = "33 55 52", ["3144"] = "33 55 52", ["3145"] = "33 55 52", ["3146"] = "33 55 52", ["3147"] = "33 55 54", ["3148"] = "33 55 54", ["3151"] = "33 55 52", ["3152"] = "33 55 52", ["3153"] = "33 55 52", ["3154"] = "33 55 52", ["3155"] = "33 55 52", ["3156"] = "33 55 52", ["3157"] = "33 55 54", ["3158"] = "33 55 54", ["3161"] = "33 55 52", ["3162"] = "33 55 52", ["3163"] = "33 55 52", ["3164"] = "33 55 52", ["3165"] = "33 55 52", ["3166"] = "33 55 52", ["3167"] = "33 55 54", ["3168"] = "33 55 54", ["3171"] = "33 5 52", ["3172"] = "33 5 52", ["3173"] = "33 5 52", ["3174"] = "33 5 52", ["3175"] = "33 5 52", ["3176"] = "33 5 52", ["3177"] = "33 5 54", ["3178"] = "33 5 54", ["3181"] = "33 5 52", ["3182"] = "33 5 52", ["3183"] = "33 5 52", ["3184"] = "33 5 52", ["3185"] = "33 5 52", ["3186"] = "33 5 52", ["3187"] = "33 5 54", ["3188"] = "33 5 54", ["3211"] = "11 55 52", ["3212"] = "11 55 52", ["3213"] = "11 55 52", ["3214"] = "11 55 52", ["3215"] = "11 55 52", ["3216"] = "11 55 52", ["3217"] = "11 55 54", ["3218"] = "11 55 54", ["3221"] = "11 55 52", ["3222"] = "11 55 52", ["3223"] = "11 55 52", ["3224"] = "11 55 52", ["3225"] = "11 55 52", ["3226"] = "11 55 52", ["3227"] = "11 55 54", ["3228"] = "11 55 54", ["3231"] = "11 55 52", ["3232"] = "11 55 52", ["3233"] = "11 55 52", ["3234"] = "11 55 52", ["3235"] = "11 55 52", ["3236"] = "11 55 52", ["3237"] = "11 55 54", ["3238"] = "11 55 54", ["3241"] = "11 55 52", ["3242"] = "11 55 52", ["3243"] = "11 55 52", ["3244"] = "11 55 52", ["3245"] = "11 55 52", ["3246"] = "11 55 52", ["3247"] = "11 55 54", ["3248"] = "11 55 54", ["3251"] = "11 55 52", ["3252"] = "11 55 52", ["3253"] = "11 55 52", ["3254"] = "11 55 52", ["3255"] = "11 55 52", ["3256"] = "11 55 52", ["3257"] = "11 55 54", ["3258"] = "11 55 54", ["3261"] = "11 55 52", ["3262"] = "11 55 52", ["3263"] = "11 55 52", ["3264"] = "11 55 52", ["3265"] = "11 55 52", ["3266"] = "11 55 52", ["3267"] = "11 55 54", ["3268"] = "11 55 54", ["3271"] = "11 5 52", ["3272"] = "11 5 52", ["3273"] = "11 5 52", ["3274"] = "11 5 52", ["3275"] = "11 5 52", ["3276"] = "11 5 52", ["3277"] = "11 5 54", ["3278"] = "11 5 54", ["3281"] = "11 5 52", ["3282"] = "11 5 52", ["3283"] = "11 5 52", ["3284"] = "11 5 52", ["3285"] = "11 5 52", ["3286"] = "11 5 52", ["3287"] = "11 5 54", ["3288"] = "11 5 54", ["3311"] = "335 55 52", ["3312"] = "335 55 52", ["3313"] = "335 55 52", ["3314"] = "335 55 52", ["3315"] = "335 55 52", ["3316"] = "335 55 52", ["3317"] = "335 55 54", ["3318"] = "335 55 54", ["3321"] = "335 55 52", ["3322"] = "335 55 52", ["3323"] = "335 55 52", ["3324"] = "335 55 52", ["3325"] = "335 55 52", ["3326"] = "335 55 52", ["3327"] = "335 55 54", ["3328"] = "335 55 54", ["3331"] = "335 55 52", ["3332"] = "335 55 52", ["3333"] = "335 55 52", ["3334"] = "335 55 52", ["3335"] = "335 55 52", ["3336"] = "335 55 52", ["3337"] = "335 55 54", ["3338"] = "335 55 54", ["3341"] = "335 55 52", ["3342"] = "335 55 52", ["3343"] = "335 55 52", ["3344"] = "335 55 52", ["3345"] = "335 55 52", ["3346"] = "335 55 52", ["3347"] = "335 55 54", ["3348"] = "335 55 54", ["3351"] = "335 55 52", ["3352"] = "335 55 52", ["3353"] = "335 55 52", ["3354"] = "335 55 52", ["3355"] = "335 55 52", ["3356"] = "335 55 52", ["3357"] = "335 55 54", ["3358"] = "335 55 54", ["3361"] = "335 55 52", ["3362"] = "335 55 52", ["3363"] = "335 55 52", ["3364"] = "335 55 52", ["3365"] = "335 55 52", ["3366"] = "335 55 52", ["3367"] = "335 55 54", ["3368"] = "335 55 54", ["3371"] = "335 5 52", ["3372"] = "335 5 52", ["3373"] = "335 5 52", ["3374"] = "335 5 52", ["3375"] = "335 5 52", ["3376"] = "335 5 52", ["3377"] = "335 5 54", ["3378"] = "335 5 54", ["3381"] = "335 5 52", ["3382"] = "335 5 52", ["3383"] = "335 5 52", ["3384"] = "335 5 52", ["3385"] = "335 5 52", ["3386"] = "335 5 52", ["3387"] = "335 5 54", ["3388"] = "335 5 54", ["3411"] = "115 55 52", ["3412"] = "115 55 52", ["3413"] = "115 55 52", ["3414"] = "115 55 52", ["3415"] = "115 55 52", ["3416"] = "115 55 52", ["3417"] = "115 55 54", ["3418"] = "115 55 54", ["3421"] = "115 55 52", ["3422"] = "115 55 52", ["3423"] = "115 55 52", ["3424"] = "115 55 52", ["3425"] = "115 55 52", ["3426"] = "115 55 52", ["3427"] = "115 55 54", ["3428"] = "115 55 54", ["3431"] = "115 55 52", ["3432"] = "115 55 52", ["3433"] = "115 55 52", ["3434"] = "115 55 52", ["3435"] = "115 55 52", ["3436"] = "115 55 52", ["3437"] = "115 55 54", ["3438"] = "115 55 54", ["3441"] = "115 55 52", ["3442"] = "115 55 52", ["3443"] = "115 55 52", ["3444"] = "115 55 52", ["3445"] = "115 55 52", ["3446"] = "115 55 52", ["3447"] = "115 55 54", ["3448"] = "115 55 54", ["3451"] = "115 55 52", ["3452"] = "115 55 52", ["3453"] = "115 55 52", ["3454"] = "115 55 52", ["3455"] = "115 55 52", ["3456"] = "115 55 52", ["3457"] = "115 55 54", ["3458"] = "115 55 54", ["3461"] = "115 55 52", ["3462"] = "115 55 52", ["3463"] = "115 55 52", ["3464"] = "115 55 52", ["3465"] = "115 55 52", ["3466"] = "115 55 52", ["3467"] = "115 55 54", ["3468"] = "115 55 54", ["3471"] = "115 5 52", ["3472"] = "115 5 52", ["3473"] = "115 5 52", ["3474"] = "115 5 52", ["3475"] = "115 5 52", ["3476"] = "115 5 52", ["3477"] = "115 5 54", ["3478"] = "115 5 54", ["3481"] = "115 5 52", ["3482"] = "115 5 52", ["3483"] = "115 5 52", ["3484"] = "115 5 52", ["3485"] = "115 5 52", ["3486"] = "115 5 52", ["3487"] = "115 5 54", ["3488"] = "115 5 54", ["3511"] = "33 33 33", ["3512"] = "33 33 33", ["3513"] = "33 33 33", ["3514"] = "33 33 33", ["3515"] = "33 33 33", ["3516"] = "33 33 33", ["3517"] = "33 33 3", ["3518"] = "33 33 3", ["3521"] = "33 33 33", ["3522"] = "33 33 33", ["3523"] = "33 33 33", ["3524"] = "33 33 33", ["3525"] = "33 33 33", ["3526"] = "33 33 33", ["3527"] = "33 33 3", ["3528"] = "33 33 3", ["3531"] = "33 33 33", ["3532"] = "33 33 33", ["3533"] = "33 33 33", ["3534"] = "33 33 33", ["3535"] = "33 33 33", ["3536"] = "33 33 33", ["3537"] = "33 33 3", ["3538"] = "33 33 3", ["3541"] = "33 33 33", ["3542"] = "33 33 33", ["3543"] = "33 33 33", ["3544"] = "33 33 33", ["3545"] = "33 33 33", ["3546"] = "33 33 33", ["3547"] = "33 33 3", ["3548"] = "33 33 3", ["3551"] = "33 33 33", ["3552"] = "33 33 33", ["3553"] = "33 33 33", ["3554"] = "33 33 33", ["3555"] = "33 33 33", ["3556"] = "33 33 33", ["3557"] = "33 33 3", ["3558"] = "33 33 3", ["3561"] = "33 33 33", ["3562"] = "33 33 33", ["3563"] = "33 33 33", ["3564"] = "33 33 33", ["3565"] = "33 33 33", ["3566"] = "33 33 33", ["3567"] = "33 33 3", ["3568"] = "33 33 3", ["3571"] = "33 3 33", ["3572"] = "33 3 33", ["3573"] = "33 3 33", ["3574"] = "33 3 33", ["3575"] = "33 3 33", ["3576"] = "33 3 33", ["3577"] = "33 3 3", ["3578"] = "33 3 3", ["3581"] = "33 3 33", ["3582"] = "33 3 33", ["3583"] = "33 3 33", ["3584"] = "33 3 33", ["3585"] = "33 3 33", ["3586"] = "33 3 33", ["3587"] = "33 3 3", ["3588"] = "33 3 3", ["3611"] = "11 11 11", ["3612"] = "11 11 11", ["3613"] = "11 11 11", ["3614"] = "11 11 11", ["3615"] = "11 11 11", ["3616"] = "11 11 11", ["3617"] = "11 11 1", ["3618"] = "11 11 1", ["3621"] = "11 11 11", ["3622"] = "11 11 11", ["3623"] = "11 11 11", ["3624"] = "11 11 11", ["3625"] = "11 11 11", ["3626"] = "11 11 11", ["3627"] = "11 11 1", ["3628"] = "11 11 1", ["3631"] = "11 11 11", ["3632"] = "11 11 11", ["3633"] = "11 11 11", ["3634"] = "11 11 11", ["3635"] = "11 11 11", ["3636"] = "11 11 11", ["3637"] = "11 11 1", ["3638"] = "11 11 1", ["3641"] = "11 11 11", ["3642"] = "11 11 11", ["3643"] = "11 11 11", ["3644"] = "11 11 11", ["3645"] = "11 11 11", ["3646"] = "11 11 11", ["3647"] = "11 11 1", ["3648"] = "11 11 1", ["3651"] = "11 11 11", ["3652"] = "11 11 11", ["3653"] = "11 11 11", ["3654"] = "11 11 11", ["3655"] = "11 11 11", ["3656"] = "11 11 11", ["3657"] = "11 11 1", ["3658"] = "11 11 1", ["3661"] = "11 11 11", ["3662"] = "11 11 11", ["3663"] = "11 11 11", ["3664"] = "11 11 11", ["3665"] = "11 11 11", ["3666"] = "11 11 11", ["3667"] = "11 11 1", ["3668"] = "11 11 1", ["3671"] = "11 1 11", ["3672"] = "11 1 11", ["3673"] = "11 1 11", ["3674"] = "11 1 11", ["3675"] = "11 1 11", ["3676"] = "11 1 11", ["3677"] = "11 1 1", ["3678"] = "11 1 1", ["3681"] = "11 1 11", ["3682"] = "11 1 11", ["3683"] = "11 1 11", ["3684"] = "11 1 11", ["3685"] = "11 1 11", ["3686"] = "11 1 11", ["3687"] = "11 1 1", ["3688"] = "11 1 1", ["3711"] = "3 55 52", ["3712"] = "3 55 52", ["3713"] = "3 55 52", ["3714"] = "3 55 52", ["3715"] = "3 55 52", ["3716"] = "3 55 52", ["3717"] = "3 55 54", ["3718"] = "3 55 54", ["3721"] = "3 55 52", ["3722"] = "3 55 52", ["3723"] = "3 55 52", ["3724"] = "3 55 52", ["3725"] = "3 55 52", ["3726"] = "3 55 52", ["3727"] = "3 55 54", ["3728"] = "3 55 54", ["3731"] = "3 55 52", ["3732"] = "3 55 52", ["3733"] = "3 55 52", ["3734"] = "3 55 52", ["3735"] = "3 55 52", ["3736"] = "3 55 52", ["3737"] = "3 55 54", ["3738"] = "3 55 54", ["3741"] = "3 55 52", ["3742"] = "3 55 52", ["3743"] = "3 55 52", ["3744"] = "3 55 52", ["3745"] = "3 55 52", ["3746"] = "3 55 52", ["3747"] = "3 55 54", ["3748"] = "3 55 54", ["3751"] = "3 55 52", ["3752"] = "3 55 52", ["3753"] = "3 55 52", ["3754"] = "3 55 52", ["3755"] = "3 55 52", ["3756"] = "3 55 52", ["3757"] = "3 55 54", ["3758"] = "3 55 54", ["3761"] = "3 55 52", ["3762"] = "3 55 52", ["3763"] = "3 55 52", ["3764"] = "3 55 52", ["3765"] = "3 55 52", ["3766"] = "3 55 52", ["3767"] = "3 55 54", ["3768"] = "3 55 54", ["3771"] = "3 5 52", ["3772"] = "3 5 52", ["3773"] = "3 5 52", ["3774"] = "3 5 52", ["3775"] = "3 5 52", ["3776"] = "3 5 52", ["3777"] = "3 5 54", ["3778"] = "3 5 54", ["3781"] = "3 5 52", ["3782"] = "3 5 52", ["3783"] = "3 5 52", ["3784"] = "3 5 52", ["3785"] = "3 5 52", ["3786"] = "3 5 52", ["3787"] = "3 5 54", ["3788"] = "3 5 54", ["3811"] = "1 55 52", ["3812"] = "1 55 52", ["3813"] = "1 55 52", ["3814"] = "1 55 52", ["3815"] = "1 55 52", ["3816"] = "1 55 52", ["3817"] = "1 55 54", ["3818"] = "1 55 54", ["3821"] = "1 55 52", ["3822"] = "1 55 52", ["3823"] = "1 55 52", ["3824"] = "1 55 52", ["3825"] = "1 55 52", ["3826"] = "1 55 52", ["3827"] = "1 55 54", ["3828"] = "1 55 54", ["3831"] = "1 55 52", ["3832"] = "1 55 52", ["3833"] = "1 55 52", ["3834"] = "1 55 52", ["3835"] = "1 55 52", ["3836"] = "1 55 52", ["3837"] = "1 55 54", ["3838"] = "1 55 54", ["3841"] = "1 55 52", ["3842"] = "1 55 52", ["3843"] = "1 55 52", ["3844"] = "1 55 52", ["3845"] = "1 55 52", ["3846"] = "1 55 52", ["3847"] = "1 55 54", ["3848"] = "1 55 54", ["3851"] = "1 55 52", ["3852"] = "1 55 52", ["3853"] = "1 55 52", ["3854"] = "1 55 52", ["3855"] = "1 55 52", ["3856"] = "1 55 52", ["3857"] = "1 55 54", ["3858"] = "1 55 54", ["3861"] = "1 55 52", ["3862"] = "1 55 52", ["3863"] = "1 55 52", ["3864"] = "1 55 52", ["3865"] = "1 55 52", ["3866"] = "1 55 52", ["3867"] = "1 55 54", ["3868"] = "1 55 54", ["3871"] = "1 5 52", ["3872"] = "1 5 52", ["3873"] = "1 5 52", ["3874"] = "1 5 52", ["3875"] = "1 5 52", ["3876"] = "1 5 52", ["3877"] = "1 5 54", ["3878"] = "1 5 54", ["3881"] = "1 5 52", ["3882"] = "1 5 52", ["3883"] = "1 5 52", ["3884"] = "1 5 52", ["3885"] = "1 5 52", ["3886"] = "1 5 52", ["3887"] = "1 5 54", ["3888"] = "1 5 54", --LPS for numbers ["21N1"] = "33 52", ["21N2"] = "33 52", ["21N3"] = "33 55", ["21N4"] = "33 55", ["21N5"] = "33 55", ["21N6"] = "33 55", ["21N7"] = "33 55", ["21N8"] = "33 55", ["22N1"] = "11 52", ["22N2"] = "11 52", ["22N3"] = "11 55", ["22N4"] = "11 55", ["22N5"] = "11 55", ["22N6"] = "11 55", ["22N7"] = "11 55", ["22N8"] = "11 55", ["23N1"] = "55 52", ["23N2"] = "55 52", ["23N3"] = "55 55", ["23N4"] = "55 55", ["23N5"] = "55 55", ["23N6"] = "55 55", ["23N7"] = "55 55", ["23N8"] = "55 55", ["24N1"] = "115 52", ["24N2"] = "115 52", ["24N3"] = "115 55", ["24N4"] = "115 55", ["24N5"] = "115 55", ["24N6"] = "115 55", ["24N7"] = "115 55", ["24N8"] = "115 55", ["25N1"] = "55 52", ["25N2"] = "55 52", ["25N3"] = "55 55", ["25N4"] = "55 55", ["25N5"] = "55 55", ["25N6"] = "55 55", ["25N7"] = "55 55", ["25N8"] = "55 55", ["26N1"] = "11 52", ["26N2"] = "11 52", ["26N3"] = "11 55", ["26N4"] = "11 55", ["26N5"] = "11 55", ["26N6"] = "11 55", ["26N7"] = "11 55", ["26N8"] = "11 55", ["27N1"] = "33 52", ["27N2"] = "33 52", ["27N3"] = "33 55", ["27N4"] = "33 55", ["27N5"] = "33 55", ["27N6"] = "33 55", ["27N7"] = "33 55", ["27N8"] = "33 55", ["28N1"] = "11 52", ["28N2"] = "11 52", ["28N3"] = "11 55", ["28N4"] = "11 55", ["28N5"] = "11 55", ["28N6"] = "11 55", ["28N7"] = "11 55", ["28N8"] = "11 55", ["31N1"] = "33 52 55", ["31N2"] = "33 52 55", ["31N3"] = "33 55 55", ["31N4"] = "33 55 55", ["31N5"] = "33 55 55", ["31N6"] = "33 55 55", ["31N7"] = "33 55 55", ["31N8"] = "33 55 55", ["32N1"] = "11 52 55", ["32N2"] = "11 52 55", ["32N3"] = "11 55 55", ["32N4"] = "11 55 55", ["32N5"] = "11 55 55", ["32N6"] = "11 55 55", ["32N7"] = "11 55 55", ["32N8"] = "11 55 55", ["33N1"] = "55 52 55", ["33N2"] = "55 52 55", ["33N3"] = "55 55 55", ["33N4"] = "55 55 55", ["33N5"] = "55 55 55", ["33N6"] = "55 55 55", ["33N7"] = "55 55 55", ["33N8"] = "55 55 55", ["34N1"] = "115 52 55", ["34N2"] = "115 52 55", ["34N3"] = "115 55 55", ["34N4"] = "115 55 55", ["34N5"] = "115 55 55", ["34N6"] = "115 55 55", ["34N7"] = "115 55 55", ["34N8"] = "115 55 55", ["35N1"] = "55 52 55", ["35N2"] = "55 52 55", ["35N3"] = "55 55 55", ["35N4"] = "55 55 55", ["35N5"] = "55 55 55", ["35N6"] = "55 55 55", ["35N7"] = "55 55 55", ["35N8"] = "55 55 55", ["36N1"] = "11 52 55", ["36N2"] = "11 52 55", ["36N3"] = "11 55 55", ["36N4"] = "11 55 55", ["36N5"] = "11 55 55", ["36N6"] = "11 55 55", ["36N7"] = "11 55 55", ["36N8"] = "11 55 55", ["37N1"] = "33 52 55", ["37N2"] = "33 52 55", ["37N3"] = "33 55 55", ["37N4"] = "33 55 55", ["37N5"] = "33 55 55", ["37N6"] = "33 55 55", ["37N7"] = "33 55 55", ["37N8"] = "33 55 55", ["38N1"] = "11 52 55", ["38N2"] = "11 52 55", ["38N3"] = "11 55 55", ["38N4"] = "11 55 55", ["38N5"] = "11 55 55", ["38N6"] = "11 55 55", ["38N7"] = "11 55 55", ["38N8"] = "11 55 55", --LPS for classifiers ["211C"] = "33 55", ["212C"] = "33 55", ["213C"] = "33 55", ["214C"] = "33 55", ["215C"] = "33 55", ["216C"] = "33 55", ["217C"] = "33 55", ["218C"] = "33 55", ["221C"] = "11 55", ["222C"] = "11 55", ["223C"] = "11 55", ["224C"] = "11 55", ["225C"] = "11 55", ["226C"] = "11 55", ["227C"] = "11 55", ["228C"] = "11 55", ["231C"] = "55 55", ["232C"] = "55 55", ["233C"] = "55 55", ["234C"] = "55 55", ["235C"] = "55 55", ["236C"] = "55 55", ["237C"] = "55 55", ["238C"] = "55 55", ["241C"] = "115 55", ["242C"] = "115 55", ["243C"] = "115 55", ["244C"] = "115 55", ["245C"] = "115 55", ["246C"] = "115 55", ["247C"] = "115 55", ["248C"] = "115 55", ["251C"] = "55 55", ["255C"] = "55 55", ["253C"] = "55 55", ["254C"] = "55 55", ["255C"] = "55 55", ["256C"] = "55 55", ["257C"] = "55 55", ["258C"] = "55 55", ["261C"] = "11 55", ["262C"] = "11 55", ["263C"] = "11 55", ["264C"] = "11 55", ["265C"] = "11 55", ["266C"] = "11 55", ["267C"] = "11 55", ["268C"] = "11 55", ["271C"] = "33 55", ["272C"] = "33 55", ["273C"] = "33 55", ["274C"] = "33 55", ["275C"] = "33 55", ["276C"] = "33 55", ["277C"] = "33 55", ["278C"] = "33 55", ["281C"] = "11 55", ["282C"] = "11 55", ["283C"] = "11 55", ["284C"] = "11 55", ["285C"] = "11 55", ["286C"] = "11 55", ["287C"] = "11 55", ["288C"] = "11 55", ["311C"] = "33 55 55", ["312C"] = "33 55 55", ["313C"] = "33 55 55", ["314C"] = "33 55 55", ["315C"] = "33 55 55", ["316C"] = "33 55 55", ["317C"] = "33 55 55", ["318C"] = "33 55 55", ["321C"] = "11 55 55", ["322C"] = "11 55 55", ["323C"] = "11 55 55", ["324C"] = "11 55 55", ["325C"] = "11 55 55", ["326C"] = "11 55 55", ["327C"] = "11 55 55", ["328C"] = "11 55 55", ["331C"] = "55 55 55", ["332C"] = "55 55 55", ["333C"] = "55 55 55", ["334C"] = "55 55 55", ["335C"] = "55 55 55", ["336C"] = "55 55 55", ["337C"] = "55 55 55", ["338C"] = "55 55 55", ["341C"] = "115 55 55", ["342C"] = "115 55 55", ["343C"] = "115 55 55", ["344C"] = "115 55 55", ["345C"] = "115 55 55", ["346C"] = "115 55 55", ["347C"] = "115 55 55", ["348C"] = "115 55 55", ["351C"] = "55 55 55", ["355C"] = "55 55 55", ["353C"] = "55 55 55", ["354C"] = "55 55 55", ["355C"] = "55 55 55", ["356C"] = "55 55 55", ["357C"] = "55 55 55", ["358C"] = "55 55 55", ["361C"] = "11 55 55", ["362C"] = "11 55 55", ["363C"] = "11 55 55", ["364C"] = "11 55 55", ["365C"] = "11 55 55", ["366C"] = "11 55 55", ["367C"] = "11 55 55", ["368C"] = "11 55 55", ["371C"] = "33 55 55", ["372C"] = "33 55 55", ["373C"] = "33 55 55", ["374C"] = "33 55 55", ["375C"] = "33 55 55", ["376C"] = "33 55 55", ["377C"] = "33 55 55", ["378C"] = "33 55 55", ["381C"] = "11 55 55", ["382C"] = "11 55 55", ["383C"] = "11 55 55", ["384C"] = "11 55 55", ["385C"] = "11 55 55", ["386C"] = "11 55 55", ["387C"] = "11 55 55", ["388C"] = "11 55 55", --verb-SFP disyllabic ("單音詞和語助詞") ["211P"] = "33 52", ["212P"] = "55 52", ["214P"] = "55 52", ["215P"] = "33 55", ["216P"] = "33 55", ["217P"] = "55 54", ["218P"] = "55 54", ["221P"] = "11 52", ["222P"] = "115 52", ["224P"] = "115 52", ["225P"] = "11 55", ["226P"] = "11 55", ["227P"] = "115 54", ["228P"] = "115 54", ["231P"] = "335 52", ["232P"] = "33 52", ["234P"] = "33 55", ["235P"] = "335 52", ["236P"] = "335 52", ["237P"] = "33 55", ["238P"] = "33 55", ["241P"] = "115 52", ["242P"] = "11 52", ["244P"] = "11 55", ["245P"] = "115 52", ["246P"] = "115 52", ["247P"] = "11 55", ["248P"] = "11 55", ["251P"] = "33 55", ["252P"] = "33 33", ["254P"] = "33 33", ["255P"] = "33 33", ["256P"] = "33 33", ["257P"] = "33 33", ["258P"] = "33 33", ["261P"] = "11 55", ["262P"] = "11 11", ["264P"] = "11 11", ["265P"] = "11 11", ["266P"] = "11 11", ["267P"] = "11 11", ["268P"] = "11 11", ["271P"] = "33 55", ["272P"] = "33 52", ["274P"] = "33 55", ["275P"] = "33 55", ["276P"] = "33 55", ["277P"] = "33 55", ["278P"] = "33 55", ["281P"] = "11 55", ["282P"] = "11 52", ["284P"] = "11 55", ["285P"] = "11 55", ["286P"] = "11 55", ["287P"] = "11 55", ["288P"] = "11 55", --verb object RPS ("述賓") ["211O"] = "33 52", ["212O"] = "55 231", ["213O"] = "55 335", ["214O"] = "55 113", ["215O"] = "33 55", ["216O"] = "55 11", ["217O"] = "55 45", ["218O"] = "55 23", ["221O"] = "11 52", ["222O"] = "55 231", ["223O"] = "55 335", ["224O"] = "55 113", ["225O"] = "11 55", ["226O"] = "55 11", ["227O"] = "55 45", ["228O"] = "55 23", ["231O"] = "33 52", ["232O"] = "55 231", ["233O"] = "55 335", ["234O"] = "55 113", ["235O"] = "33 55", ["236O"] = "55 11", ["237O"] = "55 45", ["238O"] = "55 23", ["241O"] = "11 52", ["242O"] = "55 231", ["243O"] = "55 335", ["244O"] = "55 113", ["245O"] = "11 55", ["246O"] = "55 11", ["247O"] = "55 45", ["248O"] = "55 23", ["251O"] = "33 52", ["252O"] = "55 231", ["253O"] = "55 335", ["254O"] = "55 113", ["255O"] = "33 55", ["256O"] = "55 11", ["257O"] = "55 45", ["258O"] = "55 23", ["261O"] = "11 52", ["262O"] = "55 231", ["263O"] = "55 335", ["264O"] = "55 113", ["265O"] = "11 55", ["266O"] = "55 11", ["267O"] = "55 45", ["268O"] = "55 23", ["271O"] = "33 52", ["272O"] = "55 231", ["273O"] = "55 335", ["274O"] = "55 113", ["275O"] = "33 55", ["276O"] = "55 11", ["277O"] = "55 45", ["278O"] = "55 23", ["281O"] = "11 52", ["282O"] = "55 231", ["283O"] = "55 335", ["284O"] = "55 113", ["285O"] = "11 55", ["286O"] = "55 11", ["287O"] = "55 45", ["288O"] = "55 23", --noun verb/adjective RPS ("主謂") ["1A"] = "55", ["2A"] = "115", ["3A"] = "335", ["4A"] = "55", ["5A"] = "55", ["6A"] = "55", ["7A"] = "55", ["8A"] = "25" }, -- [""] = "", ['cx'] = { ["11"] = "324", ["12"] = "14", ["15"] = "43", ["17"] = "45", ["18"] = "31", ["211"] = "42 334", ["212"] = "42 324", ["213"] = "45 41", ["214"] = "45 41", ["215"] = "45 41", ["216"] = "45 51", ["217"] = "42 54", ["218"] = "42 34", ["221"] = "32 334", ["222"] = "32 224", ["223"] = "35 41", ["224"] = "35 51", ["225"] = "35 41", ["226"] = "35 51", ["227"] = "32 54", ["228"] = "32 34", ["231"] = "42 51", ["232"] = "42 451", ["233"] = "42 51", ["234"] = "42 451", ["235"] = "42 51", ["236"] = "42 451", ["237"] = "42 54", ["238"] = "42 34", ["241"] = "32 51", ["242"] = "32 451", ["243"] = "24 44", ["244"] = "24 44", ["245"] = "24 44", ["246"] = "24 44", ["247"] = "24 55", ["248"] = "24 55", ["251"] = "33 31", ["252"] = "33 31", ["253"] = "33 31", ["254"] = "33 31", ["255"] = "33 31", ["256"] = "33 31", ["257"] = "44 54", ["258"] = "33 343", ["261"] = "21 44", ["262"] = "21 344", ["263"] = "21 44", ["264"] = "21 344", ["265"] = "21 44", ["266"] = "21 344", ["267"] = "31 55", ["268"] = "32 55", ["271"] = "44 31", ["272"] = "44 31", ["273"] = "44 31", ["274"] = "44 31", ["275"] = "44 31", ["276"] = "44 31", ["277"] = "44 32", ["278"] = "44 32", ["281"] = "32 51", ["282"] = "32 451", ["283"] = "32 44", ["284"] = "32 344", ["285"] = "32 44", ["286"] = "32 344", ["287"] = "32 55", ["288"] = "32 35", }, ['nb'] = { ["10"] = "", ["11"] = "52", ["12"] = "313", ["13"] = "325", ["14"] = "113", ["15"] = "55", ["16"] = "113", ["17"] = "55", ["18"] = "12", ["21"] = "33 51", ["22"] = "22 51", ["23"] = "33 35", ["24"] = "24 33", ["25"] = "55 33", ["26"] = "22 44", ["27"] = "55 33", ["28"] = "22 35", ["210"] = "33 44", ["240"] = "23 44", ["260"] = "22 35", ["270"] = "33 34", ["31"] = "33 55 31", ["32"] = "22 44 55", ["33"] = "33 44 55", ["34"] = "22 33 31", ["35"] = "55 33 31", ["36"] = "22 55 31", ["37"] = "55 33 31", ["38"] = "22 34 51", --RPS ["s"] = "21", ["multiple"] = "" }, ['zs'] = { ["10"] = "", ["11"] = "53", ["12"] = "22", ["13"] = "35", ["14"] = "24", ["15"] = "44", ["16"] = "13", ["17"] = "55", ["18"] = "12", } } return data 24ndtjred3j8ga5waeuvn6gtu4jzsr1 Module:wuu-pron/Taizhou 828 121056 234944 185485 2025-03-21T09:11:38Z en>ND381 0 234944 Scribunto text/plain local export = {} -- todo: -- 輕聲: logistics ?? -- auto nasal mutation (?) -- sanmen sandhi local loc_names = { ['hy'] = "Huangyan", --當代吳語研究 備註:該方言點暫無學堂拼音,該地點現以「學堂風」拼音拼寫 ['lh'] = "Linhai", --臨海方言雙音節連讀變調實驗研究 + 浙江臨海方言音系 ['sm'] = "Sanmen", --吳語三門方言研究 ['tt'] = "Tiantai", --天台方言研究 + 天台縣誌 !! NOT 語保 !! ['wl'] = "Wenling", --浙江温嶺方言研究 + 温嶺縣誌 -- ['nh'] = "Ninghai" will be added in the future maybe } --all wiki pages link to "Taizhou dialect" except Tiantai, which links to "Tiantai dialect" local order = { 'hy', 'lh', 'sm', 'tt', 'wl' } local ipa_initial = { ["p"] = "p", ["ph"] = "pʰ", ["b"] = "b", ["m"] = "m", ["f"] = "f", ["v"] = "v", ["t"] = "t", ["th"] = "tʰ", ["d"] = "d", ["n"] = "n", ["l"] = "l", ["ts"] = "t͡s", ["tsh"] = "t͡sʰ", ["s"] = "s", ["z"] = "z", ["c"] = "t͡ɕ", ["ch"] = "t͡ɕʰ", ["dz"] = "d͡z", ["j"] = "d͡ʑ", ["gn"] = "n̠ʲ", ["sh"] = "ɕ", ["zh"] = "ʑ", ["k"] = "k", ["kh"] = "kʰ", ["g"] = "ɡ", ["ng"] = "ŋ", ["h"] = "h", ["gh"] = "ɦ", [""] = "", } local ipa_final = { ['hy'] = { ["ou"] = "əu", ["o"] = "o", ["a"] = "a", ["e"] = "e", ["au"] = "ɒ", ["ae"] = "ɛ", ["oe"] = "ø", ["eu"] = "iɤ", ["i"] = "i", ["yi"] = "iɪ", ["ia"] = "ia", ["ie"] = "ie", ["iau"] = "iɒ", ["iae"] = "iɛ", ["ioe"] = "uø", ["ieu"] = "iu", ["u"] = "u", ["ua"] = "ua", ["ue"] = "ue", ["uae"] = "uɛ", ["iu"] = "y", ["an"] = "ã", ["en"] = "əŋ", ["on"] = "oŋ", ["aon"] = "ɒ̃", ["ian"] = "iã", ["in"] = "iɪŋ", ["ion"] = "yoŋ", ["uan"] = "uã", ["uen"] = "uəŋ", ["uaon"] = "uɒ̃", ["iun"] = "yɪŋ", ["aq"] = "ɐʔ", ["aeq"] = "ɛʔ", ["oq"] = "ɔʔ", ["iaq"] = "iɐʔ", ["iaeq"] = "ieʔ", ["ioq"] = "yɔʔ", ["uaq"] = "uɐʔ", ["iuaeq"] = "yɛʔ", ["uoq"] = "uɔʔ", ["er"] = "əl", ["y"] = "z̩", ["yu"] = "z̩ʷ", }, ['lh'] = { ["a"] = "a", ["ae"] = "ɛ", ["e"] = "e", ["oe"] = "ø", ["au"] = "ɔ", ["o"] = "o", ["eu"] = "œ", ["i"] = "i", ["ia"] = "ia", ["ie"] = "iɪ", ["ioe"] = "yø", ["iau"] = "iɔ", ["ieu"] = "iəu", ["u"] = "u", ["ua"] = "ua", ["uae"] = "uɛ", ["ue"] = "ue", ["uoe"] = "uø", ["iu"] = "y", ["an"] = "ã", ["en"] = "əŋ", ["on"] = "oŋ", ["aon"] = "ɔ̃", ["ian"] = "iã", ["in"] = "iəŋ", ["ion"] = "ioŋ", ["iaon"] = "yɔ̃", ["uan"] = "uã", ["uen"] = "uəŋ", ["iun"] = "yəŋ", ["aq"] = "ɐʔ", ["oeq"] = "øʔ", ["aoq"] = "ɔʔ", ["oq"] = "oʔ", ["iaq"] = "iɐʔ", ["iq"] = "ieʔ", ["iaoq"] = "yɔʔ", ["ioq"] = "yoʔ", ["uaq"] = "uɐʔ", ["ueq"] = "uəʔ", ["iuq"] = "yøʔ", ["er"] = "l̩", ["y"] = "z̩" }, ['tt'] = { --與學堂一致,分拆縣誌所合併的促韻尾 ["a"] = "a", ["e"] = "e", ["oe"] = "ø", ["o"] = "o", ["ei"] = "ei", ["au"] = "au", ["ou"] = "ou", ["eu"] = "ɤu", ["i"] = "i", ["ia"] = "ia", ["ie"] = "ie", ["ioe"] = "yø", ["iau"] = "iau", ["ieu"] = "iɤu", ["u"] = "u", ["ua"] = "ua", ["ue"] = "ue", ["uoe"] = "uø", ["uo"] = "uo", ["uei"] = "uei", ["iu"] = "y", ["an"] = "aŋ", ["en"] = "əŋ", ["on"] = "oŋ", ["aon"] = "ɔ̃", ["ian"] = "iaŋ", ["in"] = "iŋ", ["ion"] = "yoŋ",["iaon"] = "yɔ̃", ["uan"] = "uaŋ", ["uen"] = "uəŋ", ["uaon"] = "uɔ̃", ["eq"] = "eʔ", ["aq"] = "aʔ", ["aeq"] = "æʔ", ["oeq"] = "øʔ", ["aoq"] = "ɔʔ", ["oq"] = "uʔ", ["iq"] = "iɪʔ", ["iaq"] = "iaʔ", ["iaeq"] = "iæʔ", ["iaoq"] = "yɔʔ", ["ioq"] = "yuʔ", ["ueq"] = "uəʔ", ["uaq"] = "uaʔ", ["uoeq"] = "uøʔ", ["uaoq"] = "uɔʔ", ["iuq"] = "yəʔ", ["er"] = "əl", ["y"] = "z̩" }, ['sm'] = { --Original book notation: discrepancies with 學堂 include: <ui> all merged into <ue> on wugniu, conservative-文讀 only. Wugniu scheme chosen ["a"] = "a", ["ae"] = "ɛ", ["au"] = "au", ["e"] = "e", ["eu"] = "ɤɯ", ["o"] = "o", ["oe"] = "ø", ["ou"] = "ʊ", ["i"] = "i", ["ia"] = "ia", ["iau"] = "iau", ["ie"] = "ie", ["ieu"] = "iu~iɤɯ", ["iou"] = "iʊ", --<ieu> [iu] Shanglu, [iɤɯ] Xialu ["u"] = "u", ["ua"] = "ua", ["uae"] = "uɛ", ["ue"] = "ue", ["uo"] = "uo", ["uoe"] = "uø", ["iu"] = "y", ["io"] = "yo", ["ioe"] = "yø", ["an"] = "aŋ", ["en"] = "əŋ", ["on"] = "oŋ", ["aon"] = "ɔŋ", ["ian"] = "iaŋ", ["in"] = "iŋ", ["ion"] = "yoŋ", ["iaon"] = "yɔŋ", ["iun"] = "yŋ", ["aq"] = "aʔ", ["aeq"] = "ɛʔ", ["aoq"] = "ɔʔ", ["eq"] = "eʔ", ["oq"] = "oʔ", ["oeq"] = "øʔ", ["iaq"] = "iaʔ", ["ieq"] = "iɪʔ", [ "uaq" ] = "uaʔ", [ "uaeq" ] = "uɛʔ", [ "uaoq" ] = "uɔʔ", [ "ueq" ] = "uəʔ", ["iaoq"] = "iɔʔ", ["ioq"] = "yoʔ", ["ioeq"] = "yøʔ", ["y"] = "z̩", ["yu"] = "z̩ʷ" -- Book notation discrepancies with wugniu: -- Book notation all -h instead of -q -- Book notation yin and yang sonorant sets distinguished with apostrophe -- Book notation tones are numbered 1-5, no dashes -- Book notation has no ghi>y and ghu>w -- Website eq = /əʔ/ vs book /eʔ/ -- Website iaoq = /iɔʔ/ vs book /yɔʔ/ -- Website an series = /ã/ vs book /aŋ/ -- Website aon series = /ɔ̃/ vs book /ɔŋ/ -- Book notation /yŋ/ <iuin> instead of wugniu <iun> -- ["ih"] = "iʔ" vs ["ieh"] = "ieʔ" merged on wugniu website as ["ieq"] = "iɪʔ" -- ["ioeh"] = "yøʔ" vs ["iuih"] = "yʔ" merged on wugniu website as ["ioeq"] = "yøʔ" -- Website Missing rime ["ui"] = "ui" (book notes: old literary reading) -- Website Missing rime ["uoeh"] = "uøʔ" -- Book notes that /uo/ merger into /o/ is very common in Southern parts -- Book has no gn-, website does }, ['wl'] = { ["a"] = "a", ["ae"] = "ɛ", ["e"] = "e", ["au"] = "ɔ", ["o"] = "o", ["oe"] = "ø", ["eu"] = "ɤ", ["ou"] = "ɯ", ["i"] = "i", ["ia"] = "ia", ["iae"] = "iɛ", ["ie"] = "ie", ["iau"] = "iɔ", ["ioe"] = "yø", ["ieu"] = "iɤ", ["iou"] = "iɯ", ["u"] = "u", ["ua"] = "ua", ["uae"] = "uɛ", ["uoe"] = "uø", ["iu"] = "y", ["an"] = "ã", ["en"] = "ən", ["oen"] = "øn", ["eun"] = "ɤn", ["aon"] = "ɔ̃", ["ian"] = "iã", ["in"] = "in", ["ion"] = "yun", ["iaon"] = "yɔ̃", ["uan"] = "uã", ["uen"] = "uən", ["on"] = "un", ["uaon"] = "uɔ̃", ["iun"] = "yn", ["aq"] = "aʔ", ["eq"] = "əʔ", ["euq"] = "ɤʔ", ["oq"] = "oʔ", ["oeq"] = "øʔ", ["iaq"] = "iaʔ", ["iq"] = "iəʔ", ["ioq"] = "yoʔ", ["ioeq"] = "yøʔ", ["uaq"] = "uaʔ", ["ueq"] = "uəʔ", ["uoq"] = "uoʔ", ["er"] = "əl", ["y"] = "z̩" } } local ipa_syllabic = { ["m"] = "m̩", ["n"] = "n̩", ["ng"] = "ŋ̍", } local ipa_tone_contours = { ["hy"] = { ["10"] = "", ["11"] = "52", ["12"] = "31", ["15"] = "44", ["16"] = "113", ["17"] = "55", ["18"] = "12", ["211"] = "35 51", ["212"] = "33 51", ["213"] = "33 31", ["214"] = "33 31", ["215"] = "33 44", ["216"] = "33 44", ["217"] = "33 44", ["218"] = "33 33", ["21A3"] = "33 51", ["21A4"] = "33 51", ["221"] = "25 51", ["222"] = "22 51", ["223"] = "23 31", ["224"] = "23 31", ["225"] = "22 44", ["226"] = "22 44", ["227"] = "23 44", ["228"] = "23 33", ["22A3"] = "22 51", ["231"] = "33 31", ["232"] = "55 31", ["233"] = "33 31", ["234"] = "33 31", ["235"] = "31 44", ["236"] = "31 13", ["237"] = "31 44", ["238"] = "31 33", ["23A1"] = "31 13", ["23A2"] = "34 31", ["23A3"] = "33 51", ["23A4"] = "33 51", ["23B2"] = "31 13", ["241"] = "23 31", ["242"] = "55 31", ["243"] = "23 31", ["244"] = "23 31", ["245"] = "21 44", ["246"] = "21 13", ["247"] = "21 44", ["248"] = "21 33", ["24A1"] = "21 13", ["24A2"] = "21 13", ["24A3"] = "21 51", ["24A4"] = "21 51", ["251"] = "33 31", ["252"] = "31 13", ["253"] = "33 31", ["254"] = "33 31", ["255"] = "33 44", ["256"] = "33 44", ["257"] = "33 44", ["258"] = "33 33", ["25A2"] = "33 31", ["25A3"] = "33 51", ["25A4"] = "24 31", ["25B2"] = "55 31", ["25B3"] = "34 31", ["25B4"] = "22 51", ["261"] = "23 31", ["262"] = "23 31", ["263"] = "23 31", ["264"] = "23 31", ["265"] = "23 44", ["266"] = "23 44", ["267"] = "23 44", ["268"] = "23 33", ["26A1"] = "21 13", ["26A2"] = "21 13", ["26A3"] = "21 13", ["26A4"] = "21 13", ["26B2"] = "22 51", ["26B3"] = "22 51", ["26B4"] = "22 51", ["271"] = "33 31", ["272"] = "44 51", ["273"] = "33 31", ["274"] = "33 31", ["275"] = "33 44", ["276"] = "33 13", ["277"] = "33 44", ["278"] = "33 33", ["27A1"] = "33 13", ["27A2"] = "22 51", ["281"] = "22 31", ["282"] = "22 51", ["283"] = "22 31", ["284"] = "22 31", ["285"] = "22 44", ["286"] = "22 13", ["287"] = "22 44", ["288"] = "22 33", ["28A1"] = "22 13" }, ["lh"] = { ["10"] = "", ["11"] = "33", ["12"] = "22", ["13"] = "42", ["14"] = "21", ["15"] = "55", ["16"] = "13", ["17"] = "55", ["18"] = "12", ["211"] = "334 21", ["212"] = "33 42", ["213"] = "33 42", ["214"] = "33 42", ["215"] = "55 55", ["216"] = "55 55", ["217"] = "33 55", ["218"] = "33 55", ["221"] = "334 21", ["222"] = "23 42", ["223"] = "33 42", ["224"] = "33 42", ["225"] = "23 55", ["226"] = "23 55", ["227"] = "33 55", ["228"] = "33 55", ["231"] = "33 32", ["232"] = "23 53", ["233"] = "32 42", ["234"] = "32 42", ["235"] = "32 55", ["236"] = "32 12", ["237"] = "32 55", ["238"] = "32 55", ["251"] = "23 53", ["252"] = "32 53", ["253"] = "23 42", ["254"] = "33 42", ["255"] = "33 55", ["256"] = "33 55", ["257"] = "33 55", ["258"] = "33 55", ["261"] = "32 53", ["262"] = "32 53", ["263"] = "23 42", ["264"] = "23 42", ["265"] = "33 55", ["266"] = "33 55", ["267"] = "33 55", ["268"] = "33 55", ["271"] = "22 33", ["272"] = "33 33", ["273"] = "33 42", ["274"] = "33 53", ["275"] = "33 55", ["276"] = "33 13", ["277"] = "33 55", ["278"] = "33 55", ["281"] = "22 33", ["282"] = "33 33", ["283"] = "33 42", ["284"] = "33 53", ["285"] = "33 55", ["286"] = "33 13", ["287"] = "33 55", ["288"] = "33 23", }, ["tt"] = { ["10"] = "", ["11"] = "33", ["12"] = "224", ["13"] = "325", ["14"] = "214", ["15"] = "55", ["16"] = "35", ["17"] = "55", ["18"] = "23", ["211"] = "33 33", ["212"] = "55 22", ["213"] = "33 325", ["214"] = "22 334", ["215"] = "33 55", ["216"] = "33 35", ["217"] = "33 55", ["218"] = "22 23", ["221"] = "33 33", ["222"] = "35 22", ["223"] = "44 325", ["224"] = "44 334", ["225"] = "44 55", ["226"] = "33 35", ["227"] = "44 55", ["228"] = "44 23", ["231"] = "32 33", ["232"] = "32 224", ["233"] = "32 325", ["234"] = "32 214", ["235"] = "32 55", ["236"] = "32 35", ["237"] = "32 55", ["238"] = "32 23", ["241"] = "21 33", ["242"] = "21 224", ["243"] = "21 325", ["244"] = "21 214", ["245"] = "21 55", ["246"] = "21 35", ["247"] = "21 55", ["248"] = "21 23", ["251"] = "33 33", ["252"] = "33 335", ["253"] = "33 325", ["254"] = "33 214", ["255"] = "33 55", ["256"] = "33 35", ["257"] = "33 55", ["258"] = "33 23", ["261"] = "33 33", ["262"] = "33 33", ["263"] = "33 325", ["264"] = "33 214", ["265"] = "33 55", ["266"] = "33 35", ["267"] = "33 55", ["268"] = "33 23", ["271"] = "11 33", ["272"] = "11 224", ["273"] = "11 325", ["274"] = "11 214", ["275"] = "11 55", ["276"] = "11 35", ["277"] = "11 55", ["278"] = "11 23", ["281"] = "21 33", ["282"] = "21 224", ["283"] = "21 325", ["284"] = "21 214", ["285"] = "21 55", ["286"] = "21 35", ["287"] = "21 55", ["288"] = "21 23", ["1s"] = "51", ["2s"] = "51", ["3s"] = "51", ["4s"] = "51", ["5s"] = "31", ["6s"] = "31", ["7s"] = "31", ["8s"] = "31" }, ["sm"] = { ["11"] = "334", ["12"] = "223", ["13"] = "314", ["14"] = "213", ["15"] = "55", ["16"] = "55", ["17"] = "5", ["18"] = "3", }, ["wl"] = { ["10"] = "", ["11"] = "33", ["12"] = "31", ["13"] = "42", ["14"] = "31", ["15"] = "55", ["16"] = "13", ["17"] = "55", ["18"] = "22", --mutated tones: they kinda just like happen? ["1R"] = "15", ["2R"] = "15", ["3R"] = "51", ["4R"] = "51", ["5R"] = "51", ["6R"] = "51", ["7R"] = "51", ["8R"] = "51", ["211"] = "55 31", ["212"] = "35 51", ["213"] = "33 31", ["214"] = "33 31", ["215"] = "35 55", ["216"] = "35 55", ["217"] = "33 55", ["218"] = "33 22", ["221"] = "35 51", ["222"] = "14 51", ["223"] = "13 31", ["224"] = "13 31", ["225"] = "13 55", ["226"] = "13 55", ["227"] = "13 55", ["228"] = "13 22", ["231"] = "42 33", ["232"] = "55 51", ["233"] = "42 31", ["234"] = "42 31", ["235"] = "42 55", ["236"] = "42 13", ["237"] = "42 55", ["238"] = "42 22", ["241"] = "31 33", ["242"] = "55 51", ["243"] = "31 31", ["244"] = "31 31", ["245"] = "31 55", ["246"] = "31 13", ["247"] = "31 55", ["248"] = "31 22", ["251"] = "33 33", ["252"] = "33 31", ["253"] = "33 31", ["254"] = "33 31", ["255"] = "35 55", ["256"] = "35 55", ["257"] = "33 55", ["258"] = "33 22", ["261"] = "13 33", ["262"] = "13 31", ["263"] = "13 31", ["264"] = "13 31", ["265"] = "13 55", ["266"] = "35 55", ["267"] = "13 55", ["268"] = "13 22", ["271"] = "33 33", ["272"] = "55 51", ["273"] = "33 31", ["274"] = "33 31", ["275"] = "33 55", ["276"] = "33 13", ["277"] = "33 22", ["278"] = "33 22", ["281"] = "22 33", ["282"] = "22 51", ["283"] = "22 31", ["284"] = "22 31", ["285"] = "22 55", ["286"] = "22 13", ["287"] = "22 55", ["288"] = "22 22" -- 1/3/4/6/8 + * = no change; 2 + * > 6 + *; 5 + * > 1 + *; 7 + * > /3/ + * (can treat as 1 + *) } } -- minidict ignored for now -- all code can be ripped from the Northern module, with these exceptions: -- Huangyan: ensure that the sandhi chain letters are allowed (like in Jinhuanese's module): 23A7 ≠ 237 -- Linhai: k, kh, g, h + i, y = c, cʰ, ɟ, ç -- Wenling: ensure that it allows for mutation: 5cie+7cioq>cion ← this input needs to be allowed -- collapsed display will work like Northern Wu: one loc = loc name, two or more locs = "Taizhou" 1hizsssoowrvfam73u6r63053or57db 234945 234944 2026-05-26T07:14:19Z Lee 19 [[:en:Module:wuu-pron/Taizhou]] වෙතින් එක් සංශෝධනයක් 234944 Scribunto text/plain local export = {} -- todo: -- 輕聲: logistics ?? -- auto nasal mutation (?) -- sanmen sandhi local loc_names = { ['hy'] = "Huangyan", --當代吳語研究 備註:該方言點暫無學堂拼音,該地點現以「學堂風」拼音拼寫 ['lh'] = "Linhai", --臨海方言雙音節連讀變調實驗研究 + 浙江臨海方言音系 ['sm'] = "Sanmen", --吳語三門方言研究 ['tt'] = "Tiantai", --天台方言研究 + 天台縣誌 !! NOT 語保 !! ['wl'] = "Wenling", --浙江温嶺方言研究 + 温嶺縣誌 -- ['nh'] = "Ninghai" will be added in the future maybe } --all wiki pages link to "Taizhou dialect" except Tiantai, which links to "Tiantai dialect" local order = { 'hy', 'lh', 'sm', 'tt', 'wl' } local ipa_initial = { ["p"] = "p", ["ph"] = "pʰ", ["b"] = "b", ["m"] = "m", ["f"] = "f", ["v"] = "v", ["t"] = "t", ["th"] = "tʰ", ["d"] = "d", ["n"] = "n", ["l"] = "l", ["ts"] = "t͡s", ["tsh"] = "t͡sʰ", ["s"] = "s", ["z"] = "z", ["c"] = "t͡ɕ", ["ch"] = "t͡ɕʰ", ["dz"] = "d͡z", ["j"] = "d͡ʑ", ["gn"] = "n̠ʲ", ["sh"] = "ɕ", ["zh"] = "ʑ", ["k"] = "k", ["kh"] = "kʰ", ["g"] = "ɡ", ["ng"] = "ŋ", ["h"] = "h", ["gh"] = "ɦ", [""] = "", } local ipa_final = { ['hy'] = { ["ou"] = "əu", ["o"] = "o", ["a"] = "a", ["e"] = "e", ["au"] = "ɒ", ["ae"] = "ɛ", ["oe"] = "ø", ["eu"] = "iɤ", ["i"] = "i", ["yi"] = "iɪ", ["ia"] = "ia", ["ie"] = "ie", ["iau"] = "iɒ", ["iae"] = "iɛ", ["ioe"] = "uø", ["ieu"] = "iu", ["u"] = "u", ["ua"] = "ua", ["ue"] = "ue", ["uae"] = "uɛ", ["iu"] = "y", ["an"] = "ã", ["en"] = "əŋ", ["on"] = "oŋ", ["aon"] = "ɒ̃", ["ian"] = "iã", ["in"] = "iɪŋ", ["ion"] = "yoŋ", ["uan"] = "uã", ["uen"] = "uəŋ", ["uaon"] = "uɒ̃", ["iun"] = "yɪŋ", ["aq"] = "ɐʔ", ["aeq"] = "ɛʔ", ["oq"] = "ɔʔ", ["iaq"] = "iɐʔ", ["iaeq"] = "ieʔ", ["ioq"] = "yɔʔ", ["uaq"] = "uɐʔ", ["iuaeq"] = "yɛʔ", ["uoq"] = "uɔʔ", ["er"] = "əl", ["y"] = "z̩", ["yu"] = "z̩ʷ", }, ['lh'] = { ["a"] = "a", ["ae"] = "ɛ", ["e"] = "e", ["oe"] = "ø", ["au"] = "ɔ", ["o"] = "o", ["eu"] = "œ", ["i"] = "i", ["ia"] = "ia", ["ie"] = "iɪ", ["ioe"] = "yø", ["iau"] = "iɔ", ["ieu"] = "iəu", ["u"] = "u", ["ua"] = "ua", ["uae"] = "uɛ", ["ue"] = "ue", ["uoe"] = "uø", ["iu"] = "y", ["an"] = "ã", ["en"] = "əŋ", ["on"] = "oŋ", ["aon"] = "ɔ̃", ["ian"] = "iã", ["in"] = "iəŋ", ["ion"] = "ioŋ", ["iaon"] = "yɔ̃", ["uan"] = "uã", ["uen"] = "uəŋ", ["iun"] = "yəŋ", ["aq"] = "ɐʔ", ["oeq"] = "øʔ", ["aoq"] = "ɔʔ", ["oq"] = "oʔ", ["iaq"] = "iɐʔ", ["iq"] = "ieʔ", ["iaoq"] = "yɔʔ", ["ioq"] = "yoʔ", ["uaq"] = "uɐʔ", ["ueq"] = "uəʔ", ["iuq"] = "yøʔ", ["er"] = "l̩", ["y"] = "z̩" }, ['tt'] = { --與學堂一致,分拆縣誌所合併的促韻尾 ["a"] = "a", ["e"] = "e", ["oe"] = "ø", ["o"] = "o", ["ei"] = "ei", ["au"] = "au", ["ou"] = "ou", ["eu"] = "ɤu", ["i"] = "i", ["ia"] = "ia", ["ie"] = "ie", ["ioe"] = "yø", ["iau"] = "iau", ["ieu"] = "iɤu", ["u"] = "u", ["ua"] = "ua", ["ue"] = "ue", ["uoe"] = "uø", ["uo"] = "uo", ["uei"] = "uei", ["iu"] = "y", ["an"] = "aŋ", ["en"] = "əŋ", ["on"] = "oŋ", ["aon"] = "ɔ̃", ["ian"] = "iaŋ", ["in"] = "iŋ", ["ion"] = "yoŋ",["iaon"] = "yɔ̃", ["uan"] = "uaŋ", ["uen"] = "uəŋ", ["uaon"] = "uɔ̃", ["eq"] = "eʔ", ["aq"] = "aʔ", ["aeq"] = "æʔ", ["oeq"] = "øʔ", ["aoq"] = "ɔʔ", ["oq"] = "uʔ", ["iq"] = "iɪʔ", ["iaq"] = "iaʔ", ["iaeq"] = "iæʔ", ["iaoq"] = "yɔʔ", ["ioq"] = "yuʔ", ["ueq"] = "uəʔ", ["uaq"] = "uaʔ", ["uoeq"] = "uøʔ", ["uaoq"] = "uɔʔ", ["iuq"] = "yəʔ", ["er"] = "əl", ["y"] = "z̩" }, ['sm'] = { --Original book notation: discrepancies with 學堂 include: <ui> all merged into <ue> on wugniu, conservative-文讀 only. Wugniu scheme chosen ["a"] = "a", ["ae"] = "ɛ", ["au"] = "au", ["e"] = "e", ["eu"] = "ɤɯ", ["o"] = "o", ["oe"] = "ø", ["ou"] = "ʊ", ["i"] = "i", ["ia"] = "ia", ["iau"] = "iau", ["ie"] = "ie", ["ieu"] = "iu~iɤɯ", ["iou"] = "iʊ", --<ieu> [iu] Shanglu, [iɤɯ] Xialu ["u"] = "u", ["ua"] = "ua", ["uae"] = "uɛ", ["ue"] = "ue", ["uo"] = "uo", ["uoe"] = "uø", ["iu"] = "y", ["io"] = "yo", ["ioe"] = "yø", ["an"] = "aŋ", ["en"] = "əŋ", ["on"] = "oŋ", ["aon"] = "ɔŋ", ["ian"] = "iaŋ", ["in"] = "iŋ", ["ion"] = "yoŋ", ["iaon"] = "yɔŋ", ["iun"] = "yŋ", ["aq"] = "aʔ", ["aeq"] = "ɛʔ", ["aoq"] = "ɔʔ", ["eq"] = "eʔ", ["oq"] = "oʔ", ["oeq"] = "øʔ", ["iaq"] = "iaʔ", ["ieq"] = "iɪʔ", [ "uaq" ] = "uaʔ", [ "uaeq" ] = "uɛʔ", [ "uaoq" ] = "uɔʔ", [ "ueq" ] = "uəʔ", ["iaoq"] = "iɔʔ", ["ioq"] = "yoʔ", ["ioeq"] = "yøʔ", ["y"] = "z̩", ["yu"] = "z̩ʷ" -- Book notation discrepancies with wugniu: -- Book notation all -h instead of -q -- Book notation yin and yang sonorant sets distinguished with apostrophe -- Book notation tones are numbered 1-5, no dashes -- Book notation has no ghi>y and ghu>w -- Website eq = /əʔ/ vs book /eʔ/ -- Website iaoq = /iɔʔ/ vs book /yɔʔ/ -- Website an series = /ã/ vs book /aŋ/ -- Website aon series = /ɔ̃/ vs book /ɔŋ/ -- Book notation /yŋ/ <iuin> instead of wugniu <iun> -- ["ih"] = "iʔ" vs ["ieh"] = "ieʔ" merged on wugniu website as ["ieq"] = "iɪʔ" -- ["ioeh"] = "yøʔ" vs ["iuih"] = "yʔ" merged on wugniu website as ["ioeq"] = "yøʔ" -- Website Missing rime ["ui"] = "ui" (book notes: old literary reading) -- Website Missing rime ["uoeh"] = "uøʔ" -- Book notes that /uo/ merger into /o/ is very common in Southern parts -- Book has no gn-, website does }, ['wl'] = { ["a"] = "a", ["ae"] = "ɛ", ["e"] = "e", ["au"] = "ɔ", ["o"] = "o", ["oe"] = "ø", ["eu"] = "ɤ", ["ou"] = "ɯ", ["i"] = "i", ["ia"] = "ia", ["iae"] = "iɛ", ["ie"] = "ie", ["iau"] = "iɔ", ["ioe"] = "yø", ["ieu"] = "iɤ", ["iou"] = "iɯ", ["u"] = "u", ["ua"] = "ua", ["uae"] = "uɛ", ["uoe"] = "uø", ["iu"] = "y", ["an"] = "ã", ["en"] = "ən", ["oen"] = "øn", ["eun"] = "ɤn", ["aon"] = "ɔ̃", ["ian"] = "iã", ["in"] = "in", ["ion"] = "yun", ["iaon"] = "yɔ̃", ["uan"] = "uã", ["uen"] = "uən", ["on"] = "un", ["uaon"] = "uɔ̃", ["iun"] = "yn", ["aq"] = "aʔ", ["eq"] = "əʔ", ["euq"] = "ɤʔ", ["oq"] = "oʔ", ["oeq"] = "øʔ", ["iaq"] = "iaʔ", ["iq"] = "iəʔ", ["ioq"] = "yoʔ", ["ioeq"] = "yøʔ", ["uaq"] = "uaʔ", ["ueq"] = "uəʔ", ["uoq"] = "uoʔ", ["er"] = "əl", ["y"] = "z̩" } } local ipa_syllabic = { ["m"] = "m̩", ["n"] = "n̩", ["ng"] = "ŋ̍", } local ipa_tone_contours = { ["hy"] = { ["10"] = "", ["11"] = "52", ["12"] = "31", ["15"] = "44", ["16"] = "113", ["17"] = "55", ["18"] = "12", ["211"] = "35 51", ["212"] = "33 51", ["213"] = "33 31", ["214"] = "33 31", ["215"] = "33 44", ["216"] = "33 44", ["217"] = "33 44", ["218"] = "33 33", ["21A3"] = "33 51", ["21A4"] = "33 51", ["221"] = "25 51", ["222"] = "22 51", ["223"] = "23 31", ["224"] = "23 31", ["225"] = "22 44", ["226"] = "22 44", ["227"] = "23 44", ["228"] = "23 33", ["22A3"] = "22 51", ["231"] = "33 31", ["232"] = "55 31", ["233"] = "33 31", ["234"] = "33 31", ["235"] = "31 44", ["236"] = "31 13", ["237"] = "31 44", ["238"] = "31 33", ["23A1"] = "31 13", ["23A2"] = "34 31", ["23A3"] = "33 51", ["23A4"] = "33 51", ["23B2"] = "31 13", ["241"] = "23 31", ["242"] = "55 31", ["243"] = "23 31", ["244"] = "23 31", ["245"] = "21 44", ["246"] = "21 13", ["247"] = "21 44", ["248"] = "21 33", ["24A1"] = "21 13", ["24A2"] = "21 13", ["24A3"] = "21 51", ["24A4"] = "21 51", ["251"] = "33 31", ["252"] = "31 13", ["253"] = "33 31", ["254"] = "33 31", ["255"] = "33 44", ["256"] = "33 44", ["257"] = "33 44", ["258"] = "33 33", ["25A2"] = "33 31", ["25A3"] = "33 51", ["25A4"] = "24 31", ["25B2"] = "55 31", ["25B3"] = "34 31", ["25B4"] = "22 51", ["261"] = "23 31", ["262"] = "23 31", ["263"] = "23 31", ["264"] = "23 31", ["265"] = "23 44", ["266"] = "23 44", ["267"] = "23 44", ["268"] = "23 33", ["26A1"] = "21 13", ["26A2"] = "21 13", ["26A3"] = "21 13", ["26A4"] = "21 13", ["26B2"] = "22 51", ["26B3"] = "22 51", ["26B4"] = "22 51", ["271"] = "33 31", ["272"] = "44 51", ["273"] = "33 31", ["274"] = "33 31", ["275"] = "33 44", ["276"] = "33 13", ["277"] = "33 44", ["278"] = "33 33", ["27A1"] = "33 13", ["27A2"] = "22 51", ["281"] = "22 31", ["282"] = "22 51", ["283"] = "22 31", ["284"] = "22 31", ["285"] = "22 44", ["286"] = "22 13", ["287"] = "22 44", ["288"] = "22 33", ["28A1"] = "22 13" }, ["lh"] = { ["10"] = "", ["11"] = "33", ["12"] = "22", ["13"] = "42", ["14"] = "21", ["15"] = "55", ["16"] = "13", ["17"] = "55", ["18"] = "12", ["211"] = "334 21", ["212"] = "33 42", ["213"] = "33 42", ["214"] = "33 42", ["215"] = "55 55", ["216"] = "55 55", ["217"] = "33 55", ["218"] = "33 55", ["221"] = "334 21", ["222"] = "23 42", ["223"] = "33 42", ["224"] = "33 42", ["225"] = "23 55", ["226"] = "23 55", ["227"] = "33 55", ["228"] = "33 55", ["231"] = "33 32", ["232"] = "23 53", ["233"] = "32 42", ["234"] = "32 42", ["235"] = "32 55", ["236"] = "32 12", ["237"] = "32 55", ["238"] = "32 55", ["251"] = "23 53", ["252"] = "32 53", ["253"] = "23 42", ["254"] = "33 42", ["255"] = "33 55", ["256"] = "33 55", ["257"] = "33 55", ["258"] = "33 55", ["261"] = "32 53", ["262"] = "32 53", ["263"] = "23 42", ["264"] = "23 42", ["265"] = "33 55", ["266"] = "33 55", ["267"] = "33 55", ["268"] = "33 55", ["271"] = "22 33", ["272"] = "33 33", ["273"] = "33 42", ["274"] = "33 53", ["275"] = "33 55", ["276"] = "33 13", ["277"] = "33 55", ["278"] = "33 55", ["281"] = "22 33", ["282"] = "33 33", ["283"] = "33 42", ["284"] = "33 53", ["285"] = "33 55", ["286"] = "33 13", ["287"] = "33 55", ["288"] = "33 23", }, ["tt"] = { ["10"] = "", ["11"] = "33", ["12"] = "224", ["13"] = "325", ["14"] = "214", ["15"] = "55", ["16"] = "35", ["17"] = "55", ["18"] = "23", ["211"] = "33 33", ["212"] = "55 22", ["213"] = "33 325", ["214"] = "22 334", ["215"] = "33 55", ["216"] = "33 35", ["217"] = "33 55", ["218"] = "22 23", ["221"] = "33 33", ["222"] = "35 22", ["223"] = "44 325", ["224"] = "44 334", ["225"] = "44 55", ["226"] = "33 35", ["227"] = "44 55", ["228"] = "44 23", ["231"] = "32 33", ["232"] = "32 224", ["233"] = "32 325", ["234"] = "32 214", ["235"] = "32 55", ["236"] = "32 35", ["237"] = "32 55", ["238"] = "32 23", ["241"] = "21 33", ["242"] = "21 224", ["243"] = "21 325", ["244"] = "21 214", ["245"] = "21 55", ["246"] = "21 35", ["247"] = "21 55", ["248"] = "21 23", ["251"] = "33 33", ["252"] = "33 335", ["253"] = "33 325", ["254"] = "33 214", ["255"] = "33 55", ["256"] = "33 35", ["257"] = "33 55", ["258"] = "33 23", ["261"] = "33 33", ["262"] = "33 33", ["263"] = "33 325", ["264"] = "33 214", ["265"] = "33 55", ["266"] = "33 35", ["267"] = "33 55", ["268"] = "33 23", ["271"] = "11 33", ["272"] = "11 224", ["273"] = "11 325", ["274"] = "11 214", ["275"] = "11 55", ["276"] = "11 35", ["277"] = "11 55", ["278"] = "11 23", ["281"] = "21 33", ["282"] = "21 224", ["283"] = "21 325", ["284"] = "21 214", ["285"] = "21 55", ["286"] = "21 35", ["287"] = "21 55", ["288"] = "21 23", ["1s"] = "51", ["2s"] = "51", ["3s"] = "51", ["4s"] = "51", ["5s"] = "31", ["6s"] = "31", ["7s"] = "31", ["8s"] = "31" }, ["sm"] = { ["11"] = "334", ["12"] = "223", ["13"] = "314", ["14"] = "213", ["15"] = "55", ["16"] = "55", ["17"] = "5", ["18"] = "3", }, ["wl"] = { ["10"] = "", ["11"] = "33", ["12"] = "31", ["13"] = "42", ["14"] = "31", ["15"] = "55", ["16"] = "13", ["17"] = "55", ["18"] = "22", --mutated tones: they kinda just like happen? ["1R"] = "15", ["2R"] = "15", ["3R"] = "51", ["4R"] = "51", ["5R"] = "51", ["6R"] = "51", ["7R"] = "51", ["8R"] = "51", ["211"] = "55 31", ["212"] = "35 51", ["213"] = "33 31", ["214"] = "33 31", ["215"] = "35 55", ["216"] = "35 55", ["217"] = "33 55", ["218"] = "33 22", ["221"] = "35 51", ["222"] = "14 51", ["223"] = "13 31", ["224"] = "13 31", ["225"] = "13 55", ["226"] = "13 55", ["227"] = "13 55", ["228"] = "13 22", ["231"] = "42 33", ["232"] = "55 51", ["233"] = "42 31", ["234"] = "42 31", ["235"] = "42 55", ["236"] = "42 13", ["237"] = "42 55", ["238"] = "42 22", ["241"] = "31 33", ["242"] = "55 51", ["243"] = "31 31", ["244"] = "31 31", ["245"] = "31 55", ["246"] = "31 13", ["247"] = "31 55", ["248"] = "31 22", ["251"] = "33 33", ["252"] = "33 31", ["253"] = "33 31", ["254"] = "33 31", ["255"] = "35 55", ["256"] = "35 55", ["257"] = "33 55", ["258"] = "33 22", ["261"] = "13 33", ["262"] = "13 31", ["263"] = "13 31", ["264"] = "13 31", ["265"] = "13 55", ["266"] = "35 55", ["267"] = "13 55", ["268"] = "13 22", ["271"] = "33 33", ["272"] = "55 51", ["273"] = "33 31", ["274"] = "33 31", ["275"] = "33 55", ["276"] = "33 13", ["277"] = "33 22", ["278"] = "33 22", ["281"] = "22 33", ["282"] = "22 51", ["283"] = "22 31", ["284"] = "22 31", ["285"] = "22 55", ["286"] = "22 13", ["287"] = "22 55", ["288"] = "22 22" -- 1/3/4/6/8 + * = no change; 2 + * > 6 + *; 5 + * > 1 + *; 7 + * > /3/ + * (can treat as 1 + *) } } -- minidict ignored for now -- all code can be ripped from the Northern module, with these exceptions: -- Huangyan: ensure that the sandhi chain letters are allowed (like in Jinhuanese's module): 23A7 ≠ 237 -- Linhai: k, kh, g, h + i, y = c, cʰ, ɟ, ç -- Wenling: ensure that it allows for mutation: 5cie+7cioq>cion ← this input needs to be allowed -- collapsed display will work like Northern Wu: one loc = loc name, two or more locs = "Taizhou" 1hizsssoowrvfam73u6r63053or57db flameout 0 137600 234925 222107 2026-05-25T13:45:51Z Lee 19 /* නාම පදය */ 234925 wikitext text/x-wiki {{also|flame-out|flame out}} == ඉංග්‍රීසි == === වෙනත් ආකාර === * {{alter|en|flame-out}} === නිරුක්තිය === {{deverbal|en|flame out}}. === උච්චාරණය === * {{audio|en|en-us-flameout.ogg|a=US}} === නාම පදය === {{en-noun|~}} # [[දාහක|දාහකයක]] [[දැල්ල]] හදිසියේ නිවී යාම ([[ඉන්දන]] හෝ [[වාත ප්‍රවාහය]] අවහිර වීම හේතු කොට ගෙන ). #: {{ant|en|flare-up}} #: {{cot|en|burnout}} #: {{ux|en|The left engine suffered a '''flameout''' from ingesting heavy rain.}} #* {{quote-book|en|date=9 January 2007|author=w:National Transportation Safety Board|title=Aircraft Accident Report: Crash of Pinnacle Airlines Flight 3701, Bombardier CL-600-2B19, N8396A, Jefferson City, Missouri, October 14, 2004|chapter=1.18.2 Core Lock|url=https://www.ntsb.gov/investigations/AccidentReports/Reports/AAR0701.pdf|archiveurl=https://web.archive.org/web/20220315050317/https://www.ntsb.gov/investigations/AccidentReports/Reports/AAR0701.pdf|archivedate=15 March 2022|access-date=16 June 2022|page=37–38|text=Bombardier’s core lock screening procedure requires a cool-down period before engine shutdown to stabilize internal temperatures and clearances. However, this procedure does not produce the more severe thermal distress associated with the high power, high altitude '''flameouts''' that were experienced during the accident flight. As stated in the Safety Board’s November 20, 2006, safety recommendation letter to the FAA, the successful demonstration of Bombardier’s flight test procedure might not ensure that an engine will not experience core lock if the core is allowed to stop rotating after a high power, high altitude '''flameout'''. In its letter, the Board noted that the No. 1 accident engine had successfully passed the screening procedure during initial production acceptance testing.}} # The act of [[flame out|flaming out]] or [[burn out|burning out]]; [[extinguish]]ing. #: {{ant|en|flare-up}} #: {{cot|en|burnout}} # {{lb|en|figurative}} The act of [[quit]]ting or [[fail]]ing, especially due to [[overwork]] or in a [[dramatic]] [[manner]]. #: {{cot|en|burnout}} #: {{ux|en|The company was one of Silicon Valley's more famous dot-com '''flameouts'''.}} #* {{quote-book|en|year=2010|title=w:A Visit from the Goon Squad|author=w:Jennifer Egan|chapter=Selling the General|passage=She was part of a weave of girls at Miss Rutgers's School, a mesh so fine and scarily intimate that even her mother's '''flameout''' and jail sentence {{...}} couldn't dissolve it.}} bmy0iwr1q1adhirjrysyhvrp2d0pa82 flame out 0 137604 234926 222106 2026-05-25T13:46:27Z Lee 19 /* ක්‍රියා පදය */ 234926 wikitext text/x-wiki {{also|flameout|flame-out}} == ඉංග්‍රීසි == === නිරුක්තිය === {{m|en|flame}} + {{m|en|out}} === උච්චාරණය === * {{audio|en|LL-Q1860 (eng)-Flame, not lame-flame out.wav|a=US}} === ක්‍රියා පදය === {{en-verb|*}} # {{lb|en|of processes and equipment involving [[combustion]]}} ගිනි දැල් [[නිවී යෑම]] හේතු කොටගෙන [[අක්‍රීය වීම]]. {{defdate|from 20th c.}} #: {{cot|en|burn out}} #* {{quote-text|en|year=1967|title=American Labor Arbitration Awards|volume=11|publisher=Prentice-Hall |passage=If on flame out, steam pressure goes below 75# you must go back on gas to return [....] The grievant replied that If he did so, the boiler would '''flame out.'''}} #* {{quote-journal|en|year=2000|journal=U.S|publisher=Environmental Protection Agency|title=Hot mix asphalt plants technical systems audit of testing at plant "C"|section=EPA-454R-00-026 |passage=On 24 July 1998, the silo THC analyzer's FID '''flamed out''' and could not be relighted.}} #* {{quote-text|en|year=2004|author=Philip P. Walsh; Paul Fletcher|title=Gas Turbine Performance|page=487|passage=Restarting in flight is a very important engine capability for all aircraft, as occasionally engines do '''flame out'''.}} #* {{quote-book|en|date=9 January 2007|author=w:National Transportation Safety Board|title=Aircraft Accident Report: Crash of Pinnacle Airlines Flight 3701, Bombardier CL-600-2B19, N8396A, Jefferson City, Missouri, October 14, 2004|chapter=2.2.2 Aerodynamic Stall and Upset Event|url=https://www.ntsb.gov/investigations/AccidentReports/Reports/AAR0701.pdf|archiveurl=https://web.archive.org/web/20220315050317/https://www.ntsb.gov/investigations/AccidentReports/Reports/AAR0701.pdf|archivedate=15 March 2022|access-date=16 June 2022|page=46|text=While the pitch angle was decreasing, a left rolling motion began, which eventually reached 82º left wing down, and the N<sub>1</sub> and fuel flow indications for both engines declined steadily to zero, indicating that both engines had '''flamed out'''. The Safety Board concludes that the upset event exposed both engines to inlet airflow disruption conditions that led to engine stalls and a complete loss of engine power.}} # {{lb|en|now|rare}} To become [[suddenly]] [[angry]]; to [[break out]] into [[indignation]] or similar [[emotion]]; to [[flare up]]. {{defdate|from 16th c.}} #* {{RQ:Richardson Clarissa|I|4|text=[O]n being brought home, and giving us ground to suppose he was much worse hurt than he really was, and a fever ensuing, every one '''flamed out'''; and all was laid at my door.}} # {{lb|en|figuratively}} To [[fail]], usually [[spectacularly]]. # {{lb|en|intransitive}} To stop due to exhaustion. ==== ව්‍යුත්පන්න යෙදුම් ==== {{col3|en |flame-out<pos:n> |flameout<pos:n> }} {{C|en|Anger}} mka831she2b9fjzckz53kiumh387fzv ප්‍රවර්ගය:ස්පාඤ්ඤ උභයලිංගික නාම විශේෂණ පද 14 140921 234898 228677 2026-05-25T13:27:57Z Pinthura 2424 Pinthura විසින් [[ප්‍රවර්ගය:ස්පාඤ්ඤ epicene adjectives]] සිට [[ප්‍රවර්ගය:ස්පාඤ්ඤ උභයලිංගික නාම විශේෂණ පද]] වෙත පිටුව ගෙන යන ලදී: සේවා: නව ප්‍රවර්ග නාමය වෙත ගෙනයාම. 228675 wikitext text/x-wiki {{auto cat}} eomzlm5v4j7ond1phrju7cnue91g5qx 234900 234898 2026-05-25T13:28:07Z Pinthura 2424 සේවා: ඉංග්‍රීසි ව්‍යාපෘතිය වෙත සබැඳියක් එක් කිරීම. 234900 wikitext text/x-wiki {{auto cat}} [[en:Category:Spanish epicene adjectives]] ixoajx9brjmyam0dkgwbp0fl7hxcbsl Module:inc-headword 828 141772 234933 230773 2026-04-27T01:07:42Z en>نعم البدل 0 correct script 234933 Scribunto text/plain -- Support for Hindi, Punjabi, Urdu, Palula, Kohistani Shina headword templates; eventually will support other Indic languages, such as -- Marathi, Gujarati, Bengali, Assamese, etc. local export = {} local pos_functions = {} local force_cat = false -- for testing; if true, categories appear in non-mainspace pages local require_when_needed = require("Module:utilities/require when needed") local m_links = require("Module:links") local m_table = require("Module:table") local list_to_set = m_table.listToSet local rsplit = mw.text.split local uupper = mw.ustring.upper local ulower = mw.ustring.lower local unpack = unpack or table.unpack -- Lua 5.2 compatibility local en_utilities_module = "Module:en-utilities" local headword_module = "Module:headword" local headword_utilities_module = "Module:headword utilities" local languages_module = "Module:languages" local parse_interface_module = "Module:parse interface" local scripts_module = "Module:scripts" local ur_hi_convert_module = "Module:ur-hi-convert" local pa_Arab_Guru_module = "Module:pa-Arab-Guru" local m_en_utilities = require_when_needed(en_utilities_module) local m_headword_utilities = require_when_needed(headword_utilities_module) local glossary_link = require_when_needed(headword_utilities_module, "glossary_link") local boolean_param = {type = "boolean"} local list_param = {list = true, disallow_holes = true} local gender_param = {type = "genders"} local gender_param_with_default = {type = "genders", default = "?"} local insert = table.insert local concat = table.concat local rfind = mw.ustring.find local rmatch = mw.ustring.match local rsplit = mw.text.split local unpack = unpack or table.unpack -- Lua 5.2 compatibility local misc_pos_with_gender = list_to_set { "numerals", "suffixes", "adjective forms", "noun forms", "proper noun forms", "pronoun forms", "determiner forms", "verb forms", "postposition forms", } local function generate_hindis_from_urdu_heads(headobjs) local hindis = {} for _, headobj in ipairs(headobjs) do local hindiobj = m_table.shallowCopy(headobj) hindiobj.term = require(ur_hi_convert_module).tr(m_links.remove_links(headobj.term)) hindiobj.tr = nil insert(hindis, hindiobj) end return hindis end local function generate_gur_from_shah_heads(headobjs) local gurus = {} for _, headobj in ipairs(headobjs) do local guruobj = m_table.shallowCopy(headobj) guruobj.term = require(pa_Arab_Guru_module).tr(m_links.remove_links(headobj.term)) guruobj.tr = nil insert(gurus, guruobj) end return gurus end local langs_supported = { ["hi"] = { other_langs_scripts = { {"ur", "ur", "ur-Arab", "Urdu"}, }, }, ["pa"] = { other_langs_scripts = { {"gur", "pa", "Guru", "Gurmukhi", generate_gur_from_shah_heads}, {"sha", "pa", "pa-Arab", "Shahmukhi"}, }, sccat = true, }, ["ur"] = { other_langs_scripts = { {"hi", "hi", "Deva", "Hindi", generate_hindis_from_urdu_heads}, }, enable_auto_translit = true, }, ["phl"] = { other_langs_scripts = { {"pa", "phl", "Arab", "Perso-Arabic"}, {"lat", "phl", "Latn", "Latin"}, }, sccat = true, }, ["plk"] = { other_langs_scripts = { {"pa", "plk", "Arab", "Perso-Arabic"}, {"lat", "plk", "Latn", "Latin"}, }, sccat = true, } } ----------------------------------------------- Utilities -------------------------------------------- local function split_on_comma(val) if val:find(",") then return require(parse_interface_module).split_on_comma(val) else return {val} end end local function ine(val) if val == "" then return nil else return val end end local function track(page) require("Module:debug").track("hi-pa-headword/" .. page) return true end local function validate_genders(data, genders) data.genders = genders if not genders then return end for _, gspec in ipairs(genders) do local g = gspec.spec if g == "m" or g == "f" or g == "m-p" or g == "f-p" or g == "mf" or g == "mf-p" or g == "mfbysense" or g == "mfbysense-p" or g == "mfequiv" or g == "mfequiv-p" or g == "?" then else error("Invalid gender: " .. g) end end end -- Parse an inflection. The raw arguments come from `args[field]`, which is parsed for inline modifiers. Multiple -- comma-separated values are allowed. local function parse_inflection(data, args, field, is_head, no_include_tr, is_single_param) local argfield = field if type(argfield) == "table" then argfield = argfield[1] end if is_single_param then local retval if args[argfield] then retval = m_headword_utilities.parse_term_with_modifiers { val = args[argfield], paramname = field, splitchar = ",", is_head = is_head, include_mods = not no_include_tr and {"tr"} or nil, } end return retval or {} else return m_headword_utilities.parse_term_list_with_modifiers { forms = args[argfield], paramname = field, splitchar = ",", is_head = is_head, include_mods = not no_include_tr and {"tr"} or nil, } end end -- Parse and insert an inflection not requiring additional processing into `data.inflections`. The raw arguments come -- from `args[field]`, which is parsed for inline modifiers. Multiple comma-separated values are allowed. `label` is the -- label that the inflections are given; sections enclosed in <<...>> are linked to the glossary. `accel_form` is the -- accelerator form, or nil. `enable_auto_translit` is set if requested by the language. local function parse_and_insert_inflection(data, args, field, label, accel_form) local terms = parse_inflection(data, args, field) local accel_obj if accel_form then local lemmas = {} local lemma_translits = {} for i, headobj in ipairs(data.heads) do lemmas[i] = headobj.term lemma_translits[i] = headobj.tr end accel_obj = { lemma = lemmas, lemma_translit = lemma_translits, form = accel_form, } end m_headword_utilities.insert_inflection { headdata = data, terms = terms, label = label, accel = accel_obj, enable_auto_translit = data.langprops.enable_auto_translit, } end --[==[ Main entry point. Takes two params: ; {{para|lang|req=1}} : The language code of the language of the headword template. ; {{para|1}} : The part of speech, pluralized; omit for {{tl|hi-head}}, {{tl|pa-head}} and {{tl|ur-head}}. ]==] function export.show(frame) local iparams = { [1] = true, ["lang"] = {required = true}, } local iargs = require("Module:parameters").process(frame.args, iparams) local parargs = frame:getParent().args local poscat = iargs[1] local langcode = iargs.lang if not langs_supported[langcode] then local langcodes_supported = {} for lang, _ in pairs(langs_supported) do insert(langcodes_supported, lang) end error("This module currently only works for lang=" .. concat(langcodes_supported, "/")) end local lang = require(languages_module).getByCode(langcode, true) local langname = lang:getCanonicalName() local pos_in_1 = not poscat if pos_in_1 then poscat = ine(parargs[1]) or mw.title.getCurrentTitle().fullText == "Template:" .. langcode .. "-head" and "interjection" or error("Part of speech must be specified in 1=") poscat = require(headword_module).canonicalize_pos(poscat) end local indexing_poscat = pos_in_1 and (misc_pos_with_gender[poscat] and "head_with_gender" or "head") or poscat local langprops = langs_supported[langcode] local params = { ["head"] = true, ["head2"] = {replaced_by = false, instead = "use comma-separated |head="}, ["tr"] = true, ["tr2"] = {replaced_by = false, instead = "use comma-separated |tr= or <tr:...> inline modifier on head"}, ["id"] = true, ["sort"] = true, ["nolink"] = boolean_param, ["nolinkhead"] = {type = "boolean", alias_of = "nolink"}, ["suffix"] = boolean_param, ["nosuffix"] = boolean_param, ["splithyphen"] = boolean_param, ["json"] = boolean_param, ["pagename"] = true, -- for testing } if pos_in_1 then params[1] = {required = true} -- required but ignored as already processed above end for _, other_lang_script in ipairs(langprops.other_langs_scripts) do local param, _, _, _ = unpack(other_lang_script) params[param] = true params[param .. "1"] = {replaced_by = false, instead = "use comma-separated items (with no space after the comma) in |" .. param .. "="} params[param .. "2"] = {replaced_by = false, instead = "use comma-separated items (with no space after the comma) in |" .. param .. "="} end if pos_functions[indexing_poscat] then for key, val in pairs(pos_functions[indexing_poscat].params) do params[key] = val end end local parargs = frame:getParent().args local args = require("Module:parameters").process(parargs, params) local pagename = args.pagename or mw.loadData("Module:headword/data").pagename local data = { lang = lang, langname = langname, langprops = langprops, pos_category = poscat, categories = {}, genders = {}, inflections = {}, pagename = pagename, id = args.id, sort_key = args.sort, force_cat_output = force_cat, -- We use our own splitting algorithm so the redundant head cat will be inaccurate. no_redundant_head_cat = true, sccat = langprops.sccat, } local trs = args.tr and split_on_comma(args.tr) or {} local num_trs = #trs local heads = args.head and parse_inflection(data, args, "head", "is_head", nil, "is_single_param") or {} local user_specified_heads = heads local num_heads = #heads if num_heads > 0 and num_trs > 0 and num_heads ~= num_trs then error(("%s head%s specified explicitly but %s translit%s; they must match; use '+' to stand for the default head (the pagename) or no manual translit"):format( num_heads, num_heads > 1 and "s" or "", num_trs, num_trs > 1 and "s" or "")) end -- Be careful here not to overwrite user_specified_heads if it's empty so we can later check user_specified_heads -- to see if the user provided any heads. if num_heads == 0 and num_trs > 0 then heads = {} for i = 1, num_trs do heads[i] = {term = "+"} end end if not heads[1] then heads = {{term = "+"}} end for i, headobj in ipairs(heads) do if headobj.term == "+" then headobj.term = args.nolink and pagename or m_headword_utilities.add_links_to_multiword_term(pagename, {split_hyphen_when_space = args.splithyphen}) end if headobj.tr and trs[i] then if headobj.tr ~= trs[i] then error(("Saw two different translits '%s' and '%s' for head #%s '%s'"):format( headobj.tr, trs[i], i, headobj.term)) end else headobj.tr = headobj.tr or trs[i] end if headobj.tr == "+" then headobj.tr = nil end end data.heads = heads data.is_suffix = false if args.suffix or ( not args.nosuffix and pagename:find("^%-") and poscat ~= "suffixes" and poscat ~= "suffix forms" ) then data.is_suffix = true data.pos_category = "suffixes" local singular_poscat = m_en_utilities.singularize(poscat) insert(data.categories, langname .. " " .. singular_poscat .. "-forming suffixes") insert(data.inflections, {label = singular_poscat .. "-forming suffix"}) end if pos_functions[indexing_poscat] then pos_functions[indexing_poscat].func(args, data) end for _, other_lang_script in ipairs(langprops.other_langs_scripts) do local param, other_langcode, other_sccode, lang_script_label, generate_from_heads = unpack(other_lang_script) local terms = parse_inflection(data, args, param, nil, "no_include_tr", "is_single_param") or {} if not terms[1] and generate_from_heads then terms = generate_from_heads(user_specified_heads) end if terms[1] then local other_lang = require(languages_module).getByCode(other_langcode, true) local other_sc = require(scripts_module).getByCode(other_sccode, true) for _, termobj in ipairs(terms) do termobj.lang = other_lang termobj.sc = other_sc end m_headword_utilities.insert_inflection { headdata = data, terms = terms, label = lang_script_label .. " spelling", -- Don't set `enable_auto_translit` here, e.g. for Urdu. } end end if args.json then return require("Module:JSON").toJSON(data) end return require(headword_module).full_headword(data) end pos_functions.adjectives = { params = { [1] = {list = "comp", disallow_holes = true}, [2] = {list = "sup", disallow_holes = true}, ["f"] = list_param, ["ind"] = boolean_param, }, func = function(args, data) if args["ind"] then insert(data.inflections, {label = glossary_link("indeclinable")}) insert(data.categories, data.langname .. " indeclinable adjectives") end parse_and_insert_inflection(data, args, {1, "comp"}, "<<comparative>>") parse_and_insert_inflection(data, args, {2, "sup"}, "<<superlative>>") parse_and_insert_inflection(data, args, "f", "feminine") end, } pos_functions.ordinals = { params = { ["f"] = list_param, ["ind"] = boolean_param, }, func = function(args, data) data.pos_category = "adjectives" insert(data.categories, data.langname .. " numerals") if args["ind"] then insert(data.inflections, {label = glossary_link("indeclinable")}) insert(data.categories, data.langname .. " indeclinable numerals") end parse_and_insert_inflection(data, args, "f", "feminine") end, } pos_functions.cardinals = { params = { [1] = gender_param, ["g"] = {replaced_by = 1}, ["sym"] = list_param, }, func = function(args, data) data.pos_category = "numerals" validate_genders(data, args[1]) parse_and_insert_inflection(data, args, "sym", "native script symbol") end, } local function nouns(plpos) return { params = { [1] = gender_param_with_default, ["g"] = {replaced_by = 1}, ["pl"] = list_param, ["f"] = list_param, ["m"] = list_param, ["ind"] = boolean_param, }, func = function(args, data) validate_genders(data, args[1]) if args["ind"] then if args["pl"][1] then error("Can't specify both ind= and pl=") end insert(data.inflections, {label = glossary_link("indeclinable")}) insert(data.categories, data.langname .. " indeclinable " .. plpos) else parse_and_insert_inflection(data, args, "pl", "formal plural", "formal|p") end parse_and_insert_inflection(data, args, "m", "male equivalent", "m") parse_and_insert_inflection(data, args, "f", "female equivalent", "f") if args["m"][1] or args["f"][1] then insert(data.categories, data.langname .. " " .. plpos .. " with other-gender equivalents") end end, } end pos_functions.nouns = nouns("nouns") pos_functions["proper nouns"] = nouns("proper nouns") pos_functions.pronouns = { params = { [1] = gender_param, ["g"] = {replaced_by = 1}, }, func = function(args, data) validate_genders(data, args[1]) end, } pos_functions.verbs = { params = { [1] = true, }, func = function(args, data) if args[1] then local label, cat if args[1] == "t" then label = "transitive" insert(data.categories, data.langname .. " transitive verbs") elseif args[1] == "i" then label = "intransitive" insert(data.categories, data.langname .. " intransitive verbs") elseif args[1] == "d" then label = "ditransitive" insert(data.categories, data.langname .. " ditransitive verbs") elseif args[1] == "it" or args[1] == "ti" or args[1] == "a" then label = "ambitransitive" insert(data.categories, data.langname .. " ambitransitive verbs") insert(data.categories, data.langname .. " transitive verbs") insert(data.categories, data.langname .. " intransitive verbs") elseif args[1] == "tp" then -- only in Palula label = "transitive" insert(data.categories, data.langname .. " transitive verbs") insert(data.categories, data.langname .. " passive verbs") insert(data.inflections, {label = glossary_link("passive")}) else error("Unrecognized param 1=" .. args[1] .. ": Should be 'i' = intransitive, 't' = transitive, 'd' = ditransitive or 'it'/'ti'/'a' = ambitransitive") end insert(data.inflections, {label = glossary_link(label)}) end if data.pagename:find(" ") then local base_verb = m_links.remove_links(data.pagename):gsub("^.* ", "") insert(data.categories, data.langname .. " compound verbs formed with " .. base_verb) end end, } pos_functions.head_with_gender = { params = { [2] = gender_param, }, func = function(args, data) validate_genders(data, args[2]) end, } local pos_prelude = { ["head"] = "This template should be used to generate the headword line for LANG terms whose part of speech does not have an associated specialized template. The current specialized templates are " .. "{{tl|CODE-noun}}, {{tl|CODE-proper noun}}, {{tl|CODE-pron}} (pronouns), {{tl|CODE-verb}}, {{tl|CODE-adj}} (adjectives), {{tl|CODE-adv}} (adverbs), {{tl|CODE-num-card}} (cardinal numbers/numerals) and ".. "{{tl|CODE-num-ord}} (ordinal numbers/numerals). All others should use {{tl|CODE-head}}.", } local noun_addl_params = [=[ ;{{para|pl}} : Formal or irregular plural(s). Intended particularly for Arabic and Persian-origin plurals. Separate multiple items with a comma (not followed by a space). Per-item inline modifiers are supported. ;{{para|f}} : Female equivalent(s), for a noun referring to a male person or animal. Separate multiple items with a comma (not followed by a space). Per-item inline modifiers are supported. ;{{para|m}} : Male equivalent(s), for a noun referring to a female person or animal. Separate multiple items with a comma (not followed by a space). Per-item inline modifiers are supported. ;{{para|ind|1}} : Specify that the noun is indeclinable. ]=] local pos_addl_params = { ["nouns"] = noun_addl_params, ["proper nouns"] = noun_addl_params, ["verbs"] = [=[ ;{{para|1}} : Verb type. One of {{cd|t}} (transitive), {{cd|i}} (intransitive), {{cd|d}} (ditransitive) or {{cd|it}}/{{cd|ti}}/{{cd|a}} (ambitransitive). ]=], ["adjectives"] = [=[ ;{{para|1}} : Comparative form(s). Separate multiple items with a comma (not followed by a space). Per-item inline modifiers are supported. ;{{para|2}} : Superlative form(s). Separate multiple items with a comma (not followed by a space). Per-item inline modifiers are supported. ;{{para|ind|1}} : Specify that the adjective is indeclinable. ;{{para|f}} : Feminine form(s) of an adjective with irregular feminine forms. ]=], ["cardinals"] = [=[ ;{{para|sym}} : Native script symbol(s) for this numeral. Separate multiple items with a comma (not followed by a space). Per-item inline modifiers are supported. ]=], ["ordinals"] = [=[ ;{{para|ind|1}} : Specify that the ordinal is indeclinable. ;{{para|f}} : Feminine form(s) of an ordinal adjective with irregular feminine forms. ]=], ["head"] = [=[ ;{{para|1|req=1}} : Part of speech. Can be singular or plural and can be abbreviated (e.g. {{cd|n}} for noun; {{cd|nounf}} or {{cd|nf}} for noun form; {{cd|interj}} or {{cd|intj}} for interjection; {{cd|pcl}} for particle; {{cd|phr}} for phrase; etc.). The recognized abbreviations are listed in [[Template:head#Part of speech]] and are the same abbreviations that can be specified in the part-of-speech parameter to {{tl|head}}. ;{{para|2}} : Gender(s). Specifying a gender is always optional and is only allowed for certain parts of speech where it makes sense to specify a gender (currently this includes numerals, suffixes, adjective forms, noun forms, proper noun forms, pronoun forms, determiner forms, verb forms and postposition forms). Possible values are {{cd|m}}, {{cd|f}}, {{cd|m-p}}, {{cd|f-p}}, {{cd|mf}} (can be either masculine or feminine), {{cd|mf-p}} (plural-only, can be either masculine or feminine), {{cd|mfbysense}} (can be either masculine or feminine, depending on the natural gender of the person or animal being referred to), {{cd|mfbysense-p}} (plural-only, can be either masculine or feminine, depending on the natural gender of the person or animal being referred to). Separate multiple items with a comma (not followed by a space). Per-item inline modifiers are supported. ]=], } local pos_has_gender = { ["nouns"] = true, ["proper nouns"] = true, ["pronouns"] = true, ["cardinals"] = true, } --[==[ Documentation generation function, used to populate the documentation describing all parameters of all headword-line templates. Supports the following parameters: ; {{para|lang|req=1}} : The language code of the language of the headword template being documented. ; {{para|pos|req=1}} : The plural part of speech of the headword template being documented. Use {{cd|head}} for {{tl|hi-head}}/{{tl|pa-head}}/{{tl|ur-head}}/etc. ]==] function export.doctext(frame) local iparams = { ["lang"] = {required = true, type = "language"}, ["pos"] = {required = true}, } local iargs = require("Module:parameters").process(frame.args, iparams) local langcode = iargs.lang:getCode() if not langs_supported[langcode] then local langcodes_supported = {} for lang, _ in pairs(langs_supported) do insert(langcodes_supported, lang) end error("This module currently only works for lang=" .. concat(langcodes_supported, "/")) end local other_lang_script_equivs = langcode == "hi" and [=[ ;{{para|ur}} : Urdu equivalent(s). Separate multiple items with a comma (not followed by a space). Per-item inline modifiers are supported. ]=] or langcode == "ur" and [=[ ;{{para|hi}} : Hindi equivalent(s). Separate multiple items with a comma (not followed by a space). Per-item inline modifiers are supported. ]=] or langcode == "pa" and [=[ ;{{para|gur}} : Gurmukhi equivalent(s) of a Shahmukhi term. Separate multiple items with a comma (not followed by a space). Per-item inline modifiers are supported. ;{{para|sha}} : Shahmukhi equivalent(s) of a Gurmukhi term. Separate multiple items with a comma (not followed by a space). Per-item inline modifiers are supported. ]=] or (langcode == "phl" or langcode == "plk") and [=[ ;{{para|pa}} : Perso-Arabic spelling(s) of the term. Separate multiple items with a comma (not followed by a space). Per-item inline modifiers are supported. ;{{para|lat}} : Latin spelling(s) of the term. Separate multiple items with a comma (not followed by a space). Per-item inline modifiers are supported. ]=] or "" local prelude = (pos_prelude[iargs.pos] or "This template should be used to generate the headword line for LANG POS.") :gsub("LANG", iargs.lang:getCanonicalName()) :gsub("CODE", iargs.lang:getCode()) :gsub("POS", iargs.pos) local g_text = [=[ ;{{para|1}} : Gender(s). Possible values are {{cd|m}}, {{cd|f}}, {{cd|m-p}}, {{cd|f-p}}, {{cd|mf}} (can be either masculine or feminine), {{cd|mf-p}} (plural-only, can be either masculine or feminine), {{cd|mfbysense}} (can be either masculine or feminine, depending on the natural gender of the person or animal being referred to), {{cd|mfbysense-p}} (plural-only, can be either masculine or feminine, depending on the natural gender of the person or animal being referred to). Separate multiple items with a comma (not followed by a space). Per-item inline modifiers are supported. ]=] local includeg = pos_has_gender[iargs.pos] local addl_params = pos_addl_params[iargs.pos] or "" local text = prelude .. [=[ ==Parameters== The following parameters are supported: ]=] .. (includeg and g_text or "") .. addl_params .. [=[ ;{{para|head}} : Explicitly specified headword(s), for ]=] .. (langcode == "pa" and "adding vowel diacritics to Shahmukhi terms or " or langcode == "ur" and "adding vowel diacritics or " or "") .. "introducing links in multiword expressions. Separate multiple items with a comma (not followed by a space). " .. "Per-item inline modifiers are supported. Use {{cd|+}} to request the default linking algorithm (equivalent to omitting the value if there's only one value). " .. "Note that by default each word of a multiword lemma is linked" .. (langcode == "ur" and "." or ", so you only need to use this " .. (langcode == "pa" and "for Gurmukhi terms " or "") .. "when the default links don't suffice (e.g. the multiword expression consists of non-lemma forms, which need to be linked to their lemmas).") .. "\n" .. [=[ ;{{para|tr}} : Manual transliteration(s), in case the automatic transliteration is incorrect. Separate multiple items with a comma (not followed by a space), ]=] .. [=[and use {{cd|+}} to stand for the default automatic translation (equivalent to omitting the value if there's only one value). ]=] .. [=[If {{para|head}} is used, there should be the same number of transliterations as head values, or an error will occur. ]=] .. other_lang_script_equivs .. [=[ ;{{para|nolink|1}}, {{para|nolinkhead|1}} : Don't link the individual words in a multiword expression. ;{{para|suffix|1}} : Specify that the term is a suffix. Not needed if the term begins with a hyphen. ;{{para|nosuffix|1}} : Specify that a term beginning with a hyphen is not a suffix. ;{{para|id}} : Sense ID, for linking to this particular headword when there is more than one. See {{tl|senseid}} for more information. ; {{para|splithyph|1}} : Indicate that automatic splitting and linking of words should split on hyphens in multiword expressions with spaces in them. Normally splitting on hyphens only occurs in terms without spaces. ; {{para|pagename}} : Override the page name used to compute default values of various sorts. Useful when testing, for documentation pages, etc. ; {{para|sort}} : Sort key. Rarely needs to be specified, as it is normally automatically generated. ; {{para|json|1}} : Output the headword data in JSON form instead of the normal output. For use by bots. ]=] local after_params_text =[=[ ==Inline modifiers== All params above that allow for multiple comma-separated values (except for {{para|tr}}) support ''inline modifiers'', e.g. {{para|pl|रायज़,फ़राइज़<l:rare>}} to attach a label ''rare'' to the second plural. The following modifiers are recognized: * {{cd|tr}}: manual translit; cannot be specified for genders as it doesn't make sense to do so * {{cd|q}}: qualifier, e.g. {{cd|<q:in the plural>}} or {{cd|<q:when referring to a card game>}}; this appears *BEFORE* the term, parenthesized and italicized * {{cd|qq}}: qualifier, e.g. {{cd|<qq:in the plural>}} or {{cd|<qq:when referring to a card game>}}; this appears *AFTER* the term, parenthesized and italicized * {{cd|l}}: comma-separated list of labels, e.g. {{cd|<l:rare>}} or {{cd|<l:dated,or,literary>}}; this appears *BEFORE* the term, parenthesized and italicized * {{cd|ll}}: comma-separated list of labels, e.g. {{cd|<ll:rare>}} or {{cd|<ll:dated,or,literary>}}; this appears *AFTER* the term, parenthesized and italicized * {{cd|ref}}: one or more references, in the format documented in [[Module:references]] and {{tl|IPA}} * {{cd|id}}: sense ID; see {{temp|senseid}}; cannot be specified for headwords or genders as it doesn't make sense to do so ==Suffix handling== If the term begins with a hyphen ({{cd|-}}), it is assumed to be a suffix rather than a base form, and is categorized into [[:Category:LANG suffixes]] and [[:Category:LANG POS-forming suffixes]] rather than [[:Category:LANG POSs]] (e.g. [[:Category:LANG noun-forming suffixes]] rather than [[:Category:LANG nouns]]). This can be overridden using {{para|nosuffix|1}}. ]=] after_params_text = after_params_text:gsub("LANG", iargs.lang:getCanonicalName()) text = text .. after_params_text -- Remove final newline so template code can add a newline after invocation text = text:gsub("\n$", "") return mw.getCurrentFrame():preprocess(text) end return export hd3qfcupn46qf91cemp7xaizi2r4qkd 234934 234933 2026-05-26T07:02:37Z Lee 19 [[:en:Module:inc-headword]] වෙතින් එක් සංශෝධනයක් 234933 Scribunto text/plain -- Support for Hindi, Punjabi, Urdu, Palula, Kohistani Shina headword templates; eventually will support other Indic languages, such as -- Marathi, Gujarati, Bengali, Assamese, etc. local export = {} local pos_functions = {} local force_cat = false -- for testing; if true, categories appear in non-mainspace pages local require_when_needed = require("Module:utilities/require when needed") local m_links = require("Module:links") local m_table = require("Module:table") local list_to_set = m_table.listToSet local rsplit = mw.text.split local uupper = mw.ustring.upper local ulower = mw.ustring.lower local unpack = unpack or table.unpack -- Lua 5.2 compatibility local en_utilities_module = "Module:en-utilities" local headword_module = "Module:headword" local headword_utilities_module = "Module:headword utilities" local languages_module = "Module:languages" local parse_interface_module = "Module:parse interface" local scripts_module = "Module:scripts" local ur_hi_convert_module = "Module:ur-hi-convert" local pa_Arab_Guru_module = "Module:pa-Arab-Guru" local m_en_utilities = require_when_needed(en_utilities_module) local m_headword_utilities = require_when_needed(headword_utilities_module) local glossary_link = require_when_needed(headword_utilities_module, "glossary_link") local boolean_param = {type = "boolean"} local list_param = {list = true, disallow_holes = true} local gender_param = {type = "genders"} local gender_param_with_default = {type = "genders", default = "?"} local insert = table.insert local concat = table.concat local rfind = mw.ustring.find local rmatch = mw.ustring.match local rsplit = mw.text.split local unpack = unpack or table.unpack -- Lua 5.2 compatibility local misc_pos_with_gender = list_to_set { "numerals", "suffixes", "adjective forms", "noun forms", "proper noun forms", "pronoun forms", "determiner forms", "verb forms", "postposition forms", } local function generate_hindis_from_urdu_heads(headobjs) local hindis = {} for _, headobj in ipairs(headobjs) do local hindiobj = m_table.shallowCopy(headobj) hindiobj.term = require(ur_hi_convert_module).tr(m_links.remove_links(headobj.term)) hindiobj.tr = nil insert(hindis, hindiobj) end return hindis end local function generate_gur_from_shah_heads(headobjs) local gurus = {} for _, headobj in ipairs(headobjs) do local guruobj = m_table.shallowCopy(headobj) guruobj.term = require(pa_Arab_Guru_module).tr(m_links.remove_links(headobj.term)) guruobj.tr = nil insert(gurus, guruobj) end return gurus end local langs_supported = { ["hi"] = { other_langs_scripts = { {"ur", "ur", "ur-Arab", "Urdu"}, }, }, ["pa"] = { other_langs_scripts = { {"gur", "pa", "Guru", "Gurmukhi", generate_gur_from_shah_heads}, {"sha", "pa", "pa-Arab", "Shahmukhi"}, }, sccat = true, }, ["ur"] = { other_langs_scripts = { {"hi", "hi", "Deva", "Hindi", generate_hindis_from_urdu_heads}, }, enable_auto_translit = true, }, ["phl"] = { other_langs_scripts = { {"pa", "phl", "Arab", "Perso-Arabic"}, {"lat", "phl", "Latn", "Latin"}, }, sccat = true, }, ["plk"] = { other_langs_scripts = { {"pa", "plk", "Arab", "Perso-Arabic"}, {"lat", "plk", "Latn", "Latin"}, }, sccat = true, } } ----------------------------------------------- Utilities -------------------------------------------- local function split_on_comma(val) if val:find(",") then return require(parse_interface_module).split_on_comma(val) else return {val} end end local function ine(val) if val == "" then return nil else return val end end local function track(page) require("Module:debug").track("hi-pa-headword/" .. page) return true end local function validate_genders(data, genders) data.genders = genders if not genders then return end for _, gspec in ipairs(genders) do local g = gspec.spec if g == "m" or g == "f" or g == "m-p" or g == "f-p" or g == "mf" or g == "mf-p" or g == "mfbysense" or g == "mfbysense-p" or g == "mfequiv" or g == "mfequiv-p" or g == "?" then else error("Invalid gender: " .. g) end end end -- Parse an inflection. The raw arguments come from `args[field]`, which is parsed for inline modifiers. Multiple -- comma-separated values are allowed. local function parse_inflection(data, args, field, is_head, no_include_tr, is_single_param) local argfield = field if type(argfield) == "table" then argfield = argfield[1] end if is_single_param then local retval if args[argfield] then retval = m_headword_utilities.parse_term_with_modifiers { val = args[argfield], paramname = field, splitchar = ",", is_head = is_head, include_mods = not no_include_tr and {"tr"} or nil, } end return retval or {} else return m_headword_utilities.parse_term_list_with_modifiers { forms = args[argfield], paramname = field, splitchar = ",", is_head = is_head, include_mods = not no_include_tr and {"tr"} or nil, } end end -- Parse and insert an inflection not requiring additional processing into `data.inflections`. The raw arguments come -- from `args[field]`, which is parsed for inline modifiers. Multiple comma-separated values are allowed. `label` is the -- label that the inflections are given; sections enclosed in <<...>> are linked to the glossary. `accel_form` is the -- accelerator form, or nil. `enable_auto_translit` is set if requested by the language. local function parse_and_insert_inflection(data, args, field, label, accel_form) local terms = parse_inflection(data, args, field) local accel_obj if accel_form then local lemmas = {} local lemma_translits = {} for i, headobj in ipairs(data.heads) do lemmas[i] = headobj.term lemma_translits[i] = headobj.tr end accel_obj = { lemma = lemmas, lemma_translit = lemma_translits, form = accel_form, } end m_headword_utilities.insert_inflection { headdata = data, terms = terms, label = label, accel = accel_obj, enable_auto_translit = data.langprops.enable_auto_translit, } end --[==[ Main entry point. Takes two params: ; {{para|lang|req=1}} : The language code of the language of the headword template. ; {{para|1}} : The part of speech, pluralized; omit for {{tl|hi-head}}, {{tl|pa-head}} and {{tl|ur-head}}. ]==] function export.show(frame) local iparams = { [1] = true, ["lang"] = {required = true}, } local iargs = require("Module:parameters").process(frame.args, iparams) local parargs = frame:getParent().args local poscat = iargs[1] local langcode = iargs.lang if not langs_supported[langcode] then local langcodes_supported = {} for lang, _ in pairs(langs_supported) do insert(langcodes_supported, lang) end error("This module currently only works for lang=" .. concat(langcodes_supported, "/")) end local lang = require(languages_module).getByCode(langcode, true) local langname = lang:getCanonicalName() local pos_in_1 = not poscat if pos_in_1 then poscat = ine(parargs[1]) or mw.title.getCurrentTitle().fullText == "Template:" .. langcode .. "-head" and "interjection" or error("Part of speech must be specified in 1=") poscat = require(headword_module).canonicalize_pos(poscat) end local indexing_poscat = pos_in_1 and (misc_pos_with_gender[poscat] and "head_with_gender" or "head") or poscat local langprops = langs_supported[langcode] local params = { ["head"] = true, ["head2"] = {replaced_by = false, instead = "use comma-separated |head="}, ["tr"] = true, ["tr2"] = {replaced_by = false, instead = "use comma-separated |tr= or <tr:...> inline modifier on head"}, ["id"] = true, ["sort"] = true, ["nolink"] = boolean_param, ["nolinkhead"] = {type = "boolean", alias_of = "nolink"}, ["suffix"] = boolean_param, ["nosuffix"] = boolean_param, ["splithyphen"] = boolean_param, ["json"] = boolean_param, ["pagename"] = true, -- for testing } if pos_in_1 then params[1] = {required = true} -- required but ignored as already processed above end for _, other_lang_script in ipairs(langprops.other_langs_scripts) do local param, _, _, _ = unpack(other_lang_script) params[param] = true params[param .. "1"] = {replaced_by = false, instead = "use comma-separated items (with no space after the comma) in |" .. param .. "="} params[param .. "2"] = {replaced_by = false, instead = "use comma-separated items (with no space after the comma) in |" .. param .. "="} end if pos_functions[indexing_poscat] then for key, val in pairs(pos_functions[indexing_poscat].params) do params[key] = val end end local parargs = frame:getParent().args local args = require("Module:parameters").process(parargs, params) local pagename = args.pagename or mw.loadData("Module:headword/data").pagename local data = { lang = lang, langname = langname, langprops = langprops, pos_category = poscat, categories = {}, genders = {}, inflections = {}, pagename = pagename, id = args.id, sort_key = args.sort, force_cat_output = force_cat, -- We use our own splitting algorithm so the redundant head cat will be inaccurate. no_redundant_head_cat = true, sccat = langprops.sccat, } local trs = args.tr and split_on_comma(args.tr) or {} local num_trs = #trs local heads = args.head and parse_inflection(data, args, "head", "is_head", nil, "is_single_param") or {} local user_specified_heads = heads local num_heads = #heads if num_heads > 0 and num_trs > 0 and num_heads ~= num_trs then error(("%s head%s specified explicitly but %s translit%s; they must match; use '+' to stand for the default head (the pagename) or no manual translit"):format( num_heads, num_heads > 1 and "s" or "", num_trs, num_trs > 1 and "s" or "")) end -- Be careful here not to overwrite user_specified_heads if it's empty so we can later check user_specified_heads -- to see if the user provided any heads. if num_heads == 0 and num_trs > 0 then heads = {} for i = 1, num_trs do heads[i] = {term = "+"} end end if not heads[1] then heads = {{term = "+"}} end for i, headobj in ipairs(heads) do if headobj.term == "+" then headobj.term = args.nolink and pagename or m_headword_utilities.add_links_to_multiword_term(pagename, {split_hyphen_when_space = args.splithyphen}) end if headobj.tr and trs[i] then if headobj.tr ~= trs[i] then error(("Saw two different translits '%s' and '%s' for head #%s '%s'"):format( headobj.tr, trs[i], i, headobj.term)) end else headobj.tr = headobj.tr or trs[i] end if headobj.tr == "+" then headobj.tr = nil end end data.heads = heads data.is_suffix = false if args.suffix or ( not args.nosuffix and pagename:find("^%-") and poscat ~= "suffixes" and poscat ~= "suffix forms" ) then data.is_suffix = true data.pos_category = "suffixes" local singular_poscat = m_en_utilities.singularize(poscat) insert(data.categories, langname .. " " .. singular_poscat .. "-forming suffixes") insert(data.inflections, {label = singular_poscat .. "-forming suffix"}) end if pos_functions[indexing_poscat] then pos_functions[indexing_poscat].func(args, data) end for _, other_lang_script in ipairs(langprops.other_langs_scripts) do local param, other_langcode, other_sccode, lang_script_label, generate_from_heads = unpack(other_lang_script) local terms = parse_inflection(data, args, param, nil, "no_include_tr", "is_single_param") or {} if not terms[1] and generate_from_heads then terms = generate_from_heads(user_specified_heads) end if terms[1] then local other_lang = require(languages_module).getByCode(other_langcode, true) local other_sc = require(scripts_module).getByCode(other_sccode, true) for _, termobj in ipairs(terms) do termobj.lang = other_lang termobj.sc = other_sc end m_headword_utilities.insert_inflection { headdata = data, terms = terms, label = lang_script_label .. " spelling", -- Don't set `enable_auto_translit` here, e.g. for Urdu. } end end if args.json then return require("Module:JSON").toJSON(data) end return require(headword_module).full_headword(data) end pos_functions.adjectives = { params = { [1] = {list = "comp", disallow_holes = true}, [2] = {list = "sup", disallow_holes = true}, ["f"] = list_param, ["ind"] = boolean_param, }, func = function(args, data) if args["ind"] then insert(data.inflections, {label = glossary_link("indeclinable")}) insert(data.categories, data.langname .. " indeclinable adjectives") end parse_and_insert_inflection(data, args, {1, "comp"}, "<<comparative>>") parse_and_insert_inflection(data, args, {2, "sup"}, "<<superlative>>") parse_and_insert_inflection(data, args, "f", "feminine") end, } pos_functions.ordinals = { params = { ["f"] = list_param, ["ind"] = boolean_param, }, func = function(args, data) data.pos_category = "adjectives" insert(data.categories, data.langname .. " numerals") if args["ind"] then insert(data.inflections, {label = glossary_link("indeclinable")}) insert(data.categories, data.langname .. " indeclinable numerals") end parse_and_insert_inflection(data, args, "f", "feminine") end, } pos_functions.cardinals = { params = { [1] = gender_param, ["g"] = {replaced_by = 1}, ["sym"] = list_param, }, func = function(args, data) data.pos_category = "numerals" validate_genders(data, args[1]) parse_and_insert_inflection(data, args, "sym", "native script symbol") end, } local function nouns(plpos) return { params = { [1] = gender_param_with_default, ["g"] = {replaced_by = 1}, ["pl"] = list_param, ["f"] = list_param, ["m"] = list_param, ["ind"] = boolean_param, }, func = function(args, data) validate_genders(data, args[1]) if args["ind"] then if args["pl"][1] then error("Can't specify both ind= and pl=") end insert(data.inflections, {label = glossary_link("indeclinable")}) insert(data.categories, data.langname .. " indeclinable " .. plpos) else parse_and_insert_inflection(data, args, "pl", "formal plural", "formal|p") end parse_and_insert_inflection(data, args, "m", "male equivalent", "m") parse_and_insert_inflection(data, args, "f", "female equivalent", "f") if args["m"][1] or args["f"][1] then insert(data.categories, data.langname .. " " .. plpos .. " with other-gender equivalents") end end, } end pos_functions.nouns = nouns("nouns") pos_functions["proper nouns"] = nouns("proper nouns") pos_functions.pronouns = { params = { [1] = gender_param, ["g"] = {replaced_by = 1}, }, func = function(args, data) validate_genders(data, args[1]) end, } pos_functions.verbs = { params = { [1] = true, }, func = function(args, data) if args[1] then local label, cat if args[1] == "t" then label = "transitive" insert(data.categories, data.langname .. " transitive verbs") elseif args[1] == "i" then label = "intransitive" insert(data.categories, data.langname .. " intransitive verbs") elseif args[1] == "d" then label = "ditransitive" insert(data.categories, data.langname .. " ditransitive verbs") elseif args[1] == "it" or args[1] == "ti" or args[1] == "a" then label = "ambitransitive" insert(data.categories, data.langname .. " ambitransitive verbs") insert(data.categories, data.langname .. " transitive verbs") insert(data.categories, data.langname .. " intransitive verbs") elseif args[1] == "tp" then -- only in Palula label = "transitive" insert(data.categories, data.langname .. " transitive verbs") insert(data.categories, data.langname .. " passive verbs") insert(data.inflections, {label = glossary_link("passive")}) else error("Unrecognized param 1=" .. args[1] .. ": Should be 'i' = intransitive, 't' = transitive, 'd' = ditransitive or 'it'/'ti'/'a' = ambitransitive") end insert(data.inflections, {label = glossary_link(label)}) end if data.pagename:find(" ") then local base_verb = m_links.remove_links(data.pagename):gsub("^.* ", "") insert(data.categories, data.langname .. " compound verbs formed with " .. base_verb) end end, } pos_functions.head_with_gender = { params = { [2] = gender_param, }, func = function(args, data) validate_genders(data, args[2]) end, } local pos_prelude = { ["head"] = "This template should be used to generate the headword line for LANG terms whose part of speech does not have an associated specialized template. The current specialized templates are " .. "{{tl|CODE-noun}}, {{tl|CODE-proper noun}}, {{tl|CODE-pron}} (pronouns), {{tl|CODE-verb}}, {{tl|CODE-adj}} (adjectives), {{tl|CODE-adv}} (adverbs), {{tl|CODE-num-card}} (cardinal numbers/numerals) and ".. "{{tl|CODE-num-ord}} (ordinal numbers/numerals). All others should use {{tl|CODE-head}}.", } local noun_addl_params = [=[ ;{{para|pl}} : Formal or irregular plural(s). Intended particularly for Arabic and Persian-origin plurals. Separate multiple items with a comma (not followed by a space). Per-item inline modifiers are supported. ;{{para|f}} : Female equivalent(s), for a noun referring to a male person or animal. Separate multiple items with a comma (not followed by a space). Per-item inline modifiers are supported. ;{{para|m}} : Male equivalent(s), for a noun referring to a female person or animal. Separate multiple items with a comma (not followed by a space). Per-item inline modifiers are supported. ;{{para|ind|1}} : Specify that the noun is indeclinable. ]=] local pos_addl_params = { ["nouns"] = noun_addl_params, ["proper nouns"] = noun_addl_params, ["verbs"] = [=[ ;{{para|1}} : Verb type. One of {{cd|t}} (transitive), {{cd|i}} (intransitive), {{cd|d}} (ditransitive) or {{cd|it}}/{{cd|ti}}/{{cd|a}} (ambitransitive). ]=], ["adjectives"] = [=[ ;{{para|1}} : Comparative form(s). Separate multiple items with a comma (not followed by a space). Per-item inline modifiers are supported. ;{{para|2}} : Superlative form(s). Separate multiple items with a comma (not followed by a space). Per-item inline modifiers are supported. ;{{para|ind|1}} : Specify that the adjective is indeclinable. ;{{para|f}} : Feminine form(s) of an adjective with irregular feminine forms. ]=], ["cardinals"] = [=[ ;{{para|sym}} : Native script symbol(s) for this numeral. Separate multiple items with a comma (not followed by a space). Per-item inline modifiers are supported. ]=], ["ordinals"] = [=[ ;{{para|ind|1}} : Specify that the ordinal is indeclinable. ;{{para|f}} : Feminine form(s) of an ordinal adjective with irregular feminine forms. ]=], ["head"] = [=[ ;{{para|1|req=1}} : Part of speech. Can be singular or plural and can be abbreviated (e.g. {{cd|n}} for noun; {{cd|nounf}} or {{cd|nf}} for noun form; {{cd|interj}} or {{cd|intj}} for interjection; {{cd|pcl}} for particle; {{cd|phr}} for phrase; etc.). The recognized abbreviations are listed in [[Template:head#Part of speech]] and are the same abbreviations that can be specified in the part-of-speech parameter to {{tl|head}}. ;{{para|2}} : Gender(s). Specifying a gender is always optional and is only allowed for certain parts of speech where it makes sense to specify a gender (currently this includes numerals, suffixes, adjective forms, noun forms, proper noun forms, pronoun forms, determiner forms, verb forms and postposition forms). Possible values are {{cd|m}}, {{cd|f}}, {{cd|m-p}}, {{cd|f-p}}, {{cd|mf}} (can be either masculine or feminine), {{cd|mf-p}} (plural-only, can be either masculine or feminine), {{cd|mfbysense}} (can be either masculine or feminine, depending on the natural gender of the person or animal being referred to), {{cd|mfbysense-p}} (plural-only, can be either masculine or feminine, depending on the natural gender of the person or animal being referred to). Separate multiple items with a comma (not followed by a space). Per-item inline modifiers are supported. ]=], } local pos_has_gender = { ["nouns"] = true, ["proper nouns"] = true, ["pronouns"] = true, ["cardinals"] = true, } --[==[ Documentation generation function, used to populate the documentation describing all parameters of all headword-line templates. Supports the following parameters: ; {{para|lang|req=1}} : The language code of the language of the headword template being documented. ; {{para|pos|req=1}} : The plural part of speech of the headword template being documented. Use {{cd|head}} for {{tl|hi-head}}/{{tl|pa-head}}/{{tl|ur-head}}/etc. ]==] function export.doctext(frame) local iparams = { ["lang"] = {required = true, type = "language"}, ["pos"] = {required = true}, } local iargs = require("Module:parameters").process(frame.args, iparams) local langcode = iargs.lang:getCode() if not langs_supported[langcode] then local langcodes_supported = {} for lang, _ in pairs(langs_supported) do insert(langcodes_supported, lang) end error("This module currently only works for lang=" .. concat(langcodes_supported, "/")) end local other_lang_script_equivs = langcode == "hi" and [=[ ;{{para|ur}} : Urdu equivalent(s). Separate multiple items with a comma (not followed by a space). Per-item inline modifiers are supported. ]=] or langcode == "ur" and [=[ ;{{para|hi}} : Hindi equivalent(s). Separate multiple items with a comma (not followed by a space). Per-item inline modifiers are supported. ]=] or langcode == "pa" and [=[ ;{{para|gur}} : Gurmukhi equivalent(s) of a Shahmukhi term. Separate multiple items with a comma (not followed by a space). Per-item inline modifiers are supported. ;{{para|sha}} : Shahmukhi equivalent(s) of a Gurmukhi term. Separate multiple items with a comma (not followed by a space). Per-item inline modifiers are supported. ]=] or (langcode == "phl" or langcode == "plk") and [=[ ;{{para|pa}} : Perso-Arabic spelling(s) of the term. Separate multiple items with a comma (not followed by a space). Per-item inline modifiers are supported. ;{{para|lat}} : Latin spelling(s) of the term. Separate multiple items with a comma (not followed by a space). Per-item inline modifiers are supported. ]=] or "" local prelude = (pos_prelude[iargs.pos] or "This template should be used to generate the headword line for LANG POS.") :gsub("LANG", iargs.lang:getCanonicalName()) :gsub("CODE", iargs.lang:getCode()) :gsub("POS", iargs.pos) local g_text = [=[ ;{{para|1}} : Gender(s). Possible values are {{cd|m}}, {{cd|f}}, {{cd|m-p}}, {{cd|f-p}}, {{cd|mf}} (can be either masculine or feminine), {{cd|mf-p}} (plural-only, can be either masculine or feminine), {{cd|mfbysense}} (can be either masculine or feminine, depending on the natural gender of the person or animal being referred to), {{cd|mfbysense-p}} (plural-only, can be either masculine or feminine, depending on the natural gender of the person or animal being referred to). Separate multiple items with a comma (not followed by a space). Per-item inline modifiers are supported. ]=] local includeg = pos_has_gender[iargs.pos] local addl_params = pos_addl_params[iargs.pos] or "" local text = prelude .. [=[ ==Parameters== The following parameters are supported: ]=] .. (includeg and g_text or "") .. addl_params .. [=[ ;{{para|head}} : Explicitly specified headword(s), for ]=] .. (langcode == "pa" and "adding vowel diacritics to Shahmukhi terms or " or langcode == "ur" and "adding vowel diacritics or " or "") .. "introducing links in multiword expressions. Separate multiple items with a comma (not followed by a space). " .. "Per-item inline modifiers are supported. Use {{cd|+}} to request the default linking algorithm (equivalent to omitting the value if there's only one value). " .. "Note that by default each word of a multiword lemma is linked" .. (langcode == "ur" and "." or ", so you only need to use this " .. (langcode == "pa" and "for Gurmukhi terms " or "") .. "when the default links don't suffice (e.g. the multiword expression consists of non-lemma forms, which need to be linked to their lemmas).") .. "\n" .. [=[ ;{{para|tr}} : Manual transliteration(s), in case the automatic transliteration is incorrect. Separate multiple items with a comma (not followed by a space), ]=] .. [=[and use {{cd|+}} to stand for the default automatic translation (equivalent to omitting the value if there's only one value). ]=] .. [=[If {{para|head}} is used, there should be the same number of transliterations as head values, or an error will occur. ]=] .. other_lang_script_equivs .. [=[ ;{{para|nolink|1}}, {{para|nolinkhead|1}} : Don't link the individual words in a multiword expression. ;{{para|suffix|1}} : Specify that the term is a suffix. Not needed if the term begins with a hyphen. ;{{para|nosuffix|1}} : Specify that a term beginning with a hyphen is not a suffix. ;{{para|id}} : Sense ID, for linking to this particular headword when there is more than one. See {{tl|senseid}} for more information. ; {{para|splithyph|1}} : Indicate that automatic splitting and linking of words should split on hyphens in multiword expressions with spaces in them. Normally splitting on hyphens only occurs in terms without spaces. ; {{para|pagename}} : Override the page name used to compute default values of various sorts. Useful when testing, for documentation pages, etc. ; {{para|sort}} : Sort key. Rarely needs to be specified, as it is normally automatically generated. ; {{para|json|1}} : Output the headword data in JSON form instead of the normal output. For use by bots. ]=] local after_params_text =[=[ ==Inline modifiers== All params above that allow for multiple comma-separated values (except for {{para|tr}}) support ''inline modifiers'', e.g. {{para|pl|रायज़,फ़राइज़<l:rare>}} to attach a label ''rare'' to the second plural. The following modifiers are recognized: * {{cd|tr}}: manual translit; cannot be specified for genders as it doesn't make sense to do so * {{cd|q}}: qualifier, e.g. {{cd|<q:in the plural>}} or {{cd|<q:when referring to a card game>}}; this appears *BEFORE* the term, parenthesized and italicized * {{cd|qq}}: qualifier, e.g. {{cd|<qq:in the plural>}} or {{cd|<qq:when referring to a card game>}}; this appears *AFTER* the term, parenthesized and italicized * {{cd|l}}: comma-separated list of labels, e.g. {{cd|<l:rare>}} or {{cd|<l:dated,or,literary>}}; this appears *BEFORE* the term, parenthesized and italicized * {{cd|ll}}: comma-separated list of labels, e.g. {{cd|<ll:rare>}} or {{cd|<ll:dated,or,literary>}}; this appears *AFTER* the term, parenthesized and italicized * {{cd|ref}}: one or more references, in the format documented in [[Module:references]] and {{tl|IPA}} * {{cd|id}}: sense ID; see {{temp|senseid}}; cannot be specified for headwords or genders as it doesn't make sense to do so ==Suffix handling== If the term begins with a hyphen ({{cd|-}}), it is assumed to be a suffix rather than a base form, and is categorized into [[:Category:LANG suffixes]] and [[:Category:LANG POS-forming suffixes]] rather than [[:Category:LANG POSs]] (e.g. [[:Category:LANG noun-forming suffixes]] rather than [[:Category:LANG nouns]]). This can be overridden using {{para|nosuffix|1}}. ]=] after_params_text = after_params_text:gsub("LANG", iargs.lang:getCanonicalName()) text = text .. after_params_text -- Remove final newline so template code can add a newline after invocation text = text:gsub("\n$", "") return mw.getCurrentFrame():preprocess(text) end return export hd3qfcupn46qf91cemp7xaizi2r4qkd 234935 234934 2026-05-26T07:04:41Z Lee 19 "Template" සිට "සැකිල්ල" වෙතට 234935 Scribunto text/plain -- Support for Hindi, Punjabi, Urdu, Palula, Kohistani Shina headword templates; eventually will support other Indic languages, such as -- Marathi, Gujarati, Bengali, Assamese, etc. local export = {} local pos_functions = {} local force_cat = false -- for testing; if true, categories appear in non-mainspace pages local require_when_needed = require("Module:utilities/require when needed") local m_links = require("Module:links") local m_table = require("Module:table") local list_to_set = m_table.listToSet local rsplit = mw.text.split local uupper = mw.ustring.upper local ulower = mw.ustring.lower local unpack = unpack or table.unpack -- Lua 5.2 compatibility local en_utilities_module = "Module:en-utilities" local headword_module = "Module:headword" local headword_utilities_module = "Module:headword utilities" local languages_module = "Module:languages" local parse_interface_module = "Module:parse interface" local scripts_module = "Module:scripts" local ur_hi_convert_module = "Module:ur-hi-convert" local pa_Arab_Guru_module = "Module:pa-Arab-Guru" local m_en_utilities = require_when_needed(en_utilities_module) local m_headword_utilities = require_when_needed(headword_utilities_module) local glossary_link = require_when_needed(headword_utilities_module, "glossary_link") local boolean_param = {type = "boolean"} local list_param = {list = true, disallow_holes = true} local gender_param = {type = "genders"} local gender_param_with_default = {type = "genders", default = "?"} local insert = table.insert local concat = table.concat local rfind = mw.ustring.find local rmatch = mw.ustring.match local rsplit = mw.text.split local unpack = unpack or table.unpack -- Lua 5.2 compatibility local misc_pos_with_gender = list_to_set { "numerals", "suffixes", "adjective forms", "noun forms", "proper noun forms", "pronoun forms", "determiner forms", "verb forms", "postposition forms", } local function generate_hindis_from_urdu_heads(headobjs) local hindis = {} for _, headobj in ipairs(headobjs) do local hindiobj = m_table.shallowCopy(headobj) hindiobj.term = require(ur_hi_convert_module).tr(m_links.remove_links(headobj.term)) hindiobj.tr = nil insert(hindis, hindiobj) end return hindis end local function generate_gur_from_shah_heads(headobjs) local gurus = {} for _, headobj in ipairs(headobjs) do local guruobj = m_table.shallowCopy(headobj) guruobj.term = require(pa_Arab_Guru_module).tr(m_links.remove_links(headobj.term)) guruobj.tr = nil insert(gurus, guruobj) end return gurus end local langs_supported = { ["hi"] = { other_langs_scripts = { {"ur", "ur", "ur-Arab", "Urdu"}, }, }, ["pa"] = { other_langs_scripts = { {"gur", "pa", "Guru", "Gurmukhi", generate_gur_from_shah_heads}, {"sha", "pa", "pa-Arab", "Shahmukhi"}, }, sccat = true, }, ["ur"] = { other_langs_scripts = { {"hi", "hi", "Deva", "Hindi", generate_hindis_from_urdu_heads}, }, enable_auto_translit = true, }, ["phl"] = { other_langs_scripts = { {"pa", "phl", "Arab", "Perso-Arabic"}, {"lat", "phl", "Latn", "Latin"}, }, sccat = true, }, ["plk"] = { other_langs_scripts = { {"pa", "plk", "Arab", "Perso-Arabic"}, {"lat", "plk", "Latn", "Latin"}, }, sccat = true, } } ----------------------------------------------- Utilities -------------------------------------------- local function split_on_comma(val) if val:find(",") then return require(parse_interface_module).split_on_comma(val) else return {val} end end local function ine(val) if val == "" then return nil else return val end end local function track(page) require("Module:debug").track("hi-pa-headword/" .. page) return true end local function validate_genders(data, genders) data.genders = genders if not genders then return end for _, gspec in ipairs(genders) do local g = gspec.spec if g == "m" or g == "f" or g == "m-p" or g == "f-p" or g == "mf" or g == "mf-p" or g == "mfbysense" or g == "mfbysense-p" or g == "mfequiv" or g == "mfequiv-p" or g == "?" then else error("Invalid gender: " .. g) end end end -- Parse an inflection. The raw arguments come from `args[field]`, which is parsed for inline modifiers. Multiple -- comma-separated values are allowed. local function parse_inflection(data, args, field, is_head, no_include_tr, is_single_param) local argfield = field if type(argfield) == "table" then argfield = argfield[1] end if is_single_param then local retval if args[argfield] then retval = m_headword_utilities.parse_term_with_modifiers { val = args[argfield], paramname = field, splitchar = ",", is_head = is_head, include_mods = not no_include_tr and {"tr"} or nil, } end return retval or {} else return m_headword_utilities.parse_term_list_with_modifiers { forms = args[argfield], paramname = field, splitchar = ",", is_head = is_head, include_mods = not no_include_tr and {"tr"} or nil, } end end -- Parse and insert an inflection not requiring additional processing into `data.inflections`. The raw arguments come -- from `args[field]`, which is parsed for inline modifiers. Multiple comma-separated values are allowed. `label` is the -- label that the inflections are given; sections enclosed in <<...>> are linked to the glossary. `accel_form` is the -- accelerator form, or nil. `enable_auto_translit` is set if requested by the language. local function parse_and_insert_inflection(data, args, field, label, accel_form) local terms = parse_inflection(data, args, field) local accel_obj if accel_form then local lemmas = {} local lemma_translits = {} for i, headobj in ipairs(data.heads) do lemmas[i] = headobj.term lemma_translits[i] = headobj.tr end accel_obj = { lemma = lemmas, lemma_translit = lemma_translits, form = accel_form, } end m_headword_utilities.insert_inflection { headdata = data, terms = terms, label = label, accel = accel_obj, enable_auto_translit = data.langprops.enable_auto_translit, } end --[==[ Main entry point. Takes two params: ; {{para|lang|req=1}} : The language code of the language of the headword template. ; {{para|1}} : The part of speech, pluralized; omit for {{tl|hi-head}}, {{tl|pa-head}} and {{tl|ur-head}}. ]==] function export.show(frame) local iparams = { [1] = true, ["lang"] = {required = true}, } local iargs = require("Module:parameters").process(frame.args, iparams) local parargs = frame:getParent().args local poscat = iargs[1] local langcode = iargs.lang if not langs_supported[langcode] then local langcodes_supported = {} for lang, _ in pairs(langs_supported) do insert(langcodes_supported, lang) end error("This module currently only works for lang=" .. concat(langcodes_supported, "/")) end local lang = require(languages_module).getByCode(langcode, true) local langname = lang:getCanonicalName() local pos_in_1 = not poscat if pos_in_1 then poscat = ine(parargs[1]) or mw.title.getCurrentTitle().fullText == "සැකිල්ල:" .. langcode .. "-head" and "interjection" or error("Part of speech must be specified in 1=") poscat = require(headword_module).canonicalize_pos(poscat) end local indexing_poscat = pos_in_1 and (misc_pos_with_gender[poscat] and "head_with_gender" or "head") or poscat local langprops = langs_supported[langcode] local params = { ["head"] = true, ["head2"] = {replaced_by = false, instead = "use comma-separated |head="}, ["tr"] = true, ["tr2"] = {replaced_by = false, instead = "use comma-separated |tr= or <tr:...> inline modifier on head"}, ["id"] = true, ["sort"] = true, ["nolink"] = boolean_param, ["nolinkhead"] = {type = "boolean", alias_of = "nolink"}, ["suffix"] = boolean_param, ["nosuffix"] = boolean_param, ["splithyphen"] = boolean_param, ["json"] = boolean_param, ["pagename"] = true, -- for testing } if pos_in_1 then params[1] = {required = true} -- required but ignored as already processed above end for _, other_lang_script in ipairs(langprops.other_langs_scripts) do local param, _, _, _ = unpack(other_lang_script) params[param] = true params[param .. "1"] = {replaced_by = false, instead = "use comma-separated items (with no space after the comma) in |" .. param .. "="} params[param .. "2"] = {replaced_by = false, instead = "use comma-separated items (with no space after the comma) in |" .. param .. "="} end if pos_functions[indexing_poscat] then for key, val in pairs(pos_functions[indexing_poscat].params) do params[key] = val end end local parargs = frame:getParent().args local args = require("Module:parameters").process(parargs, params) local pagename = args.pagename or mw.loadData("Module:headword/data").pagename local data = { lang = lang, langname = langname, langprops = langprops, pos_category = poscat, categories = {}, genders = {}, inflections = {}, pagename = pagename, id = args.id, sort_key = args.sort, force_cat_output = force_cat, -- We use our own splitting algorithm so the redundant head cat will be inaccurate. no_redundant_head_cat = true, sccat = langprops.sccat, } local trs = args.tr and split_on_comma(args.tr) or {} local num_trs = #trs local heads = args.head and parse_inflection(data, args, "head", "is_head", nil, "is_single_param") or {} local user_specified_heads = heads local num_heads = #heads if num_heads > 0 and num_trs > 0 and num_heads ~= num_trs then error(("%s head%s specified explicitly but %s translit%s; they must match; use '+' to stand for the default head (the pagename) or no manual translit"):format( num_heads, num_heads > 1 and "s" or "", num_trs, num_trs > 1 and "s" or "")) end -- Be careful here not to overwrite user_specified_heads if it's empty so we can later check user_specified_heads -- to see if the user provided any heads. if num_heads == 0 and num_trs > 0 then heads = {} for i = 1, num_trs do heads[i] = {term = "+"} end end if not heads[1] then heads = {{term = "+"}} end for i, headobj in ipairs(heads) do if headobj.term == "+" then headobj.term = args.nolink and pagename or m_headword_utilities.add_links_to_multiword_term(pagename, {split_hyphen_when_space = args.splithyphen}) end if headobj.tr and trs[i] then if headobj.tr ~= trs[i] then error(("Saw two different translits '%s' and '%s' for head #%s '%s'"):format( headobj.tr, trs[i], i, headobj.term)) end else headobj.tr = headobj.tr or trs[i] end if headobj.tr == "+" then headobj.tr = nil end end data.heads = heads data.is_suffix = false if args.suffix or ( not args.nosuffix and pagename:find("^%-") and poscat ~= "suffixes" and poscat ~= "suffix forms" ) then data.is_suffix = true data.pos_category = "suffixes" local singular_poscat = m_en_utilities.singularize(poscat) insert(data.categories, langname .. " " .. singular_poscat .. "-forming suffixes") insert(data.inflections, {label = singular_poscat .. "-forming suffix"}) end if pos_functions[indexing_poscat] then pos_functions[indexing_poscat].func(args, data) end for _, other_lang_script in ipairs(langprops.other_langs_scripts) do local param, other_langcode, other_sccode, lang_script_label, generate_from_heads = unpack(other_lang_script) local terms = parse_inflection(data, args, param, nil, "no_include_tr", "is_single_param") or {} if not terms[1] and generate_from_heads then terms = generate_from_heads(user_specified_heads) end if terms[1] then local other_lang = require(languages_module).getByCode(other_langcode, true) local other_sc = require(scripts_module).getByCode(other_sccode, true) for _, termobj in ipairs(terms) do termobj.lang = other_lang termobj.sc = other_sc end m_headword_utilities.insert_inflection { headdata = data, terms = terms, label = lang_script_label .. " spelling", -- Don't set `enable_auto_translit` here, e.g. for Urdu. } end end if args.json then return require("Module:JSON").toJSON(data) end return require(headword_module).full_headword(data) end pos_functions.adjectives = { params = { [1] = {list = "comp", disallow_holes = true}, [2] = {list = "sup", disallow_holes = true}, ["f"] = list_param, ["ind"] = boolean_param, }, func = function(args, data) if args["ind"] then insert(data.inflections, {label = glossary_link("indeclinable")}) insert(data.categories, data.langname .. " indeclinable adjectives") end parse_and_insert_inflection(data, args, {1, "comp"}, "<<comparative>>") parse_and_insert_inflection(data, args, {2, "sup"}, "<<superlative>>") parse_and_insert_inflection(data, args, "f", "feminine") end, } pos_functions.ordinals = { params = { ["f"] = list_param, ["ind"] = boolean_param, }, func = function(args, data) data.pos_category = "adjectives" insert(data.categories, data.langname .. " numerals") if args["ind"] then insert(data.inflections, {label = glossary_link("indeclinable")}) insert(data.categories, data.langname .. " indeclinable numerals") end parse_and_insert_inflection(data, args, "f", "feminine") end, } pos_functions.cardinals = { params = { [1] = gender_param, ["g"] = {replaced_by = 1}, ["sym"] = list_param, }, func = function(args, data) data.pos_category = "numerals" validate_genders(data, args[1]) parse_and_insert_inflection(data, args, "sym", "native script symbol") end, } local function nouns(plpos) return { params = { [1] = gender_param_with_default, ["g"] = {replaced_by = 1}, ["pl"] = list_param, ["f"] = list_param, ["m"] = list_param, ["ind"] = boolean_param, }, func = function(args, data) validate_genders(data, args[1]) if args["ind"] then if args["pl"][1] then error("Can't specify both ind= and pl=") end insert(data.inflections, {label = glossary_link("indeclinable")}) insert(data.categories, data.langname .. " indeclinable " .. plpos) else parse_and_insert_inflection(data, args, "pl", "formal plural", "formal|p") end parse_and_insert_inflection(data, args, "m", "male equivalent", "m") parse_and_insert_inflection(data, args, "f", "female equivalent", "f") if args["m"][1] or args["f"][1] then insert(data.categories, data.langname .. " " .. plpos .. " with other-gender equivalents") end end, } end pos_functions.nouns = nouns("nouns") pos_functions["proper nouns"] = nouns("proper nouns") pos_functions.pronouns = { params = { [1] = gender_param, ["g"] = {replaced_by = 1}, }, func = function(args, data) validate_genders(data, args[1]) end, } pos_functions.verbs = { params = { [1] = true, }, func = function(args, data) if args[1] then local label, cat if args[1] == "t" then label = "transitive" insert(data.categories, data.langname .. " transitive verbs") elseif args[1] == "i" then label = "intransitive" insert(data.categories, data.langname .. " intransitive verbs") elseif args[1] == "d" then label = "ditransitive" insert(data.categories, data.langname .. " ditransitive verbs") elseif args[1] == "it" or args[1] == "ti" or args[1] == "a" then label = "ambitransitive" insert(data.categories, data.langname .. " ambitransitive verbs") insert(data.categories, data.langname .. " transitive verbs") insert(data.categories, data.langname .. " intransitive verbs") elseif args[1] == "tp" then -- only in Palula label = "transitive" insert(data.categories, data.langname .. " transitive verbs") insert(data.categories, data.langname .. " passive verbs") insert(data.inflections, {label = glossary_link("passive")}) else error("Unrecognized param 1=" .. args[1] .. ": Should be 'i' = intransitive, 't' = transitive, 'd' = ditransitive or 'it'/'ti'/'a' = ambitransitive") end insert(data.inflections, {label = glossary_link(label)}) end if data.pagename:find(" ") then local base_verb = m_links.remove_links(data.pagename):gsub("^.* ", "") insert(data.categories, data.langname .. " compound verbs formed with " .. base_verb) end end, } pos_functions.head_with_gender = { params = { [2] = gender_param, }, func = function(args, data) validate_genders(data, args[2]) end, } local pos_prelude = { ["head"] = "This template should be used to generate the headword line for LANG terms whose part of speech does not have an associated specialized template. The current specialized templates are " .. "{{tl|CODE-noun}}, {{tl|CODE-proper noun}}, {{tl|CODE-pron}} (pronouns), {{tl|CODE-verb}}, {{tl|CODE-adj}} (adjectives), {{tl|CODE-adv}} (adverbs), {{tl|CODE-num-card}} (cardinal numbers/numerals) and ".. "{{tl|CODE-num-ord}} (ordinal numbers/numerals). All others should use {{tl|CODE-head}}.", } local noun_addl_params = [=[ ;{{para|pl}} : Formal or irregular plural(s). Intended particularly for Arabic and Persian-origin plurals. Separate multiple items with a comma (not followed by a space). Per-item inline modifiers are supported. ;{{para|f}} : Female equivalent(s), for a noun referring to a male person or animal. Separate multiple items with a comma (not followed by a space). Per-item inline modifiers are supported. ;{{para|m}} : Male equivalent(s), for a noun referring to a female person or animal. Separate multiple items with a comma (not followed by a space). Per-item inline modifiers are supported. ;{{para|ind|1}} : Specify that the noun is indeclinable. ]=] local pos_addl_params = { ["nouns"] = noun_addl_params, ["proper nouns"] = noun_addl_params, ["verbs"] = [=[ ;{{para|1}} : Verb type. One of {{cd|t}} (transitive), {{cd|i}} (intransitive), {{cd|d}} (ditransitive) or {{cd|it}}/{{cd|ti}}/{{cd|a}} (ambitransitive). ]=], ["adjectives"] = [=[ ;{{para|1}} : Comparative form(s). Separate multiple items with a comma (not followed by a space). Per-item inline modifiers are supported. ;{{para|2}} : Superlative form(s). Separate multiple items with a comma (not followed by a space). Per-item inline modifiers are supported. ;{{para|ind|1}} : Specify that the adjective is indeclinable. ;{{para|f}} : Feminine form(s) of an adjective with irregular feminine forms. ]=], ["cardinals"] = [=[ ;{{para|sym}} : Native script symbol(s) for this numeral. Separate multiple items with a comma (not followed by a space). Per-item inline modifiers are supported. ]=], ["ordinals"] = [=[ ;{{para|ind|1}} : Specify that the ordinal is indeclinable. ;{{para|f}} : Feminine form(s) of an ordinal adjective with irregular feminine forms. ]=], ["head"] = [=[ ;{{para|1|req=1}} : Part of speech. Can be singular or plural and can be abbreviated (e.g. {{cd|n}} for noun; {{cd|nounf}} or {{cd|nf}} for noun form; {{cd|interj}} or {{cd|intj}} for interjection; {{cd|pcl}} for particle; {{cd|phr}} for phrase; etc.). The recognized abbreviations are listed in [[Template:head#Part of speech]] and are the same abbreviations that can be specified in the part-of-speech parameter to {{tl|head}}. ;{{para|2}} : Gender(s). Specifying a gender is always optional and is only allowed for certain parts of speech where it makes sense to specify a gender (currently this includes numerals, suffixes, adjective forms, noun forms, proper noun forms, pronoun forms, determiner forms, verb forms and postposition forms). Possible values are {{cd|m}}, {{cd|f}}, {{cd|m-p}}, {{cd|f-p}}, {{cd|mf}} (can be either masculine or feminine), {{cd|mf-p}} (plural-only, can be either masculine or feminine), {{cd|mfbysense}} (can be either masculine or feminine, depending on the natural gender of the person or animal being referred to), {{cd|mfbysense-p}} (plural-only, can be either masculine or feminine, depending on the natural gender of the person or animal being referred to). Separate multiple items with a comma (not followed by a space). Per-item inline modifiers are supported. ]=], } local pos_has_gender = { ["nouns"] = true, ["proper nouns"] = true, ["pronouns"] = true, ["cardinals"] = true, } --[==[ Documentation generation function, used to populate the documentation describing all parameters of all headword-line templates. Supports the following parameters: ; {{para|lang|req=1}} : The language code of the language of the headword template being documented. ; {{para|pos|req=1}} : The plural part of speech of the headword template being documented. Use {{cd|head}} for {{tl|hi-head}}/{{tl|pa-head}}/{{tl|ur-head}}/etc. ]==] function export.doctext(frame) local iparams = { ["lang"] = {required = true, type = "language"}, ["pos"] = {required = true}, } local iargs = require("Module:parameters").process(frame.args, iparams) local langcode = iargs.lang:getCode() if not langs_supported[langcode] then local langcodes_supported = {} for lang, _ in pairs(langs_supported) do insert(langcodes_supported, lang) end error("This module currently only works for lang=" .. concat(langcodes_supported, "/")) end local other_lang_script_equivs = langcode == "hi" and [=[ ;{{para|ur}} : Urdu equivalent(s). Separate multiple items with a comma (not followed by a space). Per-item inline modifiers are supported. ]=] or langcode == "ur" and [=[ ;{{para|hi}} : Hindi equivalent(s). Separate multiple items with a comma (not followed by a space). Per-item inline modifiers are supported. ]=] or langcode == "pa" and [=[ ;{{para|gur}} : Gurmukhi equivalent(s) of a Shahmukhi term. Separate multiple items with a comma (not followed by a space). Per-item inline modifiers are supported. ;{{para|sha}} : Shahmukhi equivalent(s) of a Gurmukhi term. Separate multiple items with a comma (not followed by a space). Per-item inline modifiers are supported. ]=] or (langcode == "phl" or langcode == "plk") and [=[ ;{{para|pa}} : Perso-Arabic spelling(s) of the term. Separate multiple items with a comma (not followed by a space). Per-item inline modifiers are supported. ;{{para|lat}} : Latin spelling(s) of the term. Separate multiple items with a comma (not followed by a space). Per-item inline modifiers are supported. ]=] or "" local prelude = (pos_prelude[iargs.pos] or "This template should be used to generate the headword line for LANG POS.") :gsub("LANG", iargs.lang:getCanonicalName()) :gsub("CODE", iargs.lang:getCode()) :gsub("POS", iargs.pos) local g_text = [=[ ;{{para|1}} : Gender(s). Possible values are {{cd|m}}, {{cd|f}}, {{cd|m-p}}, {{cd|f-p}}, {{cd|mf}} (can be either masculine or feminine), {{cd|mf-p}} (plural-only, can be either masculine or feminine), {{cd|mfbysense}} (can be either masculine or feminine, depending on the natural gender of the person or animal being referred to), {{cd|mfbysense-p}} (plural-only, can be either masculine or feminine, depending on the natural gender of the person or animal being referred to). Separate multiple items with a comma (not followed by a space). Per-item inline modifiers are supported. ]=] local includeg = pos_has_gender[iargs.pos] local addl_params = pos_addl_params[iargs.pos] or "" local text = prelude .. [=[ ==Parameters== The following parameters are supported: ]=] .. (includeg and g_text or "") .. addl_params .. [=[ ;{{para|head}} : Explicitly specified headword(s), for ]=] .. (langcode == "pa" and "adding vowel diacritics to Shahmukhi terms or " or langcode == "ur" and "adding vowel diacritics or " or "") .. "introducing links in multiword expressions. Separate multiple items with a comma (not followed by a space). " .. "Per-item inline modifiers are supported. Use {{cd|+}} to request the default linking algorithm (equivalent to omitting the value if there's only one value). " .. "Note that by default each word of a multiword lemma is linked" .. (langcode == "ur" and "." or ", so you only need to use this " .. (langcode == "pa" and "for Gurmukhi terms " or "") .. "when the default links don't suffice (e.g. the multiword expression consists of non-lemma forms, which need to be linked to their lemmas).") .. "\n" .. [=[ ;{{para|tr}} : Manual transliteration(s), in case the automatic transliteration is incorrect. Separate multiple items with a comma (not followed by a space), ]=] .. [=[and use {{cd|+}} to stand for the default automatic translation (equivalent to omitting the value if there's only one value). ]=] .. [=[If {{para|head}} is used, there should be the same number of transliterations as head values, or an error will occur. ]=] .. other_lang_script_equivs .. [=[ ;{{para|nolink|1}}, {{para|nolinkhead|1}} : Don't link the individual words in a multiword expression. ;{{para|suffix|1}} : Specify that the term is a suffix. Not needed if the term begins with a hyphen. ;{{para|nosuffix|1}} : Specify that a term beginning with a hyphen is not a suffix. ;{{para|id}} : Sense ID, for linking to this particular headword when there is more than one. See {{tl|senseid}} for more information. ; {{para|splithyph|1}} : Indicate that automatic splitting and linking of words should split on hyphens in multiword expressions with spaces in them. Normally splitting on hyphens only occurs in terms without spaces. ; {{para|pagename}} : Override the page name used to compute default values of various sorts. Useful when testing, for documentation pages, etc. ; {{para|sort}} : Sort key. Rarely needs to be specified, as it is normally automatically generated. ; {{para|json|1}} : Output the headword data in JSON form instead of the normal output. For use by bots. ]=] local after_params_text =[=[ ==Inline modifiers== All params above that allow for multiple comma-separated values (except for {{para|tr}}) support ''inline modifiers'', e.g. {{para|pl|रायज़,फ़राइज़<l:rare>}} to attach a label ''rare'' to the second plural. The following modifiers are recognized: * {{cd|tr}}: manual translit; cannot be specified for genders as it doesn't make sense to do so * {{cd|q}}: qualifier, e.g. {{cd|<q:in the plural>}} or {{cd|<q:when referring to a card game>}}; this appears *BEFORE* the term, parenthesized and italicized * {{cd|qq}}: qualifier, e.g. {{cd|<qq:in the plural>}} or {{cd|<qq:when referring to a card game>}}; this appears *AFTER* the term, parenthesized and italicized * {{cd|l}}: comma-separated list of labels, e.g. {{cd|<l:rare>}} or {{cd|<l:dated,or,literary>}}; this appears *BEFORE* the term, parenthesized and italicized * {{cd|ll}}: comma-separated list of labels, e.g. {{cd|<ll:rare>}} or {{cd|<ll:dated,or,literary>}}; this appears *AFTER* the term, parenthesized and italicized * {{cd|ref}}: one or more references, in the format documented in [[Module:references]] and {{tl|IPA}} * {{cd|id}}: sense ID; see {{temp|senseid}}; cannot be specified for headwords or genders as it doesn't make sense to do so ==Suffix handling== If the term begins with a hyphen ({{cd|-}}), it is assumed to be a suffix rather than a base form, and is categorized into [[:Category:LANG suffixes]] and [[:Category:LANG POS-forming suffixes]] rather than [[:Category:LANG POSs]] (e.g. [[:Category:LANG noun-forming suffixes]] rather than [[:Category:LANG nouns]]). This can be overridden using {{para|nosuffix|1}}. ]=] after_params_text = after_params_text:gsub("LANG", iargs.lang:getCanonicalName()) text = text .. after_params_text -- Remove final newline so template code can add a newline after invocation text = text:gsub("\n$", "") return mw.getCurrentFrame():preprocess(text) end return export i7oy9h8bx3ud10dgbsnyv5lhcqyw0n7 සැකිල්ල:hi-head 10 141896 234931 231031 2026-04-15T09:11:26Z en>Surjection 0 Changed protection settings for "[[Template:hi-head]]": Highly visible template/module ([Edit=Allow only autopatrollers] (indefinite) [Move=Allow only autopatrollers] (indefinite)) 231030 wikitext text/x-wiki {{#invoke:inc-headword|show|lang=hi}}<!-- --><noinclude>{{documentation}}</noinclude> 2o8xdx74yebj2l8bfz9dt0b3vi8bhu4 234932 234931 2026-05-26T07:00:34Z Lee 19 [[:en:Template:hi-head]] වෙතින් එක් සංශෝධනයක් 231030 wikitext text/x-wiki {{#invoke:inc-headword|show|lang=hi}}<!-- --><noinclude>{{documentation}}</noinclude> 2o8xdx74yebj2l8bfz9dt0b3vi8bhu4 cardinality 0 142563 234915 232541 2026-05-25T13:39:26Z Lee 19 /* නාම පදය */ 234915 wikitext text/x-wiki == ඉංග්‍රීසි == {{wp}} === නිරුක්තිය === From {{suffix|en|cardinal|ity}}. === උච්චාරණය === * {{IPA|en|/kɑːdɪˈnælɪti/|a=RP}} * {{IPA|en|/kɑɹdɪˈnælɪti/|a=GA}} * {{audio|en|LL-Q1860 (eng)-Wodencafe-cardinality.wav|a=US}} === නාම පදය === {{en-noun|~}} # {{lb|en|set theory|of a set}} The number of [[element]]s a given set contains. #: {{syn|en|power}} #: {{ux|en|The empty set has a '''cardinality''' of zero.}} #* {{quote-web|en|author=Johan de Jong|title=Set Theory|work=The Stacks Project|url=https://stacks.math.columbia.edu/download/sets.pdf|archiveurl=|archivedate=|location=|publisher=|year=2005|access-date=2018-2-26|passage=The ''cardinality'' of a set ''A'' is the least ordinal ''α'' such that there exists a bijection between ''A'' and ''α''. We sometimes use the notation <math>\alpha = |A|</math> to indicate this.}} #* {{quote-book|en|year=2006|author=Michael Smithson; Jay Verkuilen|title=Fuzzy Set Theory: Applications in the Social Sciences|publisher=w:SAGE Publications|pageurl=https://books.google.com.au/books?id=CZ_GVh2ApjIC&pg=PA37&dq=%22cardinality%22%7C%22cardinalities%22&hl=en&sa=X&ved=0ahUKEwjcj5ywv_DaAhWCg5AKHcJHCdYQ6AEIUjAJ#v=onepage&q=%22cardinality%22%7C%22cardinalities%22&f=false|page=37 |passage=For fuzzy sets, the concept of set size or '''cardinality''' is both richer and more problematic than it is for crisp sets. It is richer because, as we shall see, we may use more than one kind of '''cardinality'''.}} #* {{quote-book|en|year=2012|author=Adolf Grünbaum; Robert S. Cohen; Marx W. Wartofsky|title=Philosophical Problems of Space and Time|edition=2nd|pageurl=https://books.google.com.au/books?id=m3ugBwAAQBAJ&pg=PA487&dq=%22cardinality%22%7C%22cardinalities%22&hl=en&sa=X&ved=0ahUKEwjcj5ywv_DaAhWCg5AKHcJHCdYQ6AEIjQEwEw#v=onepage&q=%22cardinality%22%7C%22cardinalities%22&f=false|page=487|publisher=Springer |passage=Clearly, in this example, the sensitivity to the '''cardinalities''' takes the weaker form <math>F[M(A)] = \overset{=}{A}</math> of a single-valued function from the measure to the '''cardinality''' rather than the stronger form <math>M(A) = f(\overset{=}{A})</math> of a function from the '''cardinality''' to the measure.}} # {{lb|en|[[type theory]]}} The number of [[term]]s that can [[inhabit]] a [[type]]; the possible values of a type. #* {{quote-book|en|title=Programming in Scala|chapter=19|isbn=978-0997148008|edition=5th|year=2021|author=w:Martin Odersky; et al.|publisher=Artima|passage=For many types, such as <code>String</code>, the set of possible values is unlimited. Such types have an infinite '''cardinality'''.}} # {{lb|en|data modeling|databases}} The property of a relationship between a [[database]] [[table]] and another one, specifying whether it is one-to-one, one-to-many, many-to-one, or many-to-many. # {{lb|en|religion}} The status of being [[cardinalitial]] ==== භාවිත සටහන් ==== {{sense|set theory}} The cardinality of an infinite set is an infinite [[cardinal number]]. The smallest such number, called {{m|en|aleph-null}} and denoted {{m|mul|ℵ₀}}, describes the [[natural numbers]]; the next is {{m|en|aleph-one}}. The cardinality of the [[real numbers]] is greater than aleph-null, though whether it is equal to aleph-one is the subject of the [[continuum hypothesis]]. ==== ආශ්‍රිත යෙදුම් ==== * {{l|en|cardinal}} ==== පරිවර්තන ==== {{trans-top|(set theory) number of elements a given set contains}} * Armenian: {{t+|hy|հզորություն}} * Bulgarian: {{t|bg|кардиналност|f}} * Chinese: *: Mandarin: {{t+|cmn|勢}} * Czech: {{t+|cs|mohutnost|f}}, {{t|cs|kardinalita|f}} * Danish: {{t|da|mægtighed|c}}, {{t|da|kardinalitet|c}} * Dutch: {{t+|nl|kardinaliteit|f}} * Estonian: {{t|et|võimsus}} * Finnish: {{t+|fi|mahtavuus}} * French: {{t+|fr|cardinalité|f}} * German: {{t|de|Mächtigkeit|f}}, {{t+|de|Kardinalität|f}} * Greek: {{t+|el|πληθάριθμος|m}} * Hebrew: {{t+|he|עָצְמָה|f}} * Hindi: {{t|hi|प्रमुखता|?}} * Hungarian: {{t+|hu|számosság}} * Icelandic: {{t|is|fjöldatala|f}} * Irish: {{t|ga|bunuimhreacht|f}} * Italian: {{t|it|cardinalità|f}}, {{t|it|numerosità|f}}, {{t+|it|potenza|f}} * Japanese: {{t+|ja|濃度|tr=のうど, nōdo}} * Kazakh: {{t|kk|жиын қуаты}} * Korean: {{t|ko|집합의 크기}}, {{t|ko|농도(濃度)}} * Macedonian: {{t|mk|моќност|f}} * Norwegian: *: Bokmål: {{t|nb|kardinalitet|m}} * Polish: {{t+|pl|liczebność|f}}, {{t+|pl|moc|f}}, {{t+|pl|kardynalność|f}} * Portuguese: {{t+|pt|cardinalidade|f}} * Romanian: {{t|ro|cardinalitate|f}}, {{t|ro|[[mărime]] ([[potențială]])|f}} * Russian: {{t|ru|[[мо́щность]] ([[мно́жества]])|f}} * Slovak: {{t|sk|mohutnosť|f}} * Slovene: {{t|sl|moč množice|?}} * Spanish: {{t|es|cardinalidad|f}} * Swedish: {{t+|sv|kardinalitet|c}} * Tamil: {{t|ta|எண் அளவை}} * Thai: {{t|th|ภาวะเชิงการนับ|tr=p̣hāwa cheing kār nạb}} * Ukrainian: {{t|uk|потужність|f-in}} * Vietnamese: {{t+|vi|lực lượng}}, {{t|vi|lực lượng của một tập hợp}} {{trans-bottom}} {{trans-top|(type theory) number of terms that can inhabit a type}} * Bulgarian: {{t|bg|кардиналност|f}} * Polish: {{t+|pl|liczebność|f}}, {{t+|pl|moc|f}}, {{t+|pl|kardynalność|f}} {{trans-bottom}} {{trans-top|(data modeling) property of a relationship between a database table and another one}} * Bulgarian: {{t|bg|кардиналност|f}} * French: {{t+|fr|cardinalité|f}} * Polish: {{t+|pl|liczebność|f}}, {{t+|pl|moc|f}}, {{t+|pl|kardynalność|f}} {{trans-bottom}} {{trans-top|(religion) status of being cardinalitial}} * Bulgarian: {{t-check|bg|кардиналност|f}} * French: {{t+|fr|cardinalité|f}} * Polish: {{t+|pl|kardynalność|f}} {{trans-bottom}} ==== අමතර අවධානයට ==== * {{l|en|aleph}} * {{l|en|cardinal number}} * {{l|en|multiplicity}} === වැඩිදුර් කියවීම සඳහා === * {{pedia|Aleph number}} * {{pedia|Beth number}} * {{pedia|Cardinality of the continuum}} * {{pedia|Limit cardinal}} {{C|en|Infinity}} h9zt0iglu543bw9715oopsjusvz22kl දමස්කස් කඩු 0 143939 234890 2026-05-25T12:31:11Z Lee 19 '== සිංහල == === නිරුක්තිය === {{rfe|si}} === නාම පදය === {{si-noun}} # {{rfdef|si}} <!-- ==== පරිවර්තන ==== {{trans-top|පරිවර්තන}} * ඉංග්‍රීසි: {{t|en|<<ඉංග්‍රීසි වචනය>>}} {{trans-bottom}} === අමතර අවධානයට === * {{l|si|<<ආශ්‍රිත පවතින වෙනත් ව...' යොදමින් නව පිටුවක් තනන ලදි 234890 wikitext text/x-wiki == සිංහල == === නිරුක්තිය === {{rfe|si}} === නාම පදය === {{si-noun}} # {{rfdef|si}} <!-- ==== පරිවර්තන ==== {{trans-top|පරිවර්තන}} * ඉංග්‍රීසි: {{t|en|<<ඉංග්‍රීසි වචනය>>}} {{trans-bottom}} === අමතර අවධානයට === * {{l|si|<<ආශ්‍රිත පවතින වෙනත් වචන>>}} --> 37g9s13iio6w9i2yw7aw46v28viw7h4 දමස්කස් කඩුව 0 143940 234891 2026-05-25T12:31:47Z Lee 19 '==සිංහල== === නිරුක්තිය === {{rfe|si}} ===නාම පදය=== {{head|si|noun form}} # {{singular of|si|දමස්කස් කඩු}} # {{rfdef|si}}' යොදමින් නව පිටුවක් තනන ලදි 234891 wikitext text/x-wiki ==සිංහල== === නිරුක්තිය === {{rfe|si}} ===නාම පදය=== {{head|si|noun form}} # {{singular of|si|දමස්කස් කඩු}} # {{rfdef|si}} gnpkjn24rb98ikred6p0tzxgu1034ag ප්‍රවර්ගය:ස්පාඤ්ඤ epicene adjectives 14 143941 234899 2026-05-25T13:27:58Z Pinthura 2424 Pinthura විසින් [[ප්‍රවර්ගය:ස්පාඤ්ඤ epicene adjectives]] සිට [[ප්‍රවර්ගය:ස්පාඤ්ඤ උභයලිංගික නාම විශේෂණ පද]] වෙත පිටුව ගෙන යන ලදී: සේවා: නව ප්‍රවර්ග නාමය වෙත ගෙනයාම. 234899 wikitext text/x-wiki #යළියොමුව [[:ප්‍රවර්ගය:ස්පාඤ්ඤ උභයලිංගික නාම විශේෂණ පද]] sw96d1h57kwa9w4oxbx0d5oyf981j63 234901 234899 2026-05-25T13:28:18Z Pinthura 2424 සේවා: යළියොමුව, මෘදු ප්‍රවර්ග යළියොමුවක් බවට හැරවීම. 234901 wikitext text/x-wiki {{category redirect|ස්පාඤ්ඤ උභයලිංගික නාම විශේෂණ පද}} fueksfvx9yqu18b7xofyfnjb880xpgc ප්‍රවර්ගය:Spanish උභයලිංගික නාම විශේෂණ පද 14 143942 234902 2026-05-25T13:28:27Z Pinthura 2424 සේවා: මෘදු ප්‍රවර්ග යළියොමුවක් නිර්මාණය. 234902 wikitext text/x-wiki {{category redirect|ස්පාඤ්ඤ උභයලිංගික නාම විශේෂණ පද}} fueksfvx9yqu18b7xofyfnjb880xpgc ප්‍රවර්ගය:ස්පාඤ්ඤ නාම විශේෂණ පද, වරනැගීම් වර්ගය අනුව 14 143943 234904 2019-03-14T04:35:53Z en>NadandoBot 0 wanted categories 234904 wikitext text/x-wiki {{auto cat}} eomzlm5v4j7ond1phrju7cnue91g5qx 234905 234904 2026-05-25T13:30:46Z Lee 19 [[:en:Category:Spanish_adjectives_by_inflection_type]] වෙතින් එක් සංශෝධනයක් 234904 wikitext text/x-wiki {{auto cat}} eomzlm5v4j7ond1phrju7cnue91g5qx 234908 234905 2026-05-25T13:33:06Z Lee 19 Lee විසින් [[ප්‍රවර්ගය:Spanish adjectives by inflection type]] සිට [[ප්‍රවර්ගය:ස්පාඤ්ඤ නාම විශේෂණ පද, වරනැගීම් වර්ගය අනුව]] වෙත පිටුව ගෙන යන ලදී: ස්පාඤ්ඤ උභයලිංගික නාම විශේෂණ පද 234904 wikitext text/x-wiki {{auto cat}} eomzlm5v4j7ond1phrju7cnue91g5qx ප්‍රවර්ගය:භාෂාව අනුව උභයලිංගික නාම විශේෂණ පද 14 143944 234906 2023-06-22T08:07:08Z en>WingerBot 0 Created page with "{{auto cat}}" 234906 wikitext text/x-wiki {{auto cat}} eomzlm5v4j7ond1phrju7cnue91g5qx 234907 234906 2026-05-25T13:31:10Z Lee 19 [[:en:Category:Epicene_adjectives_by_language]] වෙතින් එක් සංශෝධනයක් 234906 wikitext text/x-wiki {{auto cat}} eomzlm5v4j7ond1phrju7cnue91g5qx 234910 234907 2026-05-25T13:33:31Z Lee 19 Lee විසින් [[ප්‍රවර්ගය:Epicene adjectives by language]] සිට [[ප්‍රවර්ගය:භාෂාව අනුව උභයලිංගික නාම විශේෂණ පද]] වෙත පිටුව ගෙන යන ලදී 234906 wikitext text/x-wiki {{auto cat}} eomzlm5v4j7ond1phrju7cnue91g5qx ප්‍රවර්ගය:Spanish adjectives by inflection type 14 143945 234909 2026-05-25T13:33:07Z Lee 19 Lee විසින් [[ප්‍රවර්ගය:Spanish adjectives by inflection type]] සිට [[ප්‍රවර්ගය:ස්පාඤ්ඤ නාම විශේෂණ පද, වරනැගීම් වර්ගය අනුව]] වෙත පිටුව ගෙන යන ලදී: ස්පාඤ්ඤ උභයලිංගික නාම විශේෂණ පද 234909 wikitext text/x-wiki #යළියොමුව [[:ප්‍රවර්ගය:ස්පාඤ්ඤ නාම විශේෂණ පද, වරනැගීම් වර්ගය අනුව]] epcgjbbpal9uir1w16f64y9dm6xf4xk 234913 234909 2026-05-25T13:33:55Z Pinthura 2424 රොබෝ: යළියොමුව, මෘදු ප්‍රවර්ග යළියොමුවක් බවට හැරවීම 234913 wikitext text/x-wiki {{category redirect|ස්පාඤ්ඤ නාම විශේෂණ පද, වරනැගීම් වර්ගය අනුව}} 9sciale4n5406tuiy631i7iswnbbj1s ප්‍රවර්ගය:Epicene adjectives by language 14 143946 234911 2026-05-25T13:33:32Z Lee 19 Lee විසින් [[ප්‍රවර්ගය:Epicene adjectives by language]] සිට [[ප්‍රවර්ගය:භාෂාව අනුව උභයලිංගික නාම විශේෂණ පද]] වෙත පිටුව ගෙන යන ලදී 234911 wikitext text/x-wiki #යළියොමුව [[:ප්‍රවර්ගය:භාෂාව අනුව උභයලිංගික නාම විශේෂණ පද]] j3eswd7oo063j3grpx6i6laigpyd87i 234912 234911 2026-05-25T13:33:45Z Pinthura 2424 රොබෝ: යළියොමුව, මෘදු ප්‍රවර්ග යළියොමුවක් බවට හැරවීම 234912 wikitext text/x-wiki {{category redirect|භාෂාව අනුව උභයලිංගික නාම විශේෂණ පද}} du5ihsw38crg5cj02smqaer1cdv0u1u Module:ksw-translit 828 143947 234917 2024-04-27T09:25:24Z en>SurjectionBot 0 Protected "[[Module:ksw-translit]]": (bot) automatically protect highly visible templates/modules (reference score: 1927+ >= 1000) ([Edit=Allow only autoconfirmed users] (indefinite) [Move=Allow only autoconfirmed users] (indefinite)) 234917 Scribunto text/plain local export = {} local gsub = mw.ustring.gsub local u = mw.ustring.char local tt1 = { -- consonants ["က"] = "kə", ["ခ"] = "khə", ["ဂ"] = "ghə", ["ဃ"] = "xə", ["င"] = "ngə", ["စ"] = "sə", ["ဆ"] = "hsə", ["ၡ"] = "shə", ["ည"] = "nyə", ["တ"] = "tə", ["ထ"] = "hṭə", ["ဒ"] = "də", ["န"] = "nə", ["ပ"] = "pə", ["ဖ"] = "hpə", ["ဘ"] = "bə", ["မ"] = "mə", ["ယ"] = "yə", ["ရ"] = "rə", ["လ"] = "lə", ["ဝ"] = "wə", ["သ"] = "thə", ["ဟ"] = "hə", ["အ"] = "ʼə", ["ဧ"] = "ahh ", -- medials ["ှ"] = "ˣhgə", ["ၠ"] = "ˣyə", ["ြ"] = "ˣrə", ["ျ"] = "ˣlə", ["ွ"] = "ˣwə", -- dependent vowels ["ါ"] = "ah ", ["ံ"] = "ee ", ["ု"] = "u ", ["ူ"] = "oo ", ["ၢ"] = "uh ", ["့"] = "ay ", ["ဲ"] = "eh ", ["ိ"] = "oh ", ["ီ"] = "aw ",["ႉ"] = ". ", -- numerals ["၀"] = "0", ["၁"] = "1", ["၂"] = "2", ["၃"] = "3", ["၄"] = "4", ["၅"] = "5", ["၆"] = "6", ["၇"] = "7", ["၈"] = "8", ["၉"] = "9", -- zero-width space (display it if it hides in a word) [u(0x200B)] = "‼", } local adjust0 = { -- tones ["ၢ်"] = u(0x0331), ["ာ်"] = u(0x0323), ["း"] = u(0x0308), ["ၣ်"] = u(0x0300), ["ၤ"] = u(0x0304), --prolonged } function export.tr(text, lang, sc) if type(text) == "table" then -- called directly from a template text = text.args[1] end for k, v in pairs(adjust0) do text = gsub(text, k, v) end text = gsub(text, ".", tt1) text = gsub(text, "əˣ", "") text = gsub(text, "ə([aeiou])", "%1") text = gsub(text, "ə", "a ") text = gsub(text, "%s(["..u(0x0331)..u(0x0323)..u(0x0308)..u(0x0300)..u(0x0304).."])", "%1 ") text = gsub(text, "(.-)%s*$", "%1") -- remove space at the end return text end return export 2y2a23i2iuseenlr7vrzyveqnk2kxum 234918 234917 2026-05-25T13:42:02Z Lee 19 [[:en:Module:ksw-translit]] වෙතින් එක් සංශෝධනයක් 234917 Scribunto text/plain local export = {} local gsub = mw.ustring.gsub local u = mw.ustring.char local tt1 = { -- consonants ["က"] = "kə", ["ခ"] = "khə", ["ဂ"] = "ghə", ["ဃ"] = "xə", ["င"] = "ngə", ["စ"] = "sə", ["ဆ"] = "hsə", ["ၡ"] = "shə", ["ည"] = "nyə", ["တ"] = "tə", ["ထ"] = "hṭə", ["ဒ"] = "də", ["န"] = "nə", ["ပ"] = "pə", ["ဖ"] = "hpə", ["ဘ"] = "bə", ["မ"] = "mə", ["ယ"] = "yə", ["ရ"] = "rə", ["လ"] = "lə", ["ဝ"] = "wə", ["သ"] = "thə", ["ဟ"] = "hə", ["အ"] = "ʼə", ["ဧ"] = "ahh ", -- medials ["ှ"] = "ˣhgə", ["ၠ"] = "ˣyə", ["ြ"] = "ˣrə", ["ျ"] = "ˣlə", ["ွ"] = "ˣwə", -- dependent vowels ["ါ"] = "ah ", ["ံ"] = "ee ", ["ု"] = "u ", ["ူ"] = "oo ", ["ၢ"] = "uh ", ["့"] = "ay ", ["ဲ"] = "eh ", ["ိ"] = "oh ", ["ီ"] = "aw ",["ႉ"] = ". ", -- numerals ["၀"] = "0", ["၁"] = "1", ["၂"] = "2", ["၃"] = "3", ["၄"] = "4", ["၅"] = "5", ["၆"] = "6", ["၇"] = "7", ["၈"] = "8", ["၉"] = "9", -- zero-width space (display it if it hides in a word) [u(0x200B)] = "‼", } local adjust0 = { -- tones ["ၢ်"] = u(0x0331), ["ာ်"] = u(0x0323), ["း"] = u(0x0308), ["ၣ်"] = u(0x0300), ["ၤ"] = u(0x0304), --prolonged } function export.tr(text, lang, sc) if type(text) == "table" then -- called directly from a template text = text.args[1] end for k, v in pairs(adjust0) do text = gsub(text, k, v) end text = gsub(text, ".", tt1) text = gsub(text, "əˣ", "") text = gsub(text, "ə([aeiou])", "%1") text = gsub(text, "ə", "a ") text = gsub(text, "%s(["..u(0x0331)..u(0x0323)..u(0x0308)..u(0x0300)..u(0x0304).."])", "%1 ") text = gsub(text, "(.-)%s*$", "%1") -- remove space at the end return text end return export 2y2a23i2iuseenlr7vrzyveqnk2kxum Module:ksw-translit/documentation 828 143948 234919 2017-11-09T07:02:53Z en>Erutuon 0 documentation template 234919 wikitext text/x-wiki {{translit module documentation|ksw}} 3swpg089k5npqtn66yw4ihvauysf6z2 234920 234919 2026-05-25T13:42:27Z Lee 19 [[:en:Module:ksw-translit/documentation]] වෙතින් එක් සංශෝධනයක් 234919 wikitext text/x-wiki {{translit module documentation|ksw}} 3swpg089k5npqtn66yw4ihvauysf6z2 Module:dar-translit/documentation 828 143949 234921 2014-07-08T20:35:37Z en>Rua 0 234921 wikitext text/x-wiki {{translit module documentation|dar}} qg6z7cj94hcu4ef0npoms0v26uwwk9u 234922 234921 2026-05-25T13:44:56Z Lee 19 [[:en:Module:dar-translit/documentation]] වෙතින් එක් සංශෝධනයක් 234921 wikitext text/x-wiki {{translit module documentation|dar}} qg6z7cj94hcu4ef0npoms0v26uwwk9u Module:dar-translit 828 143950 234923 2025-06-24T19:29:33Z en>Kaitag words 0 234923 Scribunto text/plain local u = require("Module:string/char") local export = {} local mapping1 = { ["б"]="b", ["п"]="p", ["ф"]="f", ["в"]="v", ["м"]="m", ["д"]="d", ["т"]="t", ["й"]="j", ["н"]="n", ["з"]="z", ["ц"]="c", ["с"]="s", ["ж"]="ž", ["ш"]="š", ["щ"]="šč", ["л"]="l", ["ч"]="č", ["р"]="r", ["г"]="g", ["к"]="k", ["х"]="ꭓ", ["ъ"]="ʾ", ["а"]="a", ["е"]="e", ["ы"]="y", ["и"]="i", ["о"]="o", ["у"]="u", ["ё"]="ë", ["ь"]="’", ["э"]="e", ["ю"]="ju", ["я"]="ə", ["Б"]="B", ["П"]="P", ["Ф"]="F", ["В"]="V", ["М"]="M", ["Д"]="D", ["Т"]="T", ["Й"]="J", ["Н"]="N", ["З"]="Z", ["Ц"]="C", ["С"]="S", ["Ж"]="Ž", ["Ш"]="Š", ["Щ"]="Šč", ["Л"]="L", ["Ч"]="Č", ["Р"]="R", ["Г"]="G", ["К"]="K", ["Х"]="Ꭓ", ["Ъ"]="ʾ", ["А"]="A", ["Е"]="E", ["Ы"]="Y", ["И"]="I", ["О"]="O", ["У"]="U", ["Ё"]="Ë", ["Ь"]="’", ["Э"]="E", ["Ю"]="Ju", ["Я"]="Ə" } local mapping2 = { ['дз'] = 'ʒ', ['Дз'] = 'Ʒ', ['дж'] = 'ǯ', ['Дж'] = 'Ǯ', ['пӏ'] = 'ṗ', ['Пӏ'] = 'Ṗ', ['цӏ'] = 'c̣', ['тӏ'] = 'ṭ', ['чӏ'] = 'č̣', ['кь'] = 'q̇', ['кӏ'] = 'ḳ', ['хь'] = 'x', ['хъ'] = 'q', ['къ'] = 'ɢ', ['гъ'] = 'ɣ', ['гӏ'] = 'ʿ', ['хӏ'] = 'ḥ', ['гь'] = 'h', ['Цӏ'] = 'C̣', ['Тӏ'] = 'Ṭ', ['Сс'] = 'S̄', ['Чӏ'] = 'Č̣', ['Кь'] = 'Q̇', ['Кӏ'] = 'Ḳ', ['Хь'] = 'X', ['Хъ'] = 'Q', ['Къ'] = 'ɢ', ['Гъ'] = 'Γ', ['Гӏ'] = 'ʿ', ['Хӏ'] = 'Ḥ', ['Гь'] = 'H', } function export.tr(text, lang, sc) local str_gsub = string.gsub -- Convert capital to lowercase palochka. Lowercase is found in tables -- above. text = str_gsub(text, u(0x4C0), u(0x4CF)) for pat, repl in pairs(mapping2) do text = str_gsub(text, pat, repl) end -- pattern for non-ASCII UTF-8 characters text = str_gsub(text, '[\194-\244][\128-\191]+', mapping1) return text end return export rz6x7spdt2dywmm6t5qd7b93nj5vpaf 234924 234923 2026-05-25T13:45:02Z Lee 19 [[:en:Module:dar-translit]] වෙතින් එක් සංශෝධනයක් 234923 Scribunto text/plain local u = require("Module:string/char") local export = {} local mapping1 = { ["б"]="b", ["п"]="p", ["ф"]="f", ["в"]="v", ["м"]="m", ["д"]="d", ["т"]="t", ["й"]="j", ["н"]="n", ["з"]="z", ["ц"]="c", ["с"]="s", ["ж"]="ž", ["ш"]="š", ["щ"]="šč", ["л"]="l", ["ч"]="č", ["р"]="r", ["г"]="g", ["к"]="k", ["х"]="ꭓ", ["ъ"]="ʾ", ["а"]="a", ["е"]="e", ["ы"]="y", ["и"]="i", ["о"]="o", ["у"]="u", ["ё"]="ë", ["ь"]="’", ["э"]="e", ["ю"]="ju", ["я"]="ə", ["Б"]="B", ["П"]="P", ["Ф"]="F", ["В"]="V", ["М"]="M", ["Д"]="D", ["Т"]="T", ["Й"]="J", ["Н"]="N", ["З"]="Z", ["Ц"]="C", ["С"]="S", ["Ж"]="Ž", ["Ш"]="Š", ["Щ"]="Šč", ["Л"]="L", ["Ч"]="Č", ["Р"]="R", ["Г"]="G", ["К"]="K", ["Х"]="Ꭓ", ["Ъ"]="ʾ", ["А"]="A", ["Е"]="E", ["Ы"]="Y", ["И"]="I", ["О"]="O", ["У"]="U", ["Ё"]="Ë", ["Ь"]="’", ["Э"]="E", ["Ю"]="Ju", ["Я"]="Ə" } local mapping2 = { ['дз'] = 'ʒ', ['Дз'] = 'Ʒ', ['дж'] = 'ǯ', ['Дж'] = 'Ǯ', ['пӏ'] = 'ṗ', ['Пӏ'] = 'Ṗ', ['цӏ'] = 'c̣', ['тӏ'] = 'ṭ', ['чӏ'] = 'č̣', ['кь'] = 'q̇', ['кӏ'] = 'ḳ', ['хь'] = 'x', ['хъ'] = 'q', ['къ'] = 'ɢ', ['гъ'] = 'ɣ', ['гӏ'] = 'ʿ', ['хӏ'] = 'ḥ', ['гь'] = 'h', ['Цӏ'] = 'C̣', ['Тӏ'] = 'Ṭ', ['Сс'] = 'S̄', ['Чӏ'] = 'Č̣', ['Кь'] = 'Q̇', ['Кӏ'] = 'Ḳ', ['Хь'] = 'X', ['Хъ'] = 'Q', ['Къ'] = 'ɢ', ['Гъ'] = 'Γ', ['Гӏ'] = 'ʿ', ['Хӏ'] = 'Ḥ', ['Гь'] = 'H', } function export.tr(text, lang, sc) local str_gsub = string.gsub -- Convert capital to lowercase palochka. Lowercase is found in tables -- above. text = str_gsub(text, u(0x4C0), u(0x4CF)) for pat, repl in pairs(mapping2) do text = str_gsub(text, pat, repl) end -- pattern for non-ASCII UTF-8 characters text = str_gsub(text, '[\194-\244][\128-\191]+', mapping1) return text end return export rz6x7spdt2dywmm6t5qd7b93nj5vpaf වික්ෂනරි:Requested entries (Sinhalese) 4 143951 234930 2026-05-26T06:58:12Z Lee 19 Lee විසින් [[වික්ෂනරි:Requested entries (Sinhalese)]] සිට [[වික්ෂනරි:Requested entries (සිංහල)]] වෙත පිටුව ගෙන යන ලදී 234930 wikitext text/x-wiki #යළියොමුව [[වික්ෂනරි:Requested entries (සිංහල)]] exjylfwod0m2yhfmdo8vu0x6m6lwuxm පිරිහිණිමි 0 143952 234950 2026-05-26T10:51:57Z WrdSrchSi 3305 Page created: + IPA|si + head|si|verb forms|head= + infl of|si + ප්‍රවර්ගය 234950 wikitext text/x-wiki ==සිංහල== ===උච්චාරණය=== * {{IPA|si|/ˈpiriɦiɳimi/}} ===ක්‍රියා පද=== {{head|si|verb forms|head=පිරිහිණිමි|අනතීත-අකර්මක උත්තම ඒකවචන|පිරිහෙමි#ක්‍රියා පද}} # {{lb|si|අකර්මක}} {{infl of|si|පිරිහේ#ක්‍රියා පද||අතීත|උත්තම පුරුෂ|ඒකවචන|ආඛ්‍යාත ක්‍රියා}} [[ප්‍රවර්ගය: සිංහල ආඛ්‍යාත ක්‍රියා පද]] 44mtq13s73etm0votadobajojxe62bm සෙට 0 143953 234951 2026-05-26T10:55:09Z WrdSrchSi 3305 Page created: + alternative form of|si 234951 wikitext text/x-wiki == සිංහල == === නිරුක්තිය === {{rfe|si}} === නාම පදය === {{si-noun}} # {{alternative form of|si|හෙට}} # {{rfdef|si}} <!-- ==== පරිවර්තන ==== {{trans-top|පරිවර්තන}} * ඉංග්‍රීසි: {{t|en|<<ඉංග්‍රීසි වචනය>>}} {{trans-bottom}} === අමතර අවධානයට === * {{l|si|<<ආශ්‍රිත පවතින වෙනත් වචන>>}} --> oc47omcxhwv686onyqblrzmxur6sn3m ඊයේට 0 143954 234952 2026-05-26T10:56:20Z WrdSrchSi 3305 Page created. 234952 wikitext text/x-wiki ==සිංහල== === නිරුක්තිය === {{rfe|si}} ===නාම පදය=== {{head|si|noun form}} # {{rfdef|si}} 4bk4s1b4g1dyqtbh6fxsfy4ojsiyxw3 සෙටින් 0 143955 234953 2026-05-26T10:57:52Z WrdSrchSi 3305 Page created: + alternative form of|si 234953 wikitext text/x-wiki ==සිංහල== === නිරුක්තිය === {{rfe|si}} ===නාම පදය=== {{head|si|noun form}} # {{alternative form of|si|හෙටින්}} pzzt5pnog74w4pb3s5yxq8mu1c7kwhx සෙටට 0 143956 234954 2026-05-26T10:59:18Z WrdSrchSi 3305 Page created: + alternative form of 234954 wikitext text/x-wiki ==සිංහල== === නිරුක්තිය === {{rfe|si}} ===නාම පදය=== {{head|si|noun form}} # {{alternative form of|si|හෙටට}} kgfylgxqncb8v6g4o7slgay2idj1s5q කෙළිත 0 143957 234955 2026-05-26T11:00:21Z WrdSrchSi 3305 Page created. 234955 wikitext text/x-wiki == සිංහල == === ක්‍රියා පද === {{head|si|verb form}} # {{{1|{{rfdef|si}}}}} #: ''{{{2|<!-- example sentence -->}}}'' p515qhzvrxvpn5kx1ka05hdnfbvr2ar යදියා 0 143958 234956 2026-05-26T11:01:41Z WrdSrchSi 3305 Page created. 234956 wikitext text/x-wiki == සිංහල == === නිරුක්තිය === {{rfe|si}} === නාම පදය === {{si-noun}} # {{rfdef|si}} <!-- ==== පරිවර්තන ==== {{trans-top|පරිවර්තන}} * ඉංග්‍රීසි: {{t|en|<<ඉංග්‍රීසි වචනය>>}} {{trans-bottom}} === අමතර අවධානයට === * {{l|si|<<ආශ්‍රිත පවතින වෙනත් වචන>>}} --> 37g9s13iio6w9i2yw7aw46v28viw7h4 මෑණියෝ 0 143959 234957 2026-05-26T11:05:46Z WrdSrchSi 3305 Page created. 234957 wikitext text/x-wiki == සිංහල == === නිරුක්තිය === {{rfe|si}} === නාම පදය === {{si-noun}} # {{rfdef|si}} <!-- ==== පරිවර්තන ==== {{trans-top|පරිවර්තන}} * ඉංග්‍රීසි: {{t|en|<<ඉංග්‍රීසි වචනය>>}} {{trans-bottom}} === අමතර අවධානයට === * {{l|si|<<ආශ්‍රිත පවතින වෙනත් වචන>>}} --> 37g9s13iio6w9i2yw7aw46v28viw7h4 එකකුට 0 143960 234958 2026-05-26T11:07:00Z WrdSrchSi 3305 Page created. 234958 wikitext text/x-wiki ==සිංහල== === නිරුක්තිය === {{rfe|si}} ===නාම පදය=== {{head|si|noun form}} # {{rfdef|si}} 4bk4s1b4g1dyqtbh6fxsfy4ojsiyxw3 නෙළනුව 0 143961 234959 2026-05-26T11:12:12Z WrdSrchSi 3305 + head|si|verb forms|head= + infl of|si + ප්‍රවර්ගය 234959 wikitext text/x-wiki == සිංහල == ===ක්‍රියා පද=== {{head|si|verb forms|head=නෙළනුව}} # {{infl of|si|නෙළයි#ක්‍රියා පද||අනාගත|නිපාත ක්‍රියා}} [[ප්‍රවර්ගය: සිංහල නිපාත ක්‍රියා පද]] [[ප්‍රවර්ගය: සිංහල අනාගත නිපාත ක්‍රියා පද]] 30w1mznrgp8wvgti0i3u4omrwbadcee පනිනුව 0 143962 234960 2026-05-26T11:15:15Z WrdSrchSi 3305 Page created: + head|si|verb forms|head= + infl of|si + ප්‍රවර්ගය 234960 wikitext text/x-wiki == සිංහල == ===ක්‍රියා පද=== {{head|si|verb forms|head=පනිනුව}} # {{infl of|si|පනී#ක්‍රියා පද||අනාගත|නිපාත ක්‍රියා}} [[ප්‍රවර්ගය: සිංහල නිපාත ක්‍රියා පද]] [[ප්‍රවර්ගය: සිංහල අනාගත නිපාත ක්‍රියා පද]] 53jn9tss4gfydnmftgvc0bcjnkxx2zg තුමුටු 0 143963 234961 2026-05-26T11:20:02Z WrdSrchSi 3305 Page created: + මූලාශ්‍ර 234961 wikitext text/x-wiki ==සිංහල== ===ක්‍රියා විශේෂණ පද ?=== {{si-adv}} # In a [[{{{1}}}]] manner{{{2|; <!--other wording-->}}}. === මූලාශ්‍ර === <references/> * "55. තුමුටු [https://tipitaka.lk/library/969]" කුමාරණතුංග මුනිදාස, '''''ව්‍යාකරණ විවරණය''''', — 298 පිටුව h7la1x2ztddnd56dy4swsuyoeply9vf ඔහෝ 0 143964 234962 2026-05-26T11:23:45Z WrdSrchSi 3305 Page created: + මූලාශ්‍ර 234962 wikitext text/x-wiki == සිංහල == === මූලාශ්‍ර === <references/> * "64. [https://tipitaka.lk/library/969]" කුමාරණතුංග මුනිදාස, '''''ව්‍යාකරණ විවරණය''''', — 301 පිටුව nvjm5ukg7o1gvzl9vwwtmnb7sv5zmuq හෝය්යා 0 143965 234963 2026-05-26T11:26:18Z WrdSrchSi 3305 Page created: + මූලාශ්‍ර 234963 wikitext text/x-wiki == සිංහල == === මූලාශ්‍ර === <references/> * "66. [https://tipitaka.lk/library/969]" කුමාරණතුංග මුනිදාස, '''''ව්‍යාකරණ විවරණය''''', — 301 පිටුව tl85rtjoh49fjin5xahslae1xcdisv7 සී 0 143966 234964 2026-05-26T11:29:15Z WrdSrchSi 3305 Page created: + alternative form of|si + මූලාශ්‍ර 234964 wikitext text/x-wiki == සිංහල == # {{alternative form of|si|චී}} === මූලාශ්‍ර === <references/> * "71. [https://tipitaka.lk/library/969]" කුමාරණතුංග මුනිදාස, '''''ව්‍යාකරණ විවරණය''''', — 302 පිටුව g4yq7bsgej4pwsa9o532zv1nsqweb2g 234965 234964 2026-05-26T11:30:49Z WrdSrchSi 3305 Fixed. 234965 wikitext text/x-wiki == සිංහල == # {{alternative form of|si|චිඃ}} === මූලාශ්‍ර === <references/> * "71. [https://tipitaka.lk/library/969]" කුමාරණතුංග මුනිදාස, '''''ව්‍යාකරණ විවරණය''''', — 302 පිටුව nmfuuvffkepabo31hi86vwzwz1uwrw1 දරුවෙනි 0 143967 234966 2026-05-26T11:33:04Z WrdSrchSi 3305 Page created. 234966 wikitext text/x-wiki ==සිංහල== === නිරුක්තිය === {{rfe|si}} ===නාම පදය=== {{head|si|noun form}} # {{rfdef|si}} 4bk4s1b4g1dyqtbh6fxsfy4ojsiyxw3