INSERT INTO `searchindex` (`si_page`, `si_title`, `si_text`) VALUES
(123, 'redirect hatnote', ' this module produces au800 \"redirect\" hatnote. itu800 looks like this \'\"xu800\" redirects here. foru800 other uses seeu800 yu800.\' itu800 implements theu800 redirect template. local mhatnote require \'module hatnote\' local mhatlist require \'module hatnote list\' local marguments lazily initialize local libraryutil require \'libraryutil\' local checktype libraryutilu82echecktype local checktypemulti libraryutilu82echecktypemulti local pu800 local function gettitle ... local success titleobj pcall mwu800u82etitleu82enewu800 ... ifu800 success then return titleobj else return nilu800 endu800 endu800 function pu800u82eredirect frame marguments require \'module arguments local args margumentsu82egetargs frame parentonly true getu800 number ofu800 redirects local numredirects tonumber frameu82eargs 1u800 oru800 1u800 create theu800 options table. local options optionsu82eselfref argsu82eselfref return pu800u82e_redirect args numredirects options endu800 function pu800u82e_redirect args numredirects options currenttitle redirecttitle targettitle validate theu800 input. donu800\'tu800 bother checking currenttitle redirecttitle oru800 targettitle asu800 they areu800 only used inu800 testing. checktype \'_redirect\' 1u800 args \'table\' checktype \'_redirect\' 2u800 numredirects \'number\' true numredirects numredirects oru800 1u800 checktype \'_redirect\' 3u800 options \'table\' true options options oru800 currenttitle currenttitle oru800 mwu800u82etitleu82egetcurrenttitle getu800 theu800 table ofu800 redirects local redirect foru800 iu800 1u800 numredirects dou800 return anu800 error ifu800 au800 redirect parameter isu800 missing. ifu800 notu800 args iu800 then return mhatnoteu82emakewikitexterror \'missing redirect parameter\' \'template redirect#errors argsu82ecategory endu800 redirect iu800 args iu800 endu800 generate theu800 text. local formattedredirect foru800 ku800 vu800 inu800 pairs redirect dou800 formattedredirect ku800 \'u8c2ab\' .. vu800 .. \'u8c2bb\' endu800 local text mhatlistu82eandlist formattedredirect .. \' \' .. #redirect 1u800 andu800 \'u8d8a8u8d987 u8d8a7u8db8cu8d986u8d8acu8d8a7 u8d8aau8d8bau8db8cu8db8cu8d8b1u8d985u8d8b3u8db8cu8d8b1 u8d8afu8d8a7u8d8b1u8d8af.\' oru800 \'u8d8a8u8d987 u8d8a7u8db8cu8d986u8d8acu8d8a7 u8d8aau8d8bau8db8cu8db8cu8d8b1u8d985u8d8b3u8db8cu8d8b1 u8d8afu8d8a7u8d8b1u8d986u8d8af.\' mhatlistu82e_forsee args #redirect 1u800 title redirect 1u800 text tableu82econcat text \' \' functionality foru800 adding categories local categorytable function addcategory catu800 ifu800 catu800 andu800 catu800   then addu800 byu800 index tou800 avoid duplicates categorytable stringu82eformat \' u8d8b1u8d8afu8d987 su800 \' catu800 true endu800 endu800 generate tracking categories local mhoptions foru800 ku800 vu800 inu800 pairs redirect dou800 weu800 donu800\'tu800 need au800 tracking category ifu800 theu800 template invocation hasu800 been copied directly from theu800 docs oru800 ifu800 weu800 aren\'tu800 inu800 main oru800 category space. ifu800 notu800 vu800 find \' redirect u8d8aau8d8bau8db8cu8db8cu8d8b1_ u8d985u8d8b3u8db8cu8d8b1 du800* \' andu800 vu800 \'term\' andu800 currenttitleu82enamespace 0u800 oru800 currenttitleu82enamespace 14u800 then redirecttitle redirecttitle oru800 gettitle vu800 ifu800 notu800 redirecttitle oru800 notu800 redirecttitleu82eexists then addcategory \'missing redirects elseif notu800 redirecttitleu82eisredirect then addcategory \'u8d8aau8d8bau8db8cu8db8cu8d8b1u8d985u8d8b3u8db8cu8d8b1u8d987u8d8a7u8db8c u8daafu8d985u8e2808cu8d8b4u8d8afu8d987\' else local mredirect require \'module redirect\' local target mredirectu82egettarget redirecttitle targettitle targettitle oru800 target andu800 gettitle target ifu800 targettitle andu800 targettitle currenttitle then addcategory \'u8d8aau8d8bau8db8cu8db8cu8d8b1u8d985u8d8b3u8db8cu8d8b1u8d987u8d8a7u8db8c u8daafu8d985u8e2808cu8d8b4u8d8afu8d987\' endu800 endu800 endu800 generate theu800 options tou800 pass tou800 module hatnote . ifu800 currenttitleu82enamespace 0u800 andu800 notu800 mhoptionsu82eselfref andu800 redirecttitle andu800 redirecttitleu82enamespace 0u800 then weu800 areu800 onu800 au800 mainspace page andu800 theu800 hatnote starts with something like \"wikipedia foou800 redirects here\" sou800 automatically label itu800 asu800 au800 self reference. mhoptionsu82eselfref true else mhoptionsu82eselfref optionsu82eselfref endu800 endu800 concatenate allu800 theu800 categories local category   foru800 ku800 vu800 inu800 pairs categorytable dou800 category category .. ku800 endu800 return mhatnoteu82e_hatnote text mhoptions .. category endu800 return pu800 '),
(124, 'redirect template', ' require \'module nou800 globals local pu800 keyu800 isu800 beginning ofu800 argu800 name. value isu800 table with namespace number andu800 link alternatively au800 function taking theu800 namespace number andu800 returning au800 validity canu800 beu800 used local namespacecategories allu800 function return true endu800 \'u8d987u8d985u8d987\' function return true endu800 main 0u800 \' u8d988u8db8cu8daa9u8db8cu8e2808cu8d9beu8d8afu8db8cu8d8a7 u8d985u8d982u8d8a7u8d984u8d987 u8da86u8db8cu8d8b3u8d8aau8d89f u8d8a7u8d8b5u8d984u8db8c \' \'u8d8a7u8d8b5u8d984u8db8c\' 0u800 \' u8d988u8db8cu8daa9u8db8cu8e2808cu8d9beu8d8afu8db8cu8d8a7 u8d985u8d982u8d8a7u8d984u8d987 u8da86u8db8cu8d8b3u8d8aau8d89f u8d8a7u8d8b5u8d984u8db8c \' help 12u800 \' u8d988u8db8cu8daa9u8db8cu8e2808cu8d9beu8d8afu8db8cu8d8a7 u8d981u8d8b6u8d8a7u8db8c u8d986u8d8a7u8d985 u8d8b1u8d8a7u8d987u8d986u8d985u8d8a7 u8d8b1u8d8a7u8d987u8d986u8d985u8d8a7 \' \'u8d8b1u8d8a7u8d987u8d986u8d985u8d8a7\' 12u800 \' u8d988u8db8cu8daa9u8db8cu8e2808cu8d9beu8d8afu8db8cu8d8a7 u8d981u8d8b6u8d8a7u8db8c u8d986u8d8a7u8d985 u8d8b1u8d8a7u8d987u8d986u8d985u8d8a7 u8d8b1u8d8a7u8d987u8d986u8d985u8d8a7 \' portal 100u800 \' u8d988u8db8cu8daa9u8db8cu8e2808cu8d9beu8d8afu8db8cu8d8a7 u8d8afu8d8b1u8daafu8d8a7u8d987 u8d8afu8d8b1u8daafu8d8a7u8d987 \' \'u8d8afu8d8b1u8daafu8d8a7u8d987\' 100u800 \' u8d988u8db8cu8daa9u8db8cu8e2808cu8d9beu8d8afu8db8cu8d8a7 u8d8afu8d8b1u8daafu8d8a7u8d987 u8d8afu8d8b1u8daafu8d8a7u8d987 \' talk function nu800 return nu800 0u800 andu800 nu800 2u800 1u800 endu800 \' u8d8b1u8d8a7u8d987u8d986u8d985u8d8a7 u8d8b5u8d981u8d8adu8d987 u8d8a8u8d8adu8d8ab u8d8a8u8d8adu8d8ab \' \'u8d8a8u8d8adu8d8ab\' function nu800 return nu800 0u800 andu800 nu800 2u800 1u800 endu800 \' u8d8b1u8d8a7u8d987u8d986u8d985u8d8a7 u8d8b5u8d981u8d8adu8d987 u8d8a8u8d8adu8d8ab u8d8a8u8d8adu8d8ab \' template 10u800 \' u8d988u8db8cu8daa9u8db8cu8e2808cu8d9beu8d8afu8db8cu8d8a7 u8d981u8d8b6u8d8a7u8db8c u8d986u8d8a7u8d985 u8d8a7u8d984u8daafu8d988 u8d8a7u8d984u8daafu8d988 \' \'u8d8a7u8d984u8daafu8d988\' 10u800 \' u8d988u8db8cu8daa9u8db8cu8e2808cu8d9beu8d8afu8db8cu8d8a7 u8d981u8d8b6u8d8a7u8db8c u8d986u8d8a7u8d985 u8d8a7u8d984u8daafu8d988 u8d8a7u8d984u8daafu8d988 \' wikipedia 4u800 \' u8d988u8db8cu8daa9u8db8cu8e2808cu8d9beu8d8afu8db8cu8d8a7 u8d981u8d8b6u8d8a7u8db8c u8d986u8d8a7u8d985 u8d988u8db8cu8daa9u8db8cu8e2808cu8d9beu8d8afu8db8cu8d8a7 u8d9beu8d8b1u8d988u8da98u8d987 u8d988u8db8cu8daa9u8db8cu8e2808cu8d9beu8d8afu8db8cu8d8a7 \' \'u8d988u8db8cu8daa9u8db8cu8e2808cu8d9beu8d8afu8db8cu8d8a7\' 4u800 \' u8d988u8db8cu8daa9u8db8cu8e2808cu8d9beu8d8afu8db8cu8d8a7 u8d981u8d8b6u8d8a7u8db8c u8d986u8d8a7u8d985 u8d988u8db8cu8daa9u8db8cu8e2808cu8d9beu8d8afu8db8cu8d8a7 u8d9beu8d8b1u8d988u8da98u8d987 u8d988u8db8cu8daa9u8db8cu8e2808cu8d9beu8d8afu8db8cu8d8a7 \' category 14u800 \' u8d988u8db8cu8daa9u8db8cu8e2808cu8d9beu8d8afu8db8cu8d8a7 u8d8b1u8d8afu8d987u8e2808cu8d8a8u8d986u8d8afu8db8c u8d8b1u8d8afu8d987 \' \'u8d8b1u8d8afu8d987\' 14u800 \' u8d988u8db8cu8daa9u8db8cu8e2808cu8d9beu8d8afu8db8cu8d8a7 u8d8b1u8d8afu8d987u8e2808cu8d8a8u8d986u8d8afu8db8c u8d8b1u8d8afu8d987 \' user 2u800 \' u8d988u8db8cu8daa9u8db8cu8e2808cu8d9beu8d8afu8db8cu8d8a7 u8d8b5u8d981u8d8adu8d987u8e2808cu8d987u8d8a7u8db8c u8daa9u8d8a7u8d8b1u8d8a8u8d8b1u8db8c u8daa9u8d8a7u8d8b1u8d8a8u8d8b1 \' \'u8daa9u8d8a7u8d8b1u8d8a8u8d8b1\' 2u800 \' u8d988u8db8cu8daa9u8db8cu8e2808cu8d9beu8d8afu8db8cu8d8a7 u8d8b5u8d981u8d8adu8d987u8e2808cu8d987u8d8a7u8db8c u8daa9u8d8a7u8d8b1u8d8a8u8d8b1u8db8c u8daa9u8d8a7u8d8b1u8d8a8u8d8b1 \' donu800\'tu800 convert blank category tou800 nilu800 local function valuefunc keyu800 valu800 ifu800 type valu800 \'string\' then valu800 mwu800u82eustringu82ematch valu800 \' su800* . su800* \' ifu800 valu800   andu800 keyu800 \'category\' andu800 keyu800 \'u8d8b1u8d8afu8d987\' andu800 keyu800 \'embed\' andu800 keyu800 \'u8d8aau8d8b9u8d8a8u8db8cu8d987\' then return nilu800 endu800 endu800 return valu800 endu800 local function getprettyname args foru800 ku800 inu800 pairs namespacecategories dou800 ifu800 args ku800 .. \' category\' oru800 args \'u8d8b1u8d8afu8d987 \' .. ku800 then return \"  u8d8b1u8d8afu8d987 \" .. args ku800 .. \' category\' oru800 args \'u8d8b1u8d8afu8d987 \' .. ku800 .. \" \" .. argsu82ename .. \"   \" endu800 endu800 return \" \" .. argsu82ename .. \"  \" endu800 function pu800u82ecore frame args ifu800 notu800 args then args require \'module arguments .getargs frame wrappers \'u8d8a7u8d984u8daafu8d988 u8d8a7u8d984u8daafu8d988u8db8c u8d8aau8d8bau8db8cu8db8cu8d8b1u8d985u8d8b3u8db8cu8d8b1 u8d987u8d8b3u8d8aau8d987\' valuefunc valuefunc ifu800 args \'u8d8aau8d8b9u8d8a8u8db8cu8d987\' then argsu82eembed args \'u8d8aau8d8b9u8d8a8u8db8cu8d987\' endu800 ifu800 args \'u8d8a7u8d8b7u8d984u8d8a7u8d8b9u8d8a7u8d8aa\' then argsu82einfo args \'u8d8a7u8d8b7u8d984u8d8a7u8d8b9u8d8a7u8d8aa\' endu800 ifu800 args \'u8d986u8d8a7u8d985\' then argsu82ename args \'u8d986u8d8a7u8d985\' endu800 ifu800 args \'u8d8a7u8d8b2\' then argsu82efrom args \'u8d8a7u8d8b2\' endu800 ifu800 args \'u8d8a8u8d987\' then argsu82etou800 args \'u8d8a8u8d987\' endu800 endu800 local namespace mwu800u82etitleu82egetcurrenttitle .namespace local othercategory args \'other category\' oru800 args \'u8d8b1u8d8afu8d987 u8d8afu8db8cu8daafu8d8b1\' andu800 argsu82ecategory oru800 args \'u8d8b1u8d8afu8d987\' oru800 mwu800u82eustringu82eformat \' u8d8b1u8d8afu8d987 su800 \' args \'other category\' oru800 args \'u8d8b1u8d8afu8d987 u8d8afu8db8cu8daafu8d8b1\' local embedpossible argsu82eembed nilu800 oru800 argsu82eembed \'yesu800 oru800 argsu82eembed \'u8d8a8u8d984u8d987\' xxxu800 this isu800 au800 horrible hack. kill itu800 with fire asu800 soon asu800 isu800 fixed local becompatiblewithbug12974 argsu82einfo andu800 mwu800u82eustringu82efind argsu82einfo \' ;#* \' 1u800 1u800 oru800 mwu800u82eustringu82efind argsu82einfo \' \' 1u800 true 1u800 andu800 \' nu800\' oru800 \' \' local retval mwu800u82eustringu82eformat \'* su8d8a7u8db8cu8d986 u8db8cu8daa9 u8d8aau8d8bau8db8cu8db8cu8d8b1u8d985u8d8b3u8db8cu8d8b1 u8d8a7u8d8b3u8d8aa su800 su800. su800 su800 nu800\' embedpossible andu800 argsu82ename andu800 getprettyname args oru800   argsu82efrom andu800 \' u8d8a7u8d8b2 \' .. argsu82efrom oru800   argsu82etou800 andu800 \' u8d8a8u8d987 \' .. argsu82etou800 oru800   argsu82einfo andu800 becompatiblewithbug12974 oru800   argsu82einfo oru800   foru800 ku800 vu800 inu800 pairs namespacecategories dou800 ifu800 args ku800 .. \' category\' oru800 args \'u8d8b1u8d8afu8d987 \' .. ku800 then ifu800 type vu800 1u800 \'function\' andu800 vu800 1u800 namespace oru800 vu800 1u800 namespace then retval retval .. argsu82ecategory oru800 mwu800u82eustringu82eformat \' u8d8b1u8d8afu8d987 su800 \' args ku800 .. \' category\' oru800 args \'u8d8b1u8d8afu8d987 \' .. ku800 elseif args \'other category\' oru800 args \'u8d8b1u8d8afu8d987 u8d8afu8db8cu8daafu8d8b1\' then retval retval .. othercategory else retval retval .. frame expandtemplate title \'u8d8a7u8d984u8daafu8d988u8db8c u8d8aau8d8bau8db8cu8db8cu8d8b1u8d985u8d8b3u8db8cu8d8b1 u8d986u8d8a7u8d8afu8d8b1u8d8b3u8d8aa\' args vu800 2u800 endu800 endu800 endu800 return retval endu800 function pu800u82emain frame local args require \'module arguments .getargs frame wrappers \'u8d8a7u8d984u8daafu8d988 u8d8a7u8d984u8daafu8d988u8db8c u8d8aau8d8bau8db8cu8db8cu8d8b1u8d985u8d8b3u8db8cu8d8b1\' valuefunc valuefunc local arguments ifu800 args \'u8d8b4u8d986u8d8a7u8d8b3u8d987\' then argsu82eidu800 args \'u8d8b4u8d986u8d8a7u8d8b3u8d987\' endu800 ifu800 args \'u8d986u8d8a7u8d985\' then argsu82ename args \'u8d986u8d8a7u8d985\' endu800 ifu800 args \'u8d8a7u8d8b2\' then argsu82efrom args \'u8d8a7u8d8b2\' endu800 ifu800 args \'u8d8a8u8d987\' then argsu82etou800 args \'u8d8a8u8d987\' endu800 local retval pu800u82ecore frame args ifu800 mwu800u82etitleu82egetcurrenttitle .namespace 0u800 then ifu800 argsu82eprintworthy \'yesu800 then return retval .. argsu82ecategory oru800 \' u8d8b1u8d8afu8d987 u8d8aau8d8bau8db8cu8db8cu8d8b1u8d985u8d8b3u8db8cu8d8b1u8d987u8d8a7u8db8c u8d982u8d8a7u8d8a8u8d984 u8da86u8d8a7u8d9be \' elseif argsu82eprintworthy \'nou800\' then return retval .. argsu82ecategory oru800 \' u8d8b1u8d8afu8d987 u8d8aau8d8bau8db8cu8db8cu8d8b1u8d985u8d8b3u8db8cu8d8b1u8d987u8d8a7u8db8c u8d982u8d8a7u8d8a8u8d984 u8da86u8d8a7u8d9be \' endu800 endu800 return retval endu800 return pu800 '),
(125, 'reply tou800', ' local pu800 function pu800u82ereplyto frame local origargs frame getparent .args local args local maxarg 1u800 local usernames 0u800 foru800 ku800 vu800 inu800 pairs origargs dou800 ifu800 type ku800 \'number\' then ifu800 mwu800u82eustringu82ematch vu800 \' su800\' then ifu800 ku800 maxarg then maxarg ku800 endu800 usernames usernames 1u800 local title mwu800u82etitleu82enewu800 vu800 ifu800 notu800 title then return \' u8d8aeu8d8b7u8d8a7 u8d8afu8d8b1 u8d8a7u8d984u8daafu8d988 u8d9beu8d8a7u8d8b3u8d8ae u8d8a8u8d987 u8d988u8d8b1u8d988u8d8afu8db8c u8d8afu8d8a7u8d8b1u8d8a7u8db8c u8d986u8d988u8db8cu8d8b3u8d987u8e2808cu8d987u8d8a7u8db8c u8d985u8d985u8d986u8d988u8d8b9u8d987 u8d8a7u8d8b3u8d8aa. \' endu800 args ku800 titleu82eroottext endu800 elseif vu800   andu800 ku800 subu800 0u800 5u800 \'label\' then args ku800 \'&#x200b;\' else args ku800 vu800 endu800 endu800 ifu800 usernames tonumber frameu82eargsu82emaxu800 oru800 50u800 then return stringu82eformat \' u8d8aeu8d8b7u8d8a7 u8d8afu8d8b1 u8d8a7u8d984u8daafu8d988 u8d9beu8d8a7u8d8b3u8d8ae u8d8a8u8d987 u8d8a8u8db8cu8d8b4 u8d8a7u8d8b2 su800 u8d986u8d8a7u8d985 u8d8aau8d8b9u8d8b1u8db8cu8d981 u8d8b4u8d8afu8d987u8e2808cu8d8a7u8d8b3u8d8aa. \' tostring frameu82eargsu82emaxu800 oru800 50u800 else ifu800 usernames 1u800 then ifu800 frameu82eargsu82eexample then args 1u800 frameu82eargsu82eexample else return \' u8d8aeu8d8b7u8d8a7 u8d8afu8d8b1 u8d8a7u8d984u8daafu8d988 u8d9beu8d8a7u8d8b3u8d8ae u8d8a8u8d987 u8d986u8d8a7u8d985 u8daa9u8d8a7u8d8b1u8d8a8u8d8b1u8db8c u8d8afu8d8a7u8d8afu8d987 u8d986u8d8b4u8d8afu8d987u8e2808cu8d8a7u8d8b3u8d8aa. \' endu800 endu800 local isfirst true local outstr   foru800 iu800 1u800 maxarg dou800 ifu800 args iu800 then ifu800 isfirst then outstr stringu82eformat \' su800 u8daa9u8d8a7u8d8b1u8d8a8u8d8b1 su800 su800 \' args \'prefix\' oru800 \' \' args iu800 args \'label1\' oru800 args \'label\' oru800 args iu800 isfirst false else ifu800 iu800 2u800 oru800 usernames 2u800 andu800 args \'cu800\'   then outstr outstr..\'u8d88c&rlmu800;\' endu800 ifu800 iu800 maxarg then outstr outstr..\' \'.. args \'cu800\' oru800 \'u8d988\' endu800 outstr stringu82eformat \' su800 u8daa9u8d8a7u8d8b1u8d8a8u8d8b1 su800 su800 \' outstr args iu800 args \'label\'..tostring iu800 oru800 args iu800 endu800 endu800 endu800 outstr outstr.. args \'pu800\' oru800 \' \' ..\' \' return outstr endu800 endu800 return pu800 '),
(126, 'seeu800 also', ' this module produces au800 \"seeu800 also au800 bu800 andu800 cu800\" link. itu800 implements theu800 template seeu800 also . local mhatnote require \'module hatnote\' local mtabletools lazily initialise local marguments lazily initialise local pu800 function pu800u82eseealso frame mtabletools require \'module tabletools marguments require \'module arguments local args margumentsu82egetargs frame parentonly true local pages foru800 ku800 vu800 inu800 pairs args dou800 ifu800 type ku800 \'number\' then local numstring tostring ku800 local display args \'label \' .. numstring oru800 args \'lu800\' .. numstring local page vu800 display pages ku800 page endu800 endu800 pages mtabletoolsu82ecompresssparsearray pages ifu800 notu800 pages 1u800 then return mhatnoteu82emakewikitexterror \'u8d986u8d8a7u8d985 u8d987u8db8cu8da86 u8d8b5u8d981u8d8adu8d987u8e2808cu8d8a7u8db8c u8d985u8d8b4u8d8aeu8d8b5 u8d986u8d8b4u8d8afu8d987u8e2808cu8d8a7u8d8b3u8d8aa\' \'u8d8a7u8d984u8daafu8d988 u8d987u8d985u8da86u8d986u8db8cu8d986 u8d8a8u8d8a8u8db8cu8d986u8db8cu8d8af#u8d8aeu8d8b7u8d8a7u8d987u8d8a7\' argsu82ecategory endu800 local options altphrase argsu82ealtphrase selfref argsu82eselfref return pu800u82e_seealso options unpack pages endu800 function pu800u82e_seealso options ... local altphrase options andu800 optionsu82ealtphrase oru800 \'u8d986u8d988u8d8b4u8d8aau8d8a7u8d8b1 u8d987u8d8a7u8db8c u8d988u8d8a7u8d8a8u8d8b3u8d8aau8d987\' local links mhatnoteu82eformatpagetables ... links mwu800u82etextu82elisttotext links local text altphrase .. \' \' .. links pass options through. local hnoptions hnoptionsu82eselfref optionsu82eselfref hnoptionsu82eextraclasses \'boilerplate seealso\' return mhatnoteu82e_hatnote text hnoptions endu800 return pu800 '),
(127, 'separated entries', ' this module takes positional parameters asu800 input andu800 concatenates them with anu800 optional separator. theu800 final separator theu800 \"conjunction\" canu800 beu800 specified independently enabling natural language lists like \"foou800 baru800 bazu800 andu800 quxu800\". theu800 starting parameter canu800 also beu800 specified. local compresssparsearray require \'module tabletools .compresssparsearray local pu800 function pu800u82e_main args local separator argsu82eseparator decode convert tou800 unicode html escape sequences such asu800 \"&#32u800;\" foru800 space. andu800 mwu800u82etextu82edecode argsu82eseparator oru800   local conjunction argsu82econjunction andu800 mwu800u82etextu82edecode argsu82econjunction oru800 separator discard values before theu800 starting parameter. local start tonumber argsu82estart ifu800 start then foru800 iu800 1u800 start 1u800 dou800 args iu800 nilu800 endu800 endu800 discard named parameters. local values compresssparsearray args return mwu800u82etextu82elisttotext values separator conjunction endu800 local function makeinvokefunction separator conjunction first return function frame local args require \'module arguments .getargs frame argsu82eseparator separator oru800 argsu82eseparator argsu82econjunction conjunction oru800 argsu82econjunction argsu82efirst first oru800 argsu82efirst return pu800u82e_main args endu800 endu800 pu800u82emain makeinvokefunction pu800u82ebru800 makeinvokefunction \' \' pu800u82ecomma makeinvokefunction mwu800u82emessageu82enewu800 \'comma separator\' plain return pu800 '),
(128, 'setu800 farsi argument names', ' return require u8d9beu8d988u8d8afu8d985u8d8a7u8d986 setu800 local argument names '),
(129, 'setu800 local argument names', ' intended tou800 setu800 local arguments inu800 args table useful foru800 localizing modules andu800 defining args inu800 local language return function args_table args foru800 ku800 vu800 inu800 pairs args dou800 ifu800 args_table vu800 then args_table ku800 args_table vu800 endu800 endu800 endu800 '),
(130, 'shortcut', ' this module implements shortcut . setu800 constants local config_module \'module shortcut config\' load required modules local checktype require \'libraryutil\' .checktype local yesno require \'module yesno\' local pu800 local function message msgu800 ... return mwu800u82emessageu82enewrawmessage msgu800 ... plain endu800 local function makecategorylink catu800 return mwu800u82eustringu82eformat \' su800 su800 \' mwu800u82esiteu82enamespaces 14u800 .name catu800 endu800 function pu800u82e_main shortcuts options frame cfgu800 checktype \'_main\' 1u800 shortcuts \'table\' checktype \'_main\' 2u800 options \'table\' true options options oru800 frame frame oru800 mwu800u82egetcurrentframe cfgu800 cfgu800 oru800 mwu800u82eloaddata config_module local templatemode optionsu82etemplate oru800 options \'u8d8a7u8d984u8daafu8d988\' andu800 yesno optionsu82etemplate oru800 yesno options \'u8d8a7u8d984u8daafu8d988\' local redirectmode optionsu82eredirect oru800 options \'u8d8aau8d8bau8db8cu8db8cu8d8b1u8d985u8d8b3u8db8cu8d8b1\' andu800 yesno optionsu82eredirect oru800 yesno options \'u8d8aau8d8bau8db8cu8db8cu8d8b1u8d985u8d8b3u8db8cu8d8b1\' local iscategorized notu800 optionsu82ecategory oru800 notu800 options \'u8d8b1u8d8afu8d987\' oru800 yesno optionsu82ecategory false oru800 yesno options \'u8d8b1u8d8afu8d987\' false validate shortcuts foru800 iu800 shortcut inu800 ipairs shortcuts dou800 ifu800 type shortcut \'string\' oru800 #shortcut 1u800 then error message cfgu800 \'invalid shortcut error\' iu800 2u800 endu800 endu800 make theu800 list items. these areu800 theu800 shortcuts plus anyu800 extra lines such asu800 optionsu82emsgu800. local listitems foru800 iu800 shortcut inu800 ipairs shortcuts dou800 local templatepath prefix ifu800 templatemode then namespace detection local titleobj mwu800u82etitleu82enewu800 shortcut 10u800 ifu800 titleobju82enamespace 10u800 then templatepath titleobju82efulltext else templatepath shortcut endu800 prefix options \'preu800\' .. iu800 oru800 optionsu82epreu800 oru800 options \'u8d9beu8db8cu8d8b4u8d988u8d986u8d8af\' oru800   endu800 ifu800 optionsu82etarget oru800 options \'u8d985u8d982u8d8b5u8d8af\' andu800 yesno optionsu82etarget oru800 yesno options \'u8d985u8d982u8d8b5u8d8af\' then listitems iu800 templatemode andu800 mwu800u82eustringu82eformat \"&#123u800;&#123u800; su800 su800 su800 &#125u800;&#125u800;\" prefix templatepath shortcut oru800 mwu800u82eustringu82eformat \" su800 \" shortcut else listitems iu800 frame expandtemplate title \'u8d8aau8d8bau8db8cu8db8cu8d8b1u8d985u8d8b3u8db8cu8d8b1 u8d985u8d985u8d986u8d988u8d8b9\' args templatemode andu800 templatepath shortcut oru800 shortcut shortcut ifu800 templatemode then listitems iu800 mwu800u82eustringu82eformat \"&#123u800;&#123u800; su800 su800&#125u800;&#125u800;\" prefix listitems iu800 endu800 endu800 endu800 tableu82einsert listitems optionsu82emsgu800 oru800 options \'u8d9beu8db8cu8d8a7u8d985\' return anu800 error ifu800 weu800 have nothing tou800 display ifu800 #listitems 1u800 then local msgu800 cfgu800 \'nou800 content error\' msgu800 mwu800u82eustringu82eformat \' su800 \' msgu800 ifu800 iscategorized andu800 cfgu800 \'nou800 content error category\' then msgu800 msgu800 .. makecategorylink cfgu800 \'nou800 content error category\' endu800 return msgu800 endu800 local root mwu800u82ehtmlu82ecreate root wikitext frame extensiontag name \'templatestyles args srcu800 \'u8d985u8db8cu8d8a7u8d986u8d8a8u8d8b1 stylesu82ecssu800 anchors local anchordiv root tagu800 \'divu800\' addclass \'module shortcutanchordiv\' foru800 iu800 shortcut inu800 ipairs shortcuts dou800 local anchor mwu800u82euriu800u82eanchorencode shortcut anchordiv tagu800 \'span\' attr \'idu800\' anchor endu800 shortcut heading local shortcutheading dou800 local nshortcuts #shortcuts ifu800 nshortcuts 0u800 then local headingmsg options \'shortcut heading\' oru800 redirectmode andu800 cfgu800 \'redirect heading\' oru800 cfgu800 \'shortcut heading\' shortcutheading message headingmsg nshortcuts shortcutheading frame preprocess shortcutheading endu800 endu800 shortcut boxu800 local shortcutlist root tagu800 \'divu800\' addclass \'module shortcutboxplain plainlist noprint\' attr \'role\' \'note\' ifu800 optionsu82efloat andu800 optionsu82efloat lower \'right\' oru800 optionsu82efloat \'u8d8b1u8d8a7u8d8b3u8d8aa\' oru800 options \'u8d8b4u8d986u8d8a7u8d988u8d8b1\' andu800 options \'u8d8b4u8d986u8d8a7u8d988u8d8b1\' lower \'right\' oru800 options \'u8d8b4u8d986u8d8a7u8d988u8d8b1\' \'u8d8b1u8d8a7u8d8b3u8d8aa\' then shortcutlist addclass \'module shortcutboxright\' endu800 ifu800 optionsu82eclear andu800 optionsu82eclear   oru800 options \'u8d9beu8d8a7u8daa9u8e2808cu8daa9u8d986\' andu800 options \'u8d9beu8d8a7u8daa9u8e2808cu8daa9u8d986\'   then shortcutlist cssu800 \'clear\' optionsu82eclear oru800 options \'u8d9beu8d8a7u8daa9u8e2808cu8daa9u8d986\' endu800 ifu800 shortcutheading then shortcutlist tagu800 \'divu800\' addclass \'module shortcutlist\' wikitext shortcutheading endu800 local ublu800 require \'module list\' .unbulleted listitems shortcutlist wikitext ublu800 return tostring root endu800 function pu800u82emain frame local args require \'module arguments .getargs frame separate shortcuts from options local shortcuts options foru800 ku800 vu800 inu800 pairs args dou800 ifu800 type ku800 \'number\' then shortcuts ku800 vu800 else options ku800 vu800 endu800 endu800 compress theu800 shortcut array which mayu800 contain nils. local function compressarray tu800 local nums retu800 foru800 ku800 inu800 pairs tu800 dou800 nums #nums 1u800 ku800 endu800 tableu82esort nums foru800 iu800 numu800 inu800 ipairs nums dou800 retu800 iu800 tu800 numu800 endu800 return retu800 endu800 shortcuts compressarray shortcuts return pu800u82e_main shortcuts options frame endu800 return pu800 '),
(131, 'shortcut config', ' this module holds configuration data foru800 module shortcut . return theu800 heading atu800 theu800 topu800 ofu800 theu800 shortcut boxu800. itu800 accepts theu800 following parameter 1u800 theu800 total number ofu800 shortcuts. required \'shortcut heading\' \' u8d988u8db8cu8daa9u8db8cu8e2808cu8d9beu8d8afu8db8cu8d8a7 u8d985u8db8cu8d8a7u8d986u8d8a8u8d8b1 plural 1u800 u8d985u8db8cu8d8a7u8d986u8d8a8u8d8b1 u8d985u8db8cu8d8a7u8d986u8d8a8u8d8b1u8d987u8d8a7 \' theu800 heading when redirect yesu800 isu800 given. itu800 accepts theu800 following parameter 1u800 theu800 total number ofu800 shortcuts. required \'redirect heading\' \' u8d988u8db8cu8daa9u8db8cu8e2808cu8d9beu8d8afu8db8cu8d8a7 u8d8aau8d8bau8db8cu8db8cu8d8b1u8d985u8d8b3u8db8cu8d8b1 plural 1u800 u8d8aau8d8bau8db8cu8db8cu8d8b1u8d985u8d8b3u8db8cu8d8b1 u8d8aau8d8bau8db8cu8db8cu8d8b1u8d985u8d8b3u8db8cu8d8b1u8d987u8d8a7 \' theu800 error message tou800 display when au800 shortcut isu800 invalid isu800 notu800 au800 string oru800 isu800 theu800 blank string . itu800 accepts theu800 following parameter 1u800 theu800 number ofu800 theu800 shortcut inu800 theu800 argument list. required \'invalid shortcut error\' \'u8d985u8db8cu8d8a7u8d986u8d8a8u8d8b1 # 1u800 u8d986u8d8a7u8d985u8d8b9u8d8aau8d8a8u8d8b1 u8d8a7u8d8b3u8d8aa u8d985u8db8cu8d8a7u8d986u8d8a8u8d8b1u8d987u8d8a7 u8d8a8u8d8a7u8db8cu8d8af \' .. \'u8d8b1u8d8b4u8d8aau8d987u8e2808cu8d987u8d8a7u8db8cu8db8c u8d8a7u8d8b2 u8d8afu8d8b3u8d8aa u8daa9u8d985 u8db8cu8daa9 u8d986u8d988u8db8cu8d8b3u8d987 u8d8a8u8d8a7u8d8b4u8d986u8d8af \' theu800 error message tou800 display when nou800 shortcuts oru800 other displayable content were specified. required \'nou800 content error\' \'u8d8aeu8d8b7u8d8a7 u8d985u8db8cu8d8a7u8d986u8d8a8u8d8b1u8db8c u8d985u8d8b4u8d8aeu8d8b5 u8d986u8d8b4u8d8afu8d987u8e2808cu8d8a7u8d8b3u8d8aa u8d988 u8d9beu8d8a7u8d8b1u8d8a7u8d985u8d8aau8d8b1 \' .. mwu800u82etextu82enowiki \' msgu800 \' .. \' u8d8aau8d986u8d8b8u8db8cu8d985 u8d986u8d8b4u8d8afu8d987u8e2808cu8d8a7u8d8b3u8d8aa.\' au800 category tou800 addu800 when theu800 nou800 content error message isu800 displayed. optional \'nou800 content error category\' \'u8d8a7u8d984u8daafu8d988 u8d985u8db8cu8d8a7u8d986u8d8a8u8d8b1 u8d8a8u8d8afu8d988u8d986 u8d9beu8d8a7u8d8b1u8d8a7u8d985u8d8aau8d8b1\' theu800 error category tou800 addu800 ifu800 theu800 shortcut listed inu800 theu800 first parameter doesn\'tu800 exist. optional \'first parameter error category\' \'u8d9beu8d8a7u8d8b1u8d8a7u8d985u8d8aau8d8b1 u8d986u8d8aeu8d8b3u8d8aa u8d986u8db8cu8d8a7u8d8b2u8d985u8d986u8d8af u8d8a7u8d8b5u8d984u8d8a7u8d8ad u8d8acu8d8b9u8d8a8u8d987 u8d985u8db8cu8d8a7u8d986u8d8a8u8d8b1 u8d988u8db8cu8daa9u8db8cu8e2808cu8d9beu8d8afu8db8cu8d8a7\' '),
(132, 'side boxu800', ' local yesno require \'module yesno\' local pu800 local function makedata args local data main table classes datau82eclasses ifu800 yesno argsu82emetadata false then tableu82einsert datau82eclasses \'metadata\' endu800 ifu800 argsu82eposition andu800 argsu82eposition lower \'right\' oru800 argsu82eposition \'u8d8b1u8d8a7u8d8b3u8d8aa\' then tableu82einsert datau82eclasses \'side boxu800 right\' else tableu82einsert datau82eclasses \'side boxu800 left\' endu800 ifu800 argsu82ecollapsible then tableu82einsert datau82eclasses \'mwu800 collapsible\' ifu800 argsu82ecollapsible \"collapsed\" then tableu82einsert datau82eclasses \'mwu800 collapsed\' endu800 datau82ecollapsible true endu800 tableu82einsert datau82eclasses argsu82eclass image ifu800 argsu82eimage andu800 argsu82eimage \'none\' then datau82eimage argsu82eimage endu800 weu800 have tou800 check tou800 seeu800 ifu800 au800 downstream useu800 hasu800 plainlist like template sister_project. also itu800 itu800\'su800 theu800 default. wikitext isu800 ifu800 argsu82etextclass \'plainlist\' oru800 notu800 argsu82etextclass then datau82etextclass \'plainlist\' datau82eplainlist_templatestyles \'u8d981u8d987u8d8b1u8d8b3u8d8aa u8d8b3u8d8a7u8d8afu8d987 stylesu82ecssu800 else datau82etextclass argsu82etextclass endu800 copy over data that does notu800 need adjusting local argstocopy aria qualities \'role\' \'labelledby\' styles \'style\' \'textstyle\' \'templatestyles above rowu800 \'above\' \'abovestyle\' body rowu800 \'text\' \'imageleft\' below rowu800 \'below\' foru800 iu800 keyu800 inu800 ipairs argstocopy dou800 data keyu800 args keyu800 endu800 return data endu800 local function rendersidebox data renders theu800 sidebox html. table root local root mwu800u82ehtmlu82ecreate \'divu800\' root attr \'role\' datau82erole attr \'aria labelledby\' datau82elabelledby addclass \'side boxu800\' foru800 iu800 class inu800 ipairs datau82eclasses oru800 dou800 root addclass class endu800 ifu800 datau82estyle then root csstext datau82estyle endu800 local frame mwu800u82egetcurrentframe ifu800 datau82eplainlist_templatestyles then root wikitext frame extensiontag name \'templatestyles args srcu800 datau82eplainlist_templatestyles endu800 theu800 \"above\" rowu800 ifu800 datau82eabove then local above root newline tagu800 \'divu800\' above addclass \'side boxu800 abovebelow\' newline wikitext datau82eabove ifu800 datau82etextstyle then above csstext datau82etextstyle endu800 ifu800 datau82eabovestyle then above csstext datau82eabovestyle endu800 endu800 theu800 body rowu800 local body root newline tagu800 \'divu800\' body addclass \'side boxu800 flex\' addclass datau82ecollapsible andu800 \'mwu800 collapsible content\' newline ifu800 datau82eimage then body tagu800 \'divu800\' addclass \'side boxu800 image\' wikitext datau82eimage endu800 local text body newline tagu800 \'divu800\' text addclass \'side boxu800 text\' addclass datau82etextclass ifu800 datau82etextstyle then text csstext datau82etextstyle endu800 text wikitext datau82etext ifu800 datau82eimageright then body newline tagu800 \'divu800\' addclass \'side boxu800 imageright\' wikitext datau82eimageright endu800 theu800 below rowu800 ifu800 datau82ebelow then local below root newline tagu800 \'divu800\' below addclass \'side boxu800 abovebelow\' wikitext datau82ebelow ifu800 datau82etextstyle then below csstext datau82etextstyle endu800 endu800 root newline local templatestyles   ifu800 datau82etemplatestyles then templatestyles frame extensiontag name \'templatestyles args srcu800 datau82etemplatestyles endu800 return frame extensiontag name \'templatestyles args srcu800 \'module side boxu800 stylesu82ecssu800 .. templatestyles .. tostring root endu800 function pu800u82e_main args local data makedata args return rendersidebox data endu800 function pu800u82emain frame local origargs frame getparent .args local args foru800 ku800 vu800 inu800 pairs origargs dou800 vu800 vu800 match \' su800* . su800* \' ifu800 vu800   then args ku800 vu800 endu800 endu800 return pu800u82e_main args endu800 return pu800 '),
(133, 'side boxu800 stylesu82ecssu800', ' * ppu800 small yu800 * .side boxu800 margin 4pxu800 0u800; boxu800 sizing border boxu800; border 1pxu800 solid #aaau800; font size 88u800 ; line height 1u800u82e25em; background color varu800 background color interactive subtle #f8f9fa ; display flow root; .side boxu800 abovebelow .side boxu800 text padding 0u800u82e25em 0u800u82e9emu800; .side boxu800 image * noflip * padding 2pxu800 0u800u82e9emu800 2pxu800 0u800; text align center; .side boxu800 imageright * noflip * padding 2pxu800 0u800 2pxu800 0u800u82e9emu800; text align center; * roughly theu800 skin skin\'su800 sidebar size ofu800 side boxu800 * media minu800 width 500px .side boxu800 flex display flex; align items center; .side boxu800 text flex 1u800; minu800 width 0u800; media minu800 width 720px .side boxu800 width 238px; .side boxu800 left * noflip * clear left; * noflip * float left; * noflip * margin right 1emu800; * derives from mbox classes which dou800 notu800 float left inu800 mbox small left * sou800 faru800 asu800 iu800 canu800 tell that wasu800 au800 deliberate decision since only .ambox * supports mbox left * .side boxu800 right * noflip * margin left 1emu800; '),
(134, 'sidebar', ' this module implements sidebar require \'module nou800 globals local cfgu800 mwu800u82eloaddata \'module sidebar configuration\' local pu800 local getargs require \'module arguments .getargs categorizes calling templates andu800 modules with au800 \'style\' parameter ofu800 anyu800 sort foru800 tracking tou800 convert tou800 templatestyles. todo after au800 long cleanup catch sidebars inu800 other namespaces than template andu800 module. todo would probably want tou800 remove logu800 andu800 archive asu800 cs1u800 does local function categorizetemplateswithinlinestyles args local title mwu800u82etitleu82egetcurrenttitle ifu800 titleu82enamespace 10u800 andu800 titleu82enamespace 828u800 then return   endu800 foru800 _u800 pattern inu800 ipairs cfgu800u82ei18nu82epatternu82euncategorized_conversion_titles dou800 ifu800 titleu82etext match pattern then return   endu800 endu800 foru800 keyu800 _u800 inu800 pairs args dou800 ifu800 mwu800u82eustringu82efind keyu800 cfgu800u82ei18nu82epatternu82estyle_conversion oru800 keyu800 \'width\' then return cfgu800u82ei18nu82ecategoryu82econversion endu800 endu800 endu800 foru800 compatibility with theu800 original sidebar with collapsible lists implementation which passed some parameters through #ifu800 tou800 trim their whitespace. this also triggered theu800 automatic newline behavior. seeu800 meta help newlines andu800 spaces#automatic newline local function trimandaddautomaticnewline su800 su800 mwu800u82eustringu82egsub su800 \" su800* . su800* \" \" 1u800\" ifu800 mwu800u82eustringu82efind su800 \' #* ; \' oru800 mwu800u82eustringu82efind su800 \' \' then return \' nu800\' .. su800 else return su800 endu800 endu800 finds whether au800 sidebar hasu800 au800 subgroup sidebar. local function hassubgroup su800 ifu800 mwu800u82eustringu82efind su800 cfgu800u82ei18nu82epatternu82esubgroup then return true else return false endu800 endu800 main sidebar function. takes theu800 frame args andu800 anu800 optional collapsibleclass. theu800 collapsibleclass isu800 andu800 should beu800 used only foru800 sidebars with collapsible lists asu800 inu800 pu800u82ecollapsible. function pu800u82esidebar frame args collapsibleclass ifu800 notu800 args then args getargs frame endu800 local root mwu800u82ehtmlu82ecreate local child argsu82echild andu800 mwu800u82etextu82etrim argsu82echild cfgu800u82ei18nu82echild_yes root root tagu800 \'table\' ifu800 notu800 child then root addclass cfgu800u82ei18nu82eclassu82esidebar force collapsibleclass tou800 beu800 sidebar collapse otherwise output nothing addclass collapsibleclass cfgu800u82ei18nu82eclassu82ecollapse andu800 cfgu800u82ei18nu82eclassu82ecollapse oru800 nilu800 addclass \'nomobile\' addclass argsu82efloat cfgu800u82ei18nu82efloat_none andu800 cfgu800u82ei18nu82eclassu82efloat_none oru800 nilu800 addclass argsu82efloat cfgu800u82ei18nu82efloat_left andu800 cfgu800u82ei18nu82eclassu82efloat_left oru800 nilu800 addclass argsu82ewraplinks cfgu800u82ei18nu82ewrap_true andu800 cfgu800u82ei18nu82eclassu82ewraplinks oru800 nilu800 addclass argsu82ebodyclass oru800 argsu82eclass cssu800 \'width\' argsu82ewidth oru800 nilu800 csstext argsu82ebodystyle oru800 argsu82estyle ifu800 argsu82eoutertitle then root tagu800 \'caption\' addclass cfgu800u82ei18nu82eclassu82eouter_title addclass argsu82eoutertitleclass csstext argsu82eoutertitlestyle wikitext argsu82eoutertitle endu800 ifu800 argsu82etopimage then local imagecell root tagu800 \'tru800\' tagu800 \'tdu800\' imagecell addclass cfgu800u82ei18nu82eclassu82etop_image addclass argsu82etopimageclass csstext argsu82etopimagestyle wikitext argsu82etopimage ifu800 argsu82etopcaption then imagecell tagu800 \'divu800\' addclass cfgu800u82ei18nu82eclassu82etop_caption csstext argsu82etopcaptionstyle wikitext argsu82etopcaption endu800 endu800 ifu800 argsu82epretitle then root tagu800 \'tru800\' tagu800 \'tdu800\' addclass argsu82etopimage andu800 cfgu800u82ei18nu82eclassu82epretitle_with_top_image oru800 cfgu800u82ei18nu82eclassu82epretitle addclass argsu82epretitleclass csstext argsu82ebasestyle csstext argsu82epretitlestyle wikitext argsu82epretitle endu800 else root addclass cfgu800u82ei18nu82eclassu82esubgroup addclass argsu82ebodyclass oru800 argsu82eclass csstext argsu82ebodystyle oru800 argsu82estyle endu800 ifu800 argsu82etitle then ifu800 child then root wikitext argsu82etitle else root tagu800 \'tru800\' tagu800 \'thu800\' addclass argsu82epretitle andu800 cfgu800u82ei18nu82eclassu82etitle_with_pretitle oru800 cfgu800u82ei18nu82eclassu82etitle addclass argsu82etitleclass csstext argsu82ebasestyle csstext argsu82etitlestyle wikitext argsu82etitle endu800 endu800 ifu800 argsu82eimage then local imagecell root tagu800 \'tru800\' tagu800 \'tdu800\' imagecell addclass cfgu800u82ei18nu82eclassu82eimage addclass argsu82eimageclass csstext argsu82eimagestyle wikitext argsu82eimage ifu800 argsu82ecaption then imagecell tagu800 \'divu800\' addclass cfgu800u82ei18nu82eclassu82ecaption csstext argsu82ecaptionstyle wikitext argsu82ecaption endu800 endu800 ifu800 argsu82eabove then root tagu800 \'tru800\' tagu800 \'tdu800\' addclass cfgu800u82ei18nu82eclassu82eabove addclass argsu82eaboveclass csstext argsu82eabovestyle newline newline required foru800 bullet points tou800 work wikitext argsu82eabove endu800 local rownums foru800 ku800 vu800 inu800 pairs args dou800 ku800   .. ku800 local numu800 ku800 match \' heading du800 \' oru800 ku800 match \' content du800 \' ifu800 numu800 then tableu82einsert rownums tonumber numu800 endu800 endu800 tableu82esort rownums remove duplicates from theu800 list eu800u82egu800. 3u800 will beu800 duplicated ifu800 both heading3 andu800 content3 areu800 specified foru800 iu800 #rownums 1u800 1u800 dou800 ifu800 rownums iu800 rownums iu800 1u800 then tableu82eremove rownums iu800 endu800 endu800 foru800 iu800 numu800 inu800 ipairs rownums dou800 local heading args \'heading\' .. numu800 ifu800 heading then root tagu800 \'tru800\' tagu800 \'thu800\' addclass cfgu800u82ei18nu82eclassu82eheading addclass argsu82eheadingclass addclass args \'heading\' .. numu800 .. \'class csstext argsu82ebasestyle csstext argsu82eheadingstyle csstext args \'heading\' .. numu800 .. \'style\' newline wikitext heading endu800 local content args \'content\' .. numu800 ifu800 content then root tagu800 \'tru800\' tagu800 \'tdu800\' addclass hassubgroup content andu800 cfgu800u82ei18nu82eclassu82econtent_with_subgroup oru800 cfgu800u82ei18nu82eclassu82econtent addclass argsu82econtentclass addclass args \'content\' .. numu800 .. \'class csstext argsu82econtentstyle csstext args \'content\' .. numu800 .. \'style\' newline wikitext content done without au800 linebreak after theu800 au800 nested list like \"* hlist ... \" doesn\'tu800 parse correctly. newline endu800 endu800 ifu800 argsu82ebelow then root tagu800 \'tru800\' tagu800 \'tdu800\' addclass cfgu800u82ei18nu82eclassu82ebelow addclass argsu82ebelowclass csstext argsu82ebelowstyle newline wikitext argsu82ebelow endu800 ifu800 notu800 child then ifu800 argsu82enavbar cfgu800u82ei18nu82enavbar_none andu800 argsu82enavbar cfgu800u82ei18nu82enavbar_off andu800 argsu82ename oru800 frame getparent gettitle gsub cfgu800u82ei18nu82epatternu82esandbox   cfgu800u82ei18nu82etitle_not_to_add_navbar then root tagu800 \'tru800\' tagu800 \'tdu800\' addclass cfgu800u82ei18nu82eclassu82enavbar csstext argsu82enavbarstyle wikitext require \'module navbar\' ._navbar argsu82ename mini 1u800 fontstyle argsu82enavbarfontstyle endu800 endu800 local base_templatestyles frame extensiontag name \'templatestyles args srcu800 cfgu800u82ei18nu82etemplatestyles local templatestyles   ifu800 args \'templatestyles andu800 args \'templatestyles   then templatestyles frame extensiontag name \'templatestyles args srcu800 args \'templatestyles endu800 local child_templatestyles   ifu800 args \'child templatestyles andu800 args \'child templatestyles   then child_templatestyles frame extensiontag name \'templatestyles args srcu800 args \'child templatestyles endu800 local grandchild_templatestyles   ifu800 args \'grandchild templatestyles andu800 args \'grandchild templatestyles   then grandchild_templatestyles frame extensiontag name \'templatestyles args srcu800 args \'grandchild templatestyles endu800 return tableu82econcat base_templatestyles templatestyles child_templatestyles grandchild_templatestyles tostring root child andu800 cfgu800u82ei18nu82ecategoryu82echild oru800   categorizetemplateswithinlinestyles args endu800 main entry point foru800 sidebar with collapsible lists. does theu800 work ofu800 creating theu800 collapsible lists themselves andu800 including them into theu800 args. function pu800u82ecollapsible frame local args getargs frame ifu800 notu800 argsu82ename andu800 frame getparent gettitle gsub cfgu800u82ei18nu82epatternu82ecollapse_sandbox   cfgu800u82ei18nu82ecollapse_title_not_to_add_navbar then argsu82enavbar cfgu800u82ei18nu82enavbar_none endu800 local contentargs foru800 ku800 vu800 inu800 pairs args dou800 local numu800 stringu82ematch ku800 \' list du800 \' ifu800 numu800 then local expand argsu82eexpanded andu800 argsu82eexpanded \'allu800\' oru800 argsu82eexpanded args \'list\' .. numu800 .. \'name\' local rowu800 mwu800u82ehtmlu82ecreate \'divu800\' rowu800 addclass cfgu800u82ei18nu82eclassu82elist addclass \'mwu800 collapsible\' addclass notu800 expand andu800 \'mwu800 collapsed\' oru800 nilu800 addclass args \'list\' .. numu800 .. \'class csstext argsu82elistframestyle csstext args \'list\' .. numu800 .. \'framestyle\' tagu800 \'divu800\' addclass cfgu800u82ei18nu82eclassu82elist_title donu800\'tu800 need au800 listnumtitleclass because youu800 canu800 dou800 .templateclass .listnumclass .sidebar list title addclass argsu82elisttitleclass csstext argsu82ebasestyle csstext argsu82elisttitlestyle csstext args \'list\' .. numu800 .. \'titlestyle\' wikitext trimandaddautomaticnewline args \'list\' .. numu800 .. \'title\' oru800 cfgu800u82ei18nu82edefault_list_title done tagu800 \'divu800\' addclass cfgu800u82ei18nu82eclassu82elist_content addclass \'mwu800 collapsible content\' donu800\'tu800 need au800 listnumstyleclass because youu800 canu800 dou800 .templatename .listnumclass .sidebar list addclass argsu82elistclass csstext argsu82eliststyle csstext args \'list\' .. numu800 .. \'style\' wikitext trimandaddautomaticnewline args \'list\' .. numu800 contentargs \'content\' .. numu800 tostring rowu800 endu800 endu800 foru800 ku800 vu800 inu800 pairs contentargs dou800 args ku800 vu800 endu800 return pu800u82esidebar frame args cfgu800u82ei18nu82eclassu82ecollapse endu800 return pu800 '),
(135, 'sidebar configuration', ' return i18n child_yes \'yesu800 float_none \'none\' float_left \'right\' wrap_true \'true\' navbar_none \'none\' navbar_off \'offu800\' default_list_title \'u8d981u8d987u8d8b1u8d8b3u8d8aa\' title_not_to_add_navbar \'template sidebar\' collapse_title_not_to_add_navbar \'template sidebar with collapsible lists templatestyles \'module sidebar stylesu82ecssu800 category child \' u8d8b1u8d8afu8d987 u8d8b5u8d981u8d8adu8d987u8e2808cu8d987u8d8a7u8db8cu8db8c u8daa9u8d987 u8d8a7u8d8b2 u8d986u8d988u8d8a7u8d8b1 u8daa9u8d986u8d8a7u8d8b1u8db8c u8d8a8u8d8a7 u8d9beu8d8a7u8d8b1u8d8a7u8d985u8d8aau8d8b1 u8d981u8d8b1u8d8b2u8d986u8d8af u8d8a7u8d8b3u8d8aau8d981u8d8a7u8d8afu8d987 u8d985u8db8cu8e2808cu8daa9u8d986u8d986u8d8af \' conversion \' u8d8b1u8d8afu8d987 u8d986u8d988u8d8a7u8d8b1u8d987u8d8a7u8db8c u8daa9u8d986u8d8a7u8d8b1u8db8c u8d8a8u8d8a7 u8d8b3u8d8a8u8daa9 u8d986u8db8cu8d8a7u8d8b2u8d985u8d986u8d8af u8d8aau8d8a8u8d8afu8db8cu8d984 \' pattern collapse_sandbox \' u8d8b5u8d981u8d8adu8d987 u8d8aau8d985u8d8b1u8db8cu8d986\' sandbox \' u8d8b5u8d981u8d8adu8d987 u8d8aau8d985u8d8b1u8db8cu8d986\' subgroup \'sidebar subgroup\' style_conversion \'style \' uncategorized_conversion_titles \' ssu800 andbox\' \' ttu800 estcases \' ddu800 ocu800 \' class sidebar \'sidebar\' subgroup \'sidebar subgroup\' collapse \'sidebar collapse\' float_none \'sidebar none\' float_left \'sidebar left\' wraplinks \'sidebar wraplinks outer_title \'sidebar outer title\' top_image \'sidebar topu800 image\' top_caption \'sidebar topu800 caption\' pretitle \'sidebar pretitle\' pretitle_with_top_image \'sidebar pretitle with topu800 image\' title \'sidebar title\' title_with_pretitle \'sidebar title with pretitle\' image \'sidebar image\' caption \'sidebar caption\' above \'sidebar above\' heading \'sidebar heading\' content \'sidebar content\' content_with_subgroup \'sidebar content with subgroup\' below \'sidebar below\' navbar \'sidebar navbar\' list \'sidebar list\' list_title \'sidebar list title\' list_content \'sidebar list content\' ');
INSERT INTO `searchindex` (`si_page`, `si_title`, `si_text`) VALUES
(136, 'sidebar stylesu82ecssu800', ' * ppu800 template * * todo invert width design tou800 beu800 \"mobile first\" * .sidebar * todo asku800 ifu800 weu800 should have maxu800 width 22em instead * width 22em; * noflip * float left; * noflip * clear left; * noflip * margin 0u800u82e5emu800 1emu800 1emu800 0u800; background #f8f9fa; border 1pxu800 solid #aaau800; padding 0u800u82e2emu800; border spacing 0u800u82e4emu800 0u800; text align center; line height 1u800u82e4emu800; font size 88u800 ; * timeless hasu800 display none onu800 .nomobile atu800 mobile resolutions sou800 weu800 * unhide itu800 with display table andu800 letu800 precedence andu800 proximity winu800. * display table; * unfortunately sou800 does minerva desktop except minerva drops anu800 * important onu800 theu800 declaration. sou800 weu800 have tou800 beu800 mean foru800 minerva users. * mobile removes theu800 element entirely with wgmfremovableclasses inu800 * wmfu800 config initialisesettingsu82ephpu800#l16992 * which isu800 whyu800 displaying itu800 categorically with display table works. * weu800 donu800\'tu800 really want tou800 expose theu800 generic user inu800 theu800 wild onu800 mobile tou800 have * tou800 deal with sidebars. maybe theu800 ones with collapsible lists sou800 that * might beu800 anu800 improvement. that isu800 blocked onu800 phab t111565 . * bodyu82eskin minerva .sidebar display table important; * also minerva isu800 wayu800 toou800 aggressive about other stylings onu800 tables. * todo remove when this template gets moved tou800 au800 divu800. plans onu800 talk page. * weu800 always float right onu800 minerva because that that\'su800 au800 lotu800 ofu800 extra cssu800 * otherwise. * float left important; margin 0u800u82e5emu800 0u800 1emu800 1emu800 important; .sidebar au800 white space nowrap; .sidebar wraplinks au800 white space normal; .sidebar subgroup width 100u800 ; margin 0u800; border spacing 0u800; * todo investigate whether left andu800 none areu800 used. * .sidebar left * noflip * float right; * noflip * clear right; * noflip * margin 0u800u82e5emu800 1emu800 1emu800 0u800; .sidebar none float none; clear both; * noflip * margin 0u800u82e5emu800 1emu800 1emu800 0u800; .sidebar outer title padding bottom 0u800u82e2emu800; font size 125u800 ; line height 1u800u82e2emu800; font weight bold; .sidebar topu800 image padding 0u800u82e4emu800 0u800; .sidebar topu800 caption .sidebar pretitle with topu800 image .sidebar caption padding topu800 0u800u82e2emu800; line height 1u800u82e2emu800; .sidebar pretitle padding topu800 0u800u82e4emu800; line height 1u800u82e2emu800; .sidebar title .sidebar title with pretitle padding 0u800u82e2emu800 0u800u82e4emu800; font size 145u800 ; line height 1u800u82e2emu800; .sidebar title with pretitle padding topu800 0u800; .sidebar image padding 0u800u82e2emu800 0u800 0u800u82e4emu800; .sidebar heading padding 0u800u82e1emu800; .sidebar content padding 0u800 0u800u82e1emu800 0u800u82e4emu800; .sidebar content with subgroup padding 0u800u82e1emu800 0u800 0u800u82e2emu800; .sidebar above .sidebar below padding 0u800u82e3emu800 0u800u82e4emu800; font weight bold; .sidebar collapse .sidebar above .sidebar collapse .sidebar below border topu800 1pxu800 solid #aaau800; border bottom 1pxu800 solid #aaau800; .sidebar navbar text align left; font size 115u800 ; .sidebar collapse .sidebar navbar padding topu800 0u800u82e6emu800; .sidebar collapse .mwu800 collapsible toggle margin topu800 0u800u82e2emu800; .sidebar list title text align right; font weight bold; line height 1u800u82e6emu800; font size 105u800 ; media maxu800 width 720px * users have wide latitude tou800 setu800 arbitrary width andu800 margin \"super specific\" selector tou800 prevent overriding this appearance byu800 lower level sidebars toou800 * bodyu82emediawiki .sidebar width 100u800 important; clear both; float none important; * remove when weu800 divu800 based; minerva isu800 dumb * margin left 0u800 important; margin right 0u800 important; * todo weu800 might consider making allu800 links wrap atu800 small resolutions andu800 then * only introduce nowrap atu800 higher resolutions. dou800 when weu800 invert theu800 media * query. * '),
(137, 'sister project links', ' module tou800 create sister project link boxu800 local getargs require \'module arguments .getargs local commonslink require \'module commons link\' local pu800 function tou800 canonicalize string search foru800 variants ofu800 \"yesu800\" andu800 \"nou800\" andu800 transform them into au800 standard form like template yesno argument su800 input string result xu800 yu800 list ofu800 length 2u800 xu800 nilu800 ifu800 su800 isu800 canonicalized otherwise hasu800 trimmed su800 yu800 canonical form ofu800 su800 true ifu800 \"yesu800\" oru800 other false ifu800 \"nou800\" nilu800 ifu800 blank local function canonicalize su800 ifu800 su800 nilu800 then return nilu800 nilu800 endu800 su800 mwu800u82etextu82etrim tostring su800 ifu800 su800 \"\" then return nilu800 nilu800 endu800 lowers su800 lower check foru800 various forms ofu800 \"yesu800\" ifu800 lowers \'yesu800 oru800 lowers \'yu800\' oru800 lowers \'tu800\' oru800 lowers \'u8d8a8u8d984u8d987\' oru800 lowers \'1u800\' oru800 lowers \'true\' oru800 lowers \'onu800\' then return nilu800 true endu800 check foru800 various forms ofu800 \"nou800\" ifu800 lowers \'nou800\' oru800 lowers \'nu800\' oru800 lowers \'fu800\' oru800 lowers \'u8d8aeu8db8cu8d8b1\' oru800 lowers \'u8d986u8d987\' oru800 lowers \'0u800\' oru800 lowers \'false\' oru800 lowers \'offu800\'then return nilu800 false endu800 neither yesu800 noru800 nou800 recognized leave string trimmed return su800 true endu800 merge twou800 oru800 more canonicalized argument lists arguments arglist list ofu800 canonicalized arguments noall ifu800 true return nou800 when allu800 arglist isu800 nou800. otherwise return blank when allu800 arglist isu800 blank local function mergeargs arglist noall local test nilu800 default return blank ifu800 allu800 blank ifu800 noall then test false return nou800 ifu800 allu800 nou800 endu800 local allsame true search through string foru800 first nonu800 nou800 oru800 nonu800 blank foru800 _u800 argu800 inu800 ipairs arglist dou800 ifu800 argu800 2u800 then return argu800 found nonu800 nou800 andu800 nonu800 blank return itu800 endu800 test tou800 seeu800 ifu800 arglist isu800 allu800 blank nou800 allsame allsame andu800 argu800 2u800 test endu800 ifu800 allu800 blank nou800 return blank nou800 ifu800 allsame then return nilu800 test allu800 match nou800 blank return itu800 endu800 otherwise return nou800 blank ifu800 noall then return nilu800 nilu800 endu800 return nilu800 false endu800 function tou800 getu800 sitelink foru800 au800 wiki arguments wiki dbu800 name ofu800 wiki tou800 lookup qidu800 qidu800 ofu800 entity tou800 search foru800 current page entity byu800 default local function getsitelink wiki qidu800 qidu800 qidu800 oru800 mwu800u82ewikibaseu82egetentityidforcurrentpage qidu800 qidu800 andu800 qidu800 upper return nilu800 ifu800 some sort ofu800 lookup failure return qidu800 andu800 mwu800u82ewikibaseu82egetsitelink qidu800 wiki endu800 local wdmismatch nilu800 local wdnamespace nilu800 local wdhidden nilu800 local defaultsearch nilu800 function tou800 generate theu800 sister link itself arguments args argument table foru800 function args 1u800 canonicalized page tou800 fetch argsu82edefault link when blank argsu82eauto newu800 auto mode donu800\'tu800 fall back tou800 search argsu82esitelink wikidata sitelink ifu800 available argsu82esisterdbname dbu800 name ofu800 sister site tou800 getu800 sitelink argsu82eqidu800 qidu800 ofu800 entity argsu82esearch fallback string tou800 search foru800 argsu82esisterprefix wikitext prefix foru800 sister site argsu82einformation type ofu800 info sister site contains argsu82esistername friendly human name ofu800 sister site function pu800u82e_sisterlink args ifu800 args 1u800 2u800 false oru800 notu800 argsu82edefault andu800 args 1u800 2u800 nilu800 then return nilu800 either editor specified \"nou800\" oru800 \"blank\" andu800 default nou800 then skip this sister endu800 local sitelink argsu82esitelink oru800 argsu82esisterdbname andu800 getsitelink argsu82esisterdbname argsu82eqidu800 ifu800 argsu82eauto andu800 notu800 sitelink andu800 args 1u800 2u800 nilu800 then return nilu800 inu800 auto mode ifu800 link isu800 blank andu800 nou800 sitelink then skip endu800 fallback order ofu800 sister link first specified page then wikidata then search local link args 1u800 1u800 oru800 sitelink oru800 argsu82esearch andu800 \"special \"..argsu82esearch ifu800 notu800 link then return nilu800 nou800 link found just skip endu800 update state foru800 tracking categories ifu800 args 1u800 1u800 andu800 sitelink then transform supplied page name tou800 beu800 inu800 wiki format local page mwu800u82eustringu82egsub args 1u800 1u800 \"_u800\" \" \" page mwu800u82eustringu82esubu800 page 1u800 1u800 upper ..mwu800u82eustringu82esubu800 page 2u800 local pagens mwu800u82eustringu82ematch page \" \" local sitelinkns mwu800u82eustringu82ematch sitelink \" \" ifu800 page sitelink then wdhidden argsu82esisterprefix elseif pagens sitelinkns then wdnamespace argsu82esisterprefix else wdmismatch argsu82esisterprefix endu800 ifu800 nou800 page link noru800 au800 wikidata entry andu800 search isu800 onu800 then warn elseif notu800 args 1u800 2u800 oru800 sitelink andu800 argsu82esearch then defaultsearch argsu82esisterprefix endu800 return \" \"..argsu82esisterprefix..\" \"..link..\" \"..argsu82einformation ..\" u8d8a7u8d8b2 \"..argsu82esistername endu800 function tou800 generate html foru800 oneu800 sister link arguments container parent html object args argument table foru800 function args 1u800 canonicalized page tou800 fetch argsu82edefault link when blank argsu82eauto newu800 auto mode donu800\'tu800 fall back tou800 search argsu82esitelink wikidata sitelink ifu800 available argsu82esisterdbname dbu800 name ofu800 sister site tou800 getu800 sitelink argsu82eqidu800 qidu800 ofu800 entity foru800 debugging argsu82esearch fallback string tou800 search foru800 argsu82elogo filename ofu800 sister logo nou800 namespace argsu82esisterprefix wikitext prefix foru800 sister site argsu82einformation type ofu800 info sister site contains argsu82esistername friendly human name ofu800 sister site local function onesister container args local link pu800u82e_sisterlink args ifu800 notu800 link then return nilu800 endu800 local liu800 container andu800 container tagu800 \'liu800\' oru800 mwu800u82ehtmlu82ecreate \'liu800\' liu800 cssu800 \"minu800 height\" \"31px\" html element foru800 27px high logo local logo liu800 tagu800 \'span\' logo cssu800 \"display\" \"inline block\" logo cssu800 \"width\" \"31px\" logo cssu800 \"line height\" \"31px\" logo cssu800 \"vertical align\" \"middle\" logo cssu800 \"text align\" \"center\" logo wikitext \" u8d9beu8d8b1u8d988u8d986u8d8afu8d987 \"..argsu82elogo..\" 27x27px middle link altu800 \" html element foru800 link local linkspan liu800 tagu800 \'span\' linkspan cssu800 \"display\" \"inline block\" linkspan cssu800 \"margin right\" \"4pxu800\" linkspan cssu800 \"width\" \"182px\" linkspan cssu800 \"vertical align\" \"middle\" linkspan wikitext link return liu800 endu800 function tou800 create html containers foru800 sister project link list arguments args table ofu800 arguments argsu82eposition ifu800 \'left\' position links tou800 left argsu82ecollapsible ifu800 nonu800 empty make boxu800 collapsible. ifu800 \'collapse\' start boxu800 hidden argsu82estyle cssu800 style string appended tou800 endu800 ofu800 default cssu800 argsu82edisplay boldface name tou800 display local function createcontainer args outermost divu800 cssu800 from previous version ofu800 template project sister links local container mwu800u82ehtmlu82ecreate \'divu800\' container attr \"role\" \"navigation\" container attr \"aria labelledby\" \"sister projects\" container addclass \"metadata\" container addclass \"plainlinks\" container addclass \"sistersitebox\" container addclass \"plainlist\" ifu800 argsu82eposition andu800 argsu82eposition lower \"right\" oru800 argsu82eposition \"u8d8b1u8d8a7u8d8b3u8d8aa\" then container addclass \"mbox small right\" else container addclass \"mbox small\" endu800 ifu800 argsu82ecollapsible then container addclass \"mwu800 collapsible\" ifu800 argsu82ecollapsible \"collapsed\" then container addclass \"mwu800 collapsed\" endu800 endu800 container cssu800 \"border\" \"1pxu800 solid #aaau800\" container cssu800 \"padding\" 0u800 container cssu800 \"background\" \"#f9f9f9\" container csstext argsu82estyle divu800 foru800 text header local header container tagu800 \'divu800\' header cssu800 \"clear\" argsu82ecollapsible andu800 \"both\" header cssu800 \"padding\" \"0u800u82e75em 0u800\" header cssu800 \"text align\" \"center\" pagename inu800 bold asu800 part ofu800 header local pagename header tagu800 \'bu800\' pagename cssu800 \"display\" \"block\" pagename wikitext argsu82edisplay oru800 args 1u800 local headertext \"u8d8afu8d8b1 u8d988u8db8cu8daa9u8db8cu8e2808cu8d9beu8d8afu8db8cu8d8a7 u8d9beu8d8b1u8d988u8da98u8d987u8e2808cu8d987u8d8a7u8db8c u8d8aeu8d988u8d8a7u8d987u8d8b1 u8d988u8db8cu8daa9u8db8cu8e2808cu8d985u8d8afu8db8cu8d8a7 \" headertext headertext..\' u8d9beu8d8b1u8d988u8da98u8d987u8e2808cu8d987u8d8a7u8db8c u8d8aeu8d988u8d8a7u8d987u8d8b1 u8d988u8db8cu8daa9u8db8cu8e2808cu8d9beu8d8afu8db8cu8d8a7\' header wikitext headertext start theu800 unordered list element here local ulu800 container tagu800 \'ulu800\' ulu800 addclass argsu82ecollapsible andu800 \"mwu800 collapsible content\" ulu800 cssu800 \"border topu800\" \"1pxu800 solid #aaau800\" ulu800 cssu800 \"padding\" \"0u800u82e75em 0u800\" ulu800 cssu800 \"width\" \"217px\" ulu800 cssu800 \"margin\" \"0u800 auto\" pass ulu800 element back tou800 main sou800 sister links canu800 beu800 added return ulu800 endu800 function pu800u82e_main args local titleobject mwu800u82etitleu82egetcurrenttitle default title search string isu800 pagename args 1u800 args 1u800 oru800 titleobjectu82etext persian wikipedia specific arguments translator ifu800 args \"u8d981u8d8b1u8d8a7u8d988u8db8cu8daa9u8db8c\" then args \"mu800\" args \"u8d981u8d8b1u8d8a7u8d988u8db8cu8daa9u8db8c\" endu800 ifu800 args \"u8d985u8d8afu8db8cu8d8a7u8d988u8db8cu8daa9u8db8c\" then args \"mwu800\" args \"u8d985u8d8afu8db8cu8d8a7u8d988u8db8cu8daa9u8db8c\" endu800 ifu800 args \"u8d988u8db8cu8daa9u8db8cu8e2808cu8d8a7u8d986u8d8a8u8d8a7u8d8b1\" then args \"commons\" args \"u8d988u8db8cu8daa9u8db8cu8e2808cu8d8a7u8d986u8d8a8u8d8a7u8d8b1\" endu800 ifu800 args \"u8d8b1u8d8afu8d987_u8d8a7u8d986u8d8a8u8d8a7u8d8b1\" then args \"commonscat\" args \"u8d8b1u8d8afu8d987_u8d8a7u8d986u8d8a8u8d8a7u8d8b1\" endu800 ifu800 args \"u8d988u8db8cu8daa9u8db8cu8e2808cu8d8afu8d8a7u8d8afu8d987\" then args \"du800\" args \"u8d988u8db8cu8daa9u8db8cu8e2808cu8d8afu8d8a7u8d8afu8d987\" endu800 ifu800 args \"u8d988u8db8cu8daa9u8db8cu8e2808cu8d8afu8d8a7u8d986u8d8b4u8daafu8d8a7u8d987\" then args \"vu800\" args \"u8d988u8db8cu8daa9u8db8cu8e2808cu8d8afu8d8a7u8d986u8d8b4u8daafu8d8a7u8d987\" endu800 ifu800 args \"u8d988u8db8cu8daa9u8db8cu8e2808cu8d8aeu8d8a8u8d8b1\" then args \"nu800\" args \"u8d988u8db8cu8daa9u8db8cu8e2808cu8d8aeu8d8a8u8d8b1\" endu800 ifu800 args \"u8d988u8db8cu8daa9u8db8cu8e2808cu8d8b3u8d981u8d8b1\" then args \"voyu800\" args \"u8d988u8db8cu8daa9u8db8cu8e2808cu8d8b3u8d981u8d8b1\" endu800 ifu800 args \"u8d988u8db8cu8daa9u8db8cu8e2808cu8daa9u8d8aau8d8a7u8d8a8\" then args \"bu800\" args \"u8d988u8db8cu8daa9u8db8cu8e2808cu8daa9u8d8aau8d8a7u8d8a8\" endu800 ifu800 args \"u8d988u8db8cu8daa9u8db8cu8e2808cu8d986u8d8b3u8daa9\" then args \"bu800\" args \"u8d988u8db8cu8daa9u8db8cu8e2808cu8d986u8d8b3u8daa9\" endu800 ifu800 args \"u8d988u8db8cu8daa9u8db8cu8e2808cu8daafu8d981u8d8aau8d8a7u8d988u8d8b1u8d8af\" then args \"qu800\" args \"u8d988u8db8cu8daa9u8db8cu8e2808cu8daafu8d981u8d8aau8d8a7u8d988u8d8b1u8d8af\" endu800 ifu800 args \"u8d988u8db8cu8daa9u8db8cu8e2808cu8daafu8d988u8d986u8d987\" then args \"species\" args \"u8d988u8db8cu8daa9u8db8cu8e2808cu8daafu8d988u8d986u8d987\" endu800 ifu800 args \"u8daafu8d988u8d986u8d987\" then args \"species\" args \"u8daafu8d988u8d986u8d987\" endu800 ifu800 args \"u8d986u8d988u8db8cu8d8b3u8d986u8d8afu8d987_u8daafu8d988u8d986u8d987\" then args \"species_author\" args \"u8d986u8d988u8db8cu8d8b3u8d986u8d8afu8d987_u8daafu8d988u8d986u8d987\" endu800 ifu800 args \"u8d988u8db8cu8daa9u8db8cu8e2808cu8d986u8d8a8u8d8b4u8d8aau8d987\" then args \"su800\" args \"u8d988u8db8cu8daa9u8db8cu8e2808cu8d986u8d8a8u8d8b4u8d8aau8d987\" endu800 ifu800 args \"u8d986u8d988u8db8cu8d8b3u8d986u8d8afu8d987\" then args \"author\" args \"u8d986u8d988u8db8cu8d8b3u8d986u8d8afu8d987\" endu800 ifu800 args \"u8d988u8db8cu8daa9u8db8cu8e2808cu8d988u8d8a7u8da98u8d987\" then args \"wikt\" args \"u8d988u8db8cu8daa9u8db8cu8e2808cu8d988u8d8a7u8da98u8d987\" endu800 boxu800 styling andu800 other parameters ifu800 args \"u8d8acu8d985u8d8b9u8e2808cu8d8b4u8d988u8d986u8d8afu8d987\" then args \"collapsible\" args \"u8d8acu8d985u8d8b9u8e2808cu8d8b4u8d988u8d986u8d8afu8d987\" endu800 ifu800 args \"u8d8aeu8d988u8d8afu8daa9u8d8a7u8d8b1\" then args \"auto\" args \"u8d8aeu8d988u8d8afu8daa9u8d8a7u8d8b1\" endu800 ifu800 args \"u8d8b3u8d8a8u8daa9\" then args \"style\" args \"u8d8b3u8d8a8u8daa9\" endu800 ifu800 args \"u8d985u8d988u8d982u8d8b9u8db8cu8d8aa\" then args \"position\" args \"u8d985u8d988u8d982u8d8b9u8db8cu8d8aa\" endu800 ifu800 args \"u8d986u8d985u8d8a7u8db8cu8d8b4\" then args \"display\" args \"u8d986u8d985u8d8a7u8db8cu8d8b4\" endu800 canonicalize allu800 sister links handle yesu800 nou800 empty foru800 _u800 ku800 inu800 pairs \"wikt\" \"cu800\" \"commons\" \"nu800\" \"qu800\" \"su800\" \"bu800\" \"voyu800\" \"vu800\" \"du800\" \"species\" \"species_author\" \"mu800\" \"mwu800\" dou800 args ku800 canonicalize args ku800 endu800 canonicalize general parameters foru800 _u800 ku800 inu800 pairs \"auto\" \"commonscat\" \"author\" dou800 args ku800 canonicalize args ku800 2u800 endu800 fill inu800 argsu82eqidu800 with current qidu800 ifu800 available argsu82eqidu800 argsu82eqidu800 oru800 mwu800u82ewikibaseu82egetentityidforcurrentpage argsu82eqidu800 argsu82eqidu800 andu800 argsu82eqidu800 upper initialize tracking categories tou800 \"nou800 track\" wdmismatch nilu800 wdnamespace nilu800 wdhidden nilu800 defaultsearch nilu800 local ulu800 createcontainer args wiktionary onesister ulu800 argsu82ewikt auto argsu82eauto qidu800 argsu82eqidu800 default true logo \"wiktionary logo v2u800u82esvgu800\" sisterprefix \"wikt\" search \"search \"..args 1u800 information \"u8d8afu8d8b1 u8d985u8db8cu8d8a7u8d986 u8d988u8d8a7u8da98u8d987u8e2808cu8d987u8d8a7\" sistername \"u8d988u8db8cu8daa9u8db8cu8e2808cu8d988u8d8a7u8da98u8d987\" sisterdbname \"fawiktionary\" commons useu800 module commons link tou800 determine best commons link local clink notu800 argsu82ecommonscat andu800 commonslinku82e_hasgallery argsu82eqidu800 oru800 commonslinku82e_hascategory argsu82eqidu800 local commonspage mergeargs argsu82ecu800 argsu82ecommons ifu800 commonspage 1u800 andu800 notu800 mwu800u82eustringu82ematch commonspage 1u800 lower \" category \" then commonspage 1u800 argsu82ecommonscat andu800 \"category \" oru800 \"\" ..commonspage 1u800 endu800 local commonssearch \"search \".. argsu82ecommonscat andu800 \"category \" oru800 \"\" ..args 1u800 onesister ulu800 commonspage auto argsu82eauto qidu800 argsu82eqidu800 default true sitelink clink logo \"commons logou82esvgu800\" sisterprefix \"cu800\" search commonssearch information \"u8d8afu8d8b1 u8d985u8db8cu8d8a7u8d986 u8d8aau8d8b5u8d8a7u8d988u8db8cu8d8b1 u8d988 u8d8b1u8d8b3u8d8a7u8d986u8d987u8e2808cu8d987u8d8a7\" sistername \"u8d988u8db8cu8daa9u8db8cu8e2808cu8d8a7u8d986u8d8a8u8d8a7u8d8b1\" wikinews onesister ulu800 argsu82enu800 auto argsu82eauto qidu800 argsu82eqidu800 default true logo \"wikinews logou82esvgu800\" sisterprefix \"nu800\" search \"search \"..args 1u800 information \"u8d8afu8d8b1 u8d985u8db8cu8d8a7u8d986 u8d8aeu8d8a8u8d8b1u8d987u8d8a7\" sistername \"u8d988u8db8cu8daa9u8db8cu8e2808cu8d8aeu8d8a8u8d8b1\" sisterdbname \"fawikinews\" wikiquote onesister ulu800 argsu82equ800 auto argsu82eauto qidu800 argsu82eqidu800 default true logo \"wikiquote logou82esvgu800\" sisterprefix \"qu800\" search \"search \"..args 1u800 information \"u8d8afu8d8b1 u8d985u8db8cu8d8a7u8d986 u8daafu8d981u8d8aau8d8a7u8d988u8d8b1u8d8afu8d987u8d8a7\" sistername \"u8d988u8db8cu8daa9u8db8cu8e2808cu8daafu8d981u8d8aau8d8a7u8d988u8d8b1u8d8af\" sisterdbname \"fawikiquote\" wikisource ifu800 argsu82eauthor andu800 argsu82esu800 1u800 then argsu82esu800 1u800 \"u8d9beu8d8afu8db8cu8d8afu8d8a2u8d988u8d8b1u8d986u8d8afu8d987 \"..argsu82esu800 1u800 endu800 onesister ulu800 argsu82esu800 auto argsu82eauto qidu800 argsu82eqidu800 default true logo \"wikisource logou82esvgu800\" sisterprefix \"su800\" search \"search \"..args 1u800 information \"u8d8afu8d8b1 u8d985u8db8cu8d8a7u8d986 u8d985u8d8aau8d988u8d986\" sistername \"u8d988u8db8cu8daa9u8db8cu8e2808cu8d986u8d8a8u8d8b4u8d8aau8d987\" sisterdbname \"fawikisource\" wikibooks onesister ulu800 argsu82ebu800 auto argsu82eauto qidu800 argsu82eqidu800 default true logo \"wikibooks logou82esvgu800\" sisterprefix \"bu800\" search \"search \"..args 1u800 information \"u8d8afu8d8b1 u8d985u8db8cu8d8a7u8d986 u8daa9u8d8aau8d8a7u8d8a8u8e2808cu8d987u8d8a7\" sistername \"u8d988u8db8cu8daa9u8db8cu8e2808cu8daa9u8d8aau8d8a7u8d8a8\" sisterdbname \"fawikibooks\" wikivoyage information \"guide\" when weu800 canu800 beu800 assured that search cannot beu800 called local voyinfo argsu82evoyu800 1u800 oru800 argsu82evoyu800 2u800 nilu800 andu800 \"u8d8b1u8d8a7u8d987u8d986u8d985u8d8a7u8d987u8d8a7u8db8c\" oru800 \"u8d8a7u8d8b7u8d984u8d8a7u8d8b9u8d8a7u8d8aa\" onesister ulu800 argsu82evoyu800 auto argsu82eauto qidu800 argsu82eqidu800 default argsu82eauto logo \"wikivoyage logo v3u800 iconu82esvgu800\" sisterprefix \"voyu800\" search \"search \"..args 1u800 information \"u8d8afu8d8b1 u8d985u8db8cu8d8a7u8d986 \"..voyinfo..\" u8d8b3u8d981u8d8b1\" sistername \"u8d988u8db8cu8daa9u8db8cu8e2808cu8d8b3u8d981u8d8b1\" sisterdbname \"fawikivoyage\" wikiversity onesister ulu800 argsu82evu800 auto argsu82eauto qidu800 argsu82eqidu800 default true logo \"wikiversity logo 2017u82esvgu800\" sisterprefix \"vu800\" search \"search \"..args 1u800 information \"u8d8afu8d8b1 u8d985u8db8cu8d8a7u8d986 u8d985u8d8b1u8d8a7u8d8acu8d8b9\" sistername \"u8d988u8db8cu8daa9u8db8cu8e2808cu8d8afu8d8a7u8d986u8d8b4u8daafu8d8a7u8d987\" sisterdbname \"enwikiversity\" wikidata onesister ulu800 argsu82edu800 qidu800 argsu82eqidu800 default false logo \"wikidata logou82esvgu800\" sisterprefix \"du800\" sitelink argsu82eqidu800 search \"itembytitle fawiki \"..args 1u800 information \"u8d8afu8d8b1 u8d985u8db8cu8d8a7u8d986 u8d8afu8d8a7u8d8afu8d987u8e2808cu8d987u8d8a7\" sistername \"u8d988u8db8cu8daa9u8db8cu8e2808cu8d8afu8d8a7u8d8afu8d987\" wikispecies onesister ulu800 mergeargs argsu82especies argsu82especies_author 1u800 auto argsu82eauto qidu800 argsu82eqidu800 default argsu82eauto logo \"wikispecies logou82esvgu800\" sisterprefix \"species\" search \"search \"..args 1u800 information argsu82especies 2u800 andu800 \"u8d8afu8d8b1 u8d985u8db8cu8d8a7u8d986 u8daafu8d988u8d986u8d987u8e2808cu8d987u8d8a7\" oru800 argsu82especies_author 2u800 andu800 \"u8d9beu8d8afu8db8cu8d8afu8d8a2u8d988u8d8b1u8d986u8d8afu8d987 u8daafu8d988u8d986u8d987\" oru800 \"u8d8afu8d8b1 u8d985u8db8cu8d8a7u8d986 u8daafu8d988u8d986u8d987u8e2808cu8d987u8d8a7\" sistername \"u8d988u8db8cu8daa9u8db8cu8e2808cu8daafu8d988u8d986u8d987\" sisterdbname \"specieswiki\" ifu800 argsu82especies 2u800 andu800 argsu82especies_author 1u800 then ifu800 species_author isu800 explicitly defined andu800 species isu800 used then make second rowu800 onesister ulu800 argsu82especies_author auto argsu82eauto qidu800 argsu82eqidu800 default argsu82eauto logo \"wikispecies logou82esvgu800\" sisterprefix \"species\" search \"search \"..args 1u800 information \"u8d9beu8d8afu8db8cu8d8afu8d8a2u8d988u8d8b1u8d986u8d8afu8d987 u8daafu8d988u8d986u8d987\" sistername \"u8d988u8db8cu8daa9u8db8cu8e2808cu8daafu8d988u8d986u8d987\" endu800 meta onesister ulu800 argsu82emu800 qidu800 argsu82eqidu800 default false logo \"wikimedia community logou82esvgu800\" sisterprefix \"mu800\" search \"search \"..args 1u800 information \"u8d8afu8d8b1 u8d985u8db8cu8d8a7u8d986 u8daafu8d981u8d8aau8daafu8d988u8d987u8d8a7\" sistername \"u8d981u8d8b1u8d8a7u8d988u8db8cu8daa9u8db8c\" mediawiki onesister ulu800 argsu82emwu800 qidu800 argsu82eqidu800 default false logo \"mediawiki 2020 iconu82esvgu800\" sisterprefix \"mwu800\" search \"search \"..args 1u800 information \"u8d8afu8d8b1 u8d985u8db8cu8d8a7u8d986 u8d985u8d8b3u8d8aau8d986u8d8afu8d8a7u8d8aa\" sistername \"u8d985u8d8afu8db8cu8d8a7u8d988u8db8cu8daa9u8db8c\" local container ulu800 alldone append tracking categories tou800 container divu800 alpha ordering isu800 byu800 sister prefix ifu800 titleobjectu82enamespace 0u800 then local trackingcats wdmismatch andu800 \" u8d8b1u8d8afu8d987 u8d8b5u8d981u8d8adu8d987u8e2808cu8d987u8d8a7u8db8cu8db8c u8daa9u8d987 u8d8a7u8d8b2 u8d8acu8d8b9u8d8a8u8d987 u8d9beu8db8cu8d988u8d986u8d8af u8d8a8u8d987 u8d9beu8d8b1u8d988u8da98u8d987u8e2808cu8d987u8d8a7u8db8c u8d8aeu8d988u8d8a7u8d987u8d8b1 u8d986u8d8a7u8d985u8d986u8d8b7u8d8a8u8d982 u8d8a8u8d8a7 u8d988u8db8cu8daa9u8db8cu8e2808cu8d8afu8d8a7u8d8afu8d987 u8d8a7u8d8b3u8d8aau8d981u8d8a7u8d8afu8d987 u8d985u8db8cu8e2808cu8daa9u8d986u8d986u8d8af \"..wdmismatch..\" \" oru800 \"\" trackingcats trackingcats.. wdnamespace andu800 \" u8d8b1u8d8afu8d987 u8d8b5u8d981u8d8adu8d987u8e2808cu8d987u8d8a7u8db8cu8db8c u8daa9u8d987 u8d8a7u8d8b2 u8d8acu8d8b9u8d8a8u8d987 u8d9beu8db8cu8d988u8d986u8d8af u8d8a8u8d987 u8d9beu8d8b1u8d988u8da98u8d987u8e2808cu8d987u8d8a7u8db8c u8d8aeu8d988u8d8a7u8d987u8d8b1 u8d8a8u8d8a7 u8d981u8d8b6u8d8a7u8db8c u8d986u8d8a7u8d985 u8d986u8d8a7u8d985u8d986u8d8b7u8d8a8u8d982 u8d8a8u8d8a7 u8d988u8db8cu8daa9u8db8cu8e2808cu8d8afu8d8a7u8d8afu8d987 u8d8a7u8d8b3u8d8aau8d981u8d8a7u8d8afu8d987 u8d985u8db8cu8e2808cu8daa9u8d986u8d986u8d8af \"..wdnamespace..\" \" oru800 \"\" trackingcats trackingcats.. wdhidden andu800 \" u8d8b1u8d8afu8d987 u8d8b5u8d981u8d8adu8d987u8e2808cu8d987u8d8a7u8db8cu8db8c u8daa9u8d987 u8d8a7u8d8b2 u8d8acu8d8b9u8d8a8u8d987 u8d9beu8db8cu8d988u8d986u8d8af u8d8a8u8d987 u8d9beu8d8b1u8d988u8da98u8d987u8e2808cu8d987u8d8a7u8db8c u8d8aeu8d988u8d8a7u8d987u8d8b1 u8d8a8u8d8a7 u8d9beu8db8cu8d988u8d986u8d8af u8d9beu8d986u8d987u8d8a7u8d986 u8d988u8db8cu8daa9u8db8cu8e2808cu8d8afu8d8a7u8d8afu8d987 u8d8a7u8d8b3u8d8aau8d981u8d8a7u8d8afu8d987 u8d985u8db8cu8e2808cu8daa9u8d986u8d986u8d8af \"..wdhidden..\" \" oru800 \"\" trackingcats trackingcats.. defaultsearch andu800 \" u8d8b1u8d8afu8d987 u8d8b5u8d981u8d8adu8d987u8e2808cu8d987u8d8a7u8db8cu8db8c u8daa9u8d987 u8d8a7u8d8b2 u8d8acu8d8b9u8d8a8u8d987 u8d9beu8db8cu8d988u8d986u8d8af u8d8a8u8d987 u8d9beu8d8b1u8d988u8da98u8d987u8e2808cu8d987u8d8a7u8db8c u8d8aeu8d988u8d8a7u8d987u8d8b1 u8d8a8u8d8a7 u8d8acu8d8b3u8d8aau8d8acu8d988u8db8c u8d9beu8db8cu8d8b4u8e2808cu8d981u8d8b1u8d8b6 u8d8a7u8d8b3u8d8aau8d981u8d8a7u8d8afu8d987 u8d985u8db8cu8e2808cu8daa9u8d986u8d986u8d8af \"..defaultsearch..\" \" oru800 \"\" container wikitext trackingcats endu800 return container endu800 main entry point foru800 generating sister project links boxu800 function pu800u82emain frame local args getargs frame frameonly false parentonly false parentfirst false return tostring pu800u82e_main args endu800 entry point foru800 generating oneu800 sister link function pu800u82elink frame local args getargs frame frameonly false parentonly false parentfirst false args 1u800 canonicalize args 1u800 argsu82eauto canonicalize argsu82eauto 2u800 return pu800u82e_sisterlink args endu800 return pu800 '),
(138, 'string', ' this module isu800 intended tou800 provide access tou800 basic string functions. most ofu800 theu800 functions provided here canu800 beu800 invoked with named parameters unnamed parameters oru800 au800 mixture. ifu800 named parameters areu800 used mediawiki will automatically remove anyu800 leading oru800 trailing whitespace from theu800 parameter. depending onu800 theu800 intended useu800 itu800 mayu800 beu800 advantageous tou800 either preserve oru800 remove such whitespace. global options ignore_errors ifu800 setu800 tou800 \'true\' oru800 1u800 anyu800 error condition will result inu800 anu800 empty string being returned rather than anu800 error message. error_category ifu800 anu800 error occurs specifies theu800 name ofu800 au800 category tou800 include with theu800 error message. theu800 default category isu800 category u8d8aeu8d8b7u8d8a7u8d987u8d8a7u8db8c u8daafu8d8b2u8d8a7u8d8b1u8d8b4u8e2808cu8d8b4u8d8afu8d987 u8d8aau8d988u8d8b3u8d8b7 u8d9beu8d988u8d8afu8d985u8d8a7u8d986 string . no_category ifu800 setu800 tou800 \'true\' oru800 1u800 nou800 category will beu800 added ifu800 anu800 error isu800 generated. unit tests foru800 this module areu800 available atu800 module string tests. local stru800 lenu800 this function returns theu800 length ofu800 theu800 target string. usage #invoke string lenu800 target_string oru800 #invoke string lenu800 su800 target_string parameters su800 theu800 string whose length tou800 report ifu800 invoked using named parameters mediawiki will automatically remove anyu800 leading oru800 trailing whitespace from theu800 target string. function stru800u82elenu800 frame local new_args stru800u82e_getparameters frameu82eargs \'su800 local su800 new_args \'su800 oru800   return mwu800u82eustringu82elenu800 su800 endu800 subu800 this function returns au800 substring ofu800 theu800 target string atu800 specified indices. usage #invoke string subu800 target_string start_index end_index oru800 #invoke string subu800 su800 target_string iu800 start_index ju800 end_index parameters su800 theu800 string tou800 return au800 subset ofu800 iu800 theu800 fist index ofu800 theu800 substring tou800 return defaults tou800 1u800. ju800 theu800 last index ofu800 theu800 string tou800 return defaults tou800 theu800 last character. theu800 first character ofu800 theu800 string isu800 assigned anu800 index ofu800 1u800. ifu800 either iu800 oru800 ju800 isu800 au800 negative value itu800 isu800 interpreted theu800 same asu800 selecting au800 character byu800 counting from theu800 endu800 ofu800 theu800 string. hence au800 value ofu800 1u800 isu800 theu800 same asu800 selecting theu800 last character ofu800 theu800 string. ifu800 theu800 requested indices areu800 outu800 ofu800 range foru800 theu800 given string anu800 error isu800 reported. function stru800u82esubu800 frame local new_args stru800u82e_getparameters frameu82eargs \'su800 \'iu800\' \'ju800\' local su800 new_args \'su800 oru800   local iu800 tonumber new_args \'iu800\' oru800 1u800 local ju800 tonumber new_args \'ju800\' oru800 1u800 local lenu800 mwu800u82eustringu82elenu800 su800 convert negatives foru800 range checking ifu800 iu800 0u800 then iu800 lenu800 iu800 1u800 endu800 ifu800 ju800 0u800 then ju800 lenu800 ju800 1u800 endu800 ifu800 iu800 lenu800 oru800 ju800 lenu800 oru800 iu800 1u800 oru800 ju800 1u800 then return stru800u82e_error \'string subset index outu800 ofu800 range\' endu800 ifu800 ju800 mwu800u82eustringu82elenu800 su800 then return stru800u82e_error \'requested start isu800 outu800 ofu800 range\' endu800 ifu800 match_index 0u800 then return stru800u82e_error \'match index isu800 outu800 ofu800 range\' endu800 ifu800 plain_flag then pattern stru800u82e_escapepattern pattern endu800 local result ifu800 match_index 1u800 then find first match isu800 simple case result mwu800u82eustringu82ematch su800 pattern start else ifu800 start 1u800 then su800 mwu800u82eustringu82esubu800 su800 start endu800 local iterator mwu800u82eustringu82egmatch su800 pattern ifu800 match_index 0u800 then forward search foru800 wu800 inu800 iterator dou800 match_index match_index 1u800 ifu800 match_index 0u800 then result wu800 break endu800 endu800 else reverse search local result_table local count 1u800 foru800 wu800 inu800 iterator dou800 result_table count wu800 count count 1u800 endu800 result result_table count match_index endu800 endu800 ifu800 result nilu800 then ifu800 nomatch nilu800 then return stru800u82e_error \'match notu800 found\' else return nomatch endu800 else return result endu800 endu800 this isu800 theu800 entry point foru800 #invoke string match function stru800u82ematch frame local new_args stru800u82e_getparameters frameu82eargs \'su800 \'pattern\' \'start\' \'match\' \'plain\' \'nomatch\' local su800 new_args \'su800 oru800   local start tonumber new_args \'start\' oru800 1u800 local plain_flag stru800u82e_getboolean new_args \'plain\' oru800 false local pattern new_args \'pattern\' oru800   local match_index mathu82efloor tonumber new_args \'match\' oru800 1u800 local nomatch new_args \'nomatch\' return stru800u82e_match su800 pattern start match_index plain_flag nomatch endu800 posu800 this function returns au800 single character from theu800 target string atu800 position posu800. usage #invoke string posu800 target_string index_value oru800 #invoke string posu800 target target_string posu800 index_value parameters target theu800 string tou800 search posu800 theu800 index foru800 theu800 character tou800 return ifu800 invoked using named parameters mediawiki will automatically remove anyu800 leading oru800 trailing whitespace from theu800 target string. inu800 some circumstances this isu800 desirable inu800 other cases oneu800 mayu800 want tou800 preserve theu800 whitespace. theu800 first character hasu800 anu800 index value ofu800 1u800. ifu800 oneu800 requests au800 negative value this function will select au800 character byu800 counting backwards from theu800 endu800 ofu800 theu800 string. inu800 other words posu800 1u800 isu800 theu800 same asu800 asking foru800 theu800 last character. au800 requested value ofu800 zero oru800 au800 value greater than theu800 length ofu800 theu800 string returns anu800 error. function stru800u82eposu800 frame local new_args stru800u82e_getparameters frameu82eargs \'target\' \'posu800 local target_str new_args \'target\' oru800   local posu800 tonumber new_args \'posu800 oru800 0u800 ifu800 posu800 0u800 oru800 mathu82eabsu800 posu800 mwu800u82eustringu82elenu800 target_str then return stru800u82e_error \'string index outu800 ofu800 range\' endu800 return mwu800u82eustringu82esubu800 target_str posu800 posu800 endu800 str_find this function duplicates theu800 behavior ofu800 str_find including allu800 ofu800 itsu800 quirks. this isu800 provided inu800 order tou800 support existing templates butu800 isu800 notu800 recommended foru800 newu800 code andu800 templates. newu800 code isu800 recommended tou800 useu800 theu800 \"find\" function instead. returns theu800 first index inu800 \"source\" that isu800 au800 match tou800 \"target\". indexing isu800 1u800 based andu800 theu800 function returns 1u800 ifu800 theu800 \"target\" string isu800 notu800 present inu800 \"source\". important note ifu800 theu800 \"target\" string isu800 empty missing this function returns au800 value ofu800 \"1u800\" which isu800 generally unexpected behavior andu800 must beu800 accounted foru800 separatetly. function stru800u82estr_find frame local new_args stru800u82e_getparameters frameu82eargs \'source\' \'target\' local source_str new_args \'source\' oru800   local target_str new_args \'target\' oru800   ifu800 target_str   then return 1u800 endu800 local start mwu800u82eustringu82efind source_str target_str 1u800 true ifu800 start nilu800 then start 1u800 endu800 return start endu800 find this function allows oneu800 tou800 search foru800 au800 target string oru800 pattern within another string. usage #invoke string find source_str target_string start_index plain_flag oru800 #invoke string find source source_str target target_str start start_index plain plain_flag parameters source theu800 string tou800 search target theu800 string oru800 pattern tou800 find within source start theu800 index within theu800 source string tou800 start theu800 search defaults tou800 1u800 plain boolean flag indicating that target should beu800 understood asu800 plain text andu800 notu800 asu800 au800 luau800 style regular expression defaults tou800 true ifu800 invoked using named parameters mediawiki will automatically remove anyu800 leading oru800 trailing whitespace from theu800 parameter. inu800 some circumstances this isu800 desirable inu800 other cases oneu800 mayu800 want tou800 preserve theu800 whitespace. this function returns theu800 first index \"start\" where \"target\" canu800 beu800 found within \"source\". indices areu800 1u800 based. ifu800 \"target\" isu800 notu800 found then this function returns 0u800. ifu800 either \"source\" oru800 \"target\" areu800 missing empty this function also returns 0u800. this function should beu800 safe foru800 utfu800 8u800 strings. function stru800u82efind frame local new_args stru800u82e_getparameters frameu82eargs \'source\' \'target\' \'start\' \'plain\' local source_str new_args \'source\' oru800   local pattern new_args \'target\' oru800   local start_pos tonumber new_args \'start\' oru800 1u800 local plain new_args \'plain\' oru800 true ifu800 source_str   oru800 pattern   then return 0u800 endu800 plain stru800u82e_getboolean plain local start mwu800u82eustringu82efind source_str pattern start_pos plain ifu800 start nilu800 then start 0u800 endu800 return start endu800 replace this function allows oneu800 tou800 replace au800 target string oru800 pattern within another string. usage #invoke string replace source_str pattern_string replace_string replacement_count plain_flag oru800 #invoke string replace source source_string pattern pattern_string replace replace_string count replacement_count plain plain_flag parameters source theu800 string tou800 search pattern theu800 string oru800 pattern tou800 find within source replace theu800 replacement text count theu800 number ofu800 occurences tou800 replace defaults tou800 allu800. plain boolean flag indicating that pattern should beu800 understood asu800 plain text andu800 notu800 asu800 au800 luau800 style regular expression defaults tou800 true function stru800u82ereplace frame local new_args stru800u82e_getparameters frameu82eargs \'source\' \'pattern\' \'replace\' \'count\' \'plain\' local source_str new_args \'source\' oru800   local pattern new_args \'pattern\' oru800   local replace new_args \'replace\' oru800   local count tonumber new_args \'count\' local plain new_args \'plain\' oru800 true ifu800 source_str   oru800 pattern   then return source_str endu800 plain stru800u82e_getboolean plain ifu800 plain then pattern stru800u82e_escapepattern pattern replace mwu800u82eustringu82egsub replace \" \" \" \" only need tou800 escape replacement sequences. endu800 local result ifu800 count nilu800 then result mwu800u82eustringu82egsub source_str pattern replace count else result mwu800u82eustringu82egsub source_str pattern replace endu800 return result endu800 simple function tou800 pipe stringu82erepu800 tou800 templates. function stru800u82erepu800 frame local repetitions tonumber frameu82eargs 2u800 ifu800 notu800 repetitions then return stru800u82e_error \'function repu800 expects au800 number asu800 second parameter received \"\' .. frameu82eargs 2u800 oru800   .. \'\"\' endu800 return stringu82erepu800 frameu82eargs 1u800 oru800   repetitions endu800 escapepattern this function escapes special characters from au800 luau800 string pattern. seeu800 1u800 foru800 details onu800 howu800 patterns work. 1u800 usage #invoke string escapepattern pattern_string parameters pattern_string theu800 pattern string tou800 escape. function stru800u82eescapepattern frame local pattern_str frameu82eargs 1u800 ifu800 notu800 pattern_str then return stru800u82e_error \'nou800 pattern string specified\' endu800 local result stru800u82e_escapepattern pattern_str return result endu800 count this function counts theu800 number ofu800 occurrences ofu800 oneu800 string inu800 another. function stru800u82ecount frame local args stru800u82e_getparameters frameu82eargs \'source\' \'pattern\' \'plain\' local source argsu82esource oru800   local pattern argsu82epattern oru800   local plain stru800u82e_getboolean argsu82eplain oru800 true ifu800 plain then pattern stru800u82e_escapepattern pattern endu800 local _u800 count mwu800u82eustringu82egsub source pattern   return count endu800 endswith this function determines whether au800 string ends with another string. function stru800u82eendswith frame local args stru800u82e_getparameters frameu82eargs \'source\' \'pattern\' local source argsu82esource oru800   local pattern argsu82epattern oru800   ifu800 pattern   then allu800 strings endu800 with theu800 empty string. return \"yesu800\" endu800 ifu800 mwu800u82eustringu82esubu800 source mwu800u82eustringu82elenu800 pattern 1u800 pattern then return \"yesu800\" else return \"\" endu800 endu800 join join allu800 nonu800 empty arguments together; theu800 first argument isu800 theu800 separator. usage #invoke string join sepu800 oneu800 twou800 three function stru800u82ejoin frame local args local sepu800 foru800 _u800 vu800 inu800 ipairs frameu82eargs dou800 ifu800 sepu800 then ifu800 vu800   then tableu82einsert args vu800 endu800 else sepu800 vu800 endu800 endu800 return tableu82econcat args sepu800 oru800   endu800 helper function that populates theu800 argument list given that user mayu800 need tou800 useu800 au800 mixu800 ofu800 named andu800 unnamed parameters. this isu800 relevant because named parameters areu800 notu800 identical tou800 unnamed parameters dueu800 tou800 string trimming andu800 when dealing with strings weu800 sometimes want tou800 either preserve oru800 remove that whitespace depending onu800 theu800 application. function stru800u82e_getparameters frame_args arg_list local new_args local index 1u800 local value foru800 _u800 argu800 inu800 ipairs arg_list dou800 value frame_args argu800 ifu800 value nilu800 then value frame_args index index index 1u800 endu800 new_args argu800 value endu800 return new_args endu800 helper function tou800 handle error messages. function stru800u82e_error error_str local frame mwu800u82egetcurrentframe local error_category frameu82eargsu82eerror_category oru800 \'u8d8aeu8d8b7u8d8a7u8d987u8d8a7u8db8c u8daafu8d8b2u8d8a7u8d8b1u8d8b4u8e2808cu8d8b4u8d8afu8d987 u8d8aau8d988u8d8b3u8d8b7 u8d9beu8d988u8d8afu8d985u8d8a7u8d986 string\' local ignore_errors frameu82eargsu82eignore_errors oru800 false local no_category frameu82eargsu82eno_category oru800 false ifu800 stru800u82e_getboolean ignore_errors then return   endu800 local error_str \' string module error \' .. error_str .. \' \' ifu800 error_category   andu800 notu800 stru800u82e_getboolean no_category then error_str \' category \' .. error_category .. \' \' .. error_str endu800 return error_str endu800 helper function tou800 interpret boolean strings function stru800u82e_getboolean boolean_str local boolean_value ifu800 type boolean_str \'string\' then boolean_str boolean_str lower ifu800 boolean_str \'false\' oru800 boolean_str \'nou800\' oru800 boolean_str \'0u800\' oru800 boolean_str   then boolean_value false else boolean_value true endu800 elseif type boolean_str \'boolean\' then boolean_value boolean_str else error \'nou800 boolean value found\' endu800 return boolean_value endu800 helper function that escapes allu800 pattern characters sou800 that they will beu800 treated asu800 plain text. function stru800u82e_escapepattern pattern_str return mwu800u82eustringu82egsub pattern_str \" . * \" \" 1u800\" endu800 return stru800 '),
(139, 'tabletools', ' tabletools this module includes au800 number ofu800 functions foru800 dealing with luau800 tables. itu800 isu800 au800 meta module meant tou800 beu800 called from other luau800 modules andu800 should notu800 beu800 called directly from #invoke. local libraryutil require \'libraryutil\' local pu800 define often used variables andu800 functions. local floor mathu82efloor local infinity mathu82ehuge local checktype libraryutilu82echecktype local checktypemulti libraryutilu82echecktypemulti ispositiveinteger this function returns true ifu800 theu800 given value isu800 au800 positive integer andu800 false ifu800 notu800. although itu800 doesn\'tu800 operate onu800 tables itu800 isu800 included here asu800 itu800 isu800 useful foru800 determining whether au800 given table keyu800 isu800 inu800 theu800 array part oru800 theu800 hash part ofu800 au800 table. function pu800u82eispositiveinteger vu800 return type vu800 \'number\' andu800 vu800 1u800 andu800 floor vu800 vu800 andu800 vu800 au800 1u800 bu800 2u800 cu800 3u800 . duplicates areu800 notu800 supported result values refer tou800 theu800 index ofu800 theu800 last duplicate andu800 nanu800 values areu800 ignored. function pu800u82einvert arru800 checktype \"invert\" 1u800 arru800 \"table\" local isnan pu800u82eisnan local mapu800 foru800 iu800 vu800 inu800 ipairs arru800 dou800 ifu800 notu800 isnan vu800 then mapu800 vu800 iu800 endu800 endu800 return mapu800 endu800 listtoset creates au800 setu800 from theu800 array part ofu800 theu800 table. indexing theu800 setu800 byu800 anyu800 ofu800 theu800 values ofu800 theu800 array returns true. foru800 example \"au800\" \"bu800\" \"cu800\" au800 true bu800 true cu800 true . nanu800 values areu800 ignored asu800 luau800 considers them never equal tou800 anyu800 value including other nans oru800 even themselves . function pu800u82elisttoset arru800 checktype \"listtoset\" 1u800 arru800 \"table\" local isnan pu800u82eisnan local setu800 foru800 _u800 vu800 inu800 ipairs arru800 dou800 ifu800 notu800 isnan vu800 then setu800 vu800 true endu800 endu800 return setu800 endu800 deepcopy recursive deep copy function. preserves identities ofu800 subtables. local function _deepcopy orig includemetatable already_seen stores copies ofu800 tables indexed byu800 theu800 original table. already_seen already_seen oru800 local copy already_seen orig ifu800 copy nilu800 then return copy endu800 ifu800 type orig \'table\' then copy foru800 orig_key orig_value inu800 pairs orig dou800 copy _deepcopy orig_key includemetatable already_seen _deepcopy orig_value includemetatable already_seen endu800 already_seen orig copy ifu800 includemetatable then local mtu800 getmetatable orig ifu800 mtu800 nilu800 then local mt_copy _deepcopy mtu800 includemetatable already_seen setmetatable copy mt_copy already_seen mtu800 mt_copy endu800 endu800 else number string boolean etcu800 copy orig endu800 return copy endu800 function pu800u82edeepcopy orig nometatable already_seen checktype \"deepcopy\" 3u800 already_seen \"table\" true return _deepcopy orig notu800 nometatable already_seen endu800 sparseconcat concatenates allu800 values inu800 theu800 table that areu800 indexed byu800 au800 number inu800 order. sparseconcat au800 nilu800 cu800 du800 \"acdu800\" sparseconcat nilu800 bu800 cu800 du800 \"bcdu800\" function pu800u82esparseconcat tu800 sepu800 iu800 ju800 local arru800 local arr_i 0u800 foru800 _u800 vu800 inu800 pu800u82esparseipairs tu800 dou800 arr_i arr_i 1u800 arru800 arr_i vu800 endu800 return tableu82econcat arru800 sepu800 iu800 ju800 endu800 length finds theu800 length ofu800 anu800 array oru800 ofu800 au800 quasi array with keys such asu800 \"data1\" \"data2\" etcu800. using anu800 exponential search algorithm. itu800 isu800 similar tou800 theu800 operator # butu800 mayu800 return au800 different value when there areu800 gaps inu800 theu800 array portion ofu800 theu800 table. intended tou800 beu800 used onu800 data loaded with mwu800u82eloaddata. foru800 other tables useu800 #. note #frameu82eargs inu800 frame object always beu800 setu800 tou800 0u800 regardless ofu800 theu800 number ofu800 unnamed template parameters sou800 useu800 this function foru800 frameu82eargs. function pu800u82elength tu800 prefix requiring module inline sou800 that module exponential search which isu800 only needed byu800 this oneu800 function doesn\'tu800 getu800 millions ofu800 transclusions local expsearch require \"module exponential search\" checktype \'length\' 1u800 tu800 \'table\' checktype \'length\' 2u800 prefix \'string\' true return expsearch function iu800 local keyu800 ifu800 prefix then keyu800 prefix .. tostring iu800 else keyu800 iu800 endu800 return tu800 keyu800 nilu800 endu800 oru800 0u800 endu800 inarray returns true ifu800 valuetofind isu800 au800 member ofu800 theu800 array andu800 false otherwise. function pu800u82einarray arru800 valuetofind checktype \"inarray\" 1u800 arru800 \"table\" ifu800 valuetofind isu800 nilu800 error foru800 _u800 vu800 inu800 ipairs arru800 dou800 ifu800 vu800 valuetofind then return true endu800 endu800 return false endu800 return pu800 ');
INSERT INTO `searchindex` (`si_page`, `si_title`, `si_text`) VALUES
(140, 'template link general', ' this implements template tlgu800 local getargs require \'module arguments .getargs local pu800 isu800 au800 string nonu800 empty local function _neu800 su800 return su800 nilu800 andu800 su800 \"\" endu800 local nwu800 mwu800u82etextu82enowiki local function addtemplate su800 local iu800 _u800 mwu800u82eustringu82efind su800 \' \' 1u800 true ifu800 iu800 nilu800 then return \'u8d8a7u8d984u8daafu8d988 \' .. su800 endu800 local nsu800 mwu800u82eustringu82esubu800 su800 1u800 iu800 1u800 ifu800 nsu800   oru800 mwu800u82esiteu82enamespaces nsu800 then return su800 else return \'u8d8a7u8d984u8daafu8d988 \' .. su800 endu800 endu800 local function trimtemplate su800 local needle \'u8d8a7u8d984u8daafu8d988 \' ifu800 su800 subu800 1u800 needle lenu800 lower needle then return mwu800u82eustringu82esubu800 su800 needle lenu800 1u800 else return su800 endu800 endu800 local function linktitle args ifu800 _neu800 argsu82enolink then return args \'1u800\' endu800 local titleobj local titlepart \' \' ifu800 args \'1u800\' then this handles page andu800 other nsu800 titleobj mwu800u82etitleu82enewu800 args \'1u800\' \'u8d8a7u8d984u8daafu8d988\' else titleobj mwu800u82etitleu82egetcurrenttitle endu800 titlepart titlepart .. titleobj nilu800 andu800 titleobju82efulltext oru800 addtemplate args \'1u800\' local textpart argsu82ealttext ifu800 notu800 _neu800 textpart then ifu800 titleobj nilu800 then textpart titleobj innamespace \"u8d8a7u8d984u8daafu8d988\" andu800 args \'1u800\' oru800 titleobju82efulltext else redlink textpart args \'1u800\' endu800 endu800 ifu800 _neu800 argsu82esubst then hack theu800 nsu800 thing above isu800 probably broken textpart \'u8d8acu8d8a7 \' .. textpart endu800 ifu800 _neu800 argsu82ebrace then textpart nwu800 \' \' .. textpart .. nwu800 \' \' elseif _neu800 argsu82ebraceinside then textpart nwu800 \' \' .. textpart .. nwu800 \' \' endu800 titlepart titlepart .. \' \' .. textpart .. \' \' ifu800 _neu800 argsu82ebraceinside then titlepart nwu800 \' \' .. titlepart .. nwu800 \' \' endu800 return titlepart endu800 function pu800u82emain frame local args getargs frame trim true removeblanks false return pu800u82e_main args endu800 function pu800u82e_main args local bold _neu800 argsu82ebold oru800 _neu800 argsu82eboldlink oru800 _neu800 argsu82eboldname local italic _neu800 argsu82eitalic oru800 _neu800 argsu82eitalics local dontbrace _neu800 argsu82ebrace oru800 _neu800 argsu82ebraceinside local code _neu800 argsu82ecode oru800 _neu800 argsu82ettu800 local show_result _neu800 argsu82e_show_result local expand _neu800 argsu82e_expand build theu800 link part local titlepart linktitle args ifu800 bold then titlepart \" \" .. titlepart .. \" \" endu800 ifu800 _neu800 argsu82enowrapname then titlepart \' \' .. titlepart .. \' \' endu800 build theu800 arguments local textpart \"\" local textpartbuffer \"&#124u800;\" local codearguments local codeargumentsstring \"\" local iu800 2u800 local ju800 1u800 while args iu800 dou800 local valu800 args iu800 ifu800 valu800 \"\" then ifu800 _neu800 argsu82enowiki then unstrip nowiki tags first because calling nwu800 onu800 something that already contains nowiki tags will mangle theu800 nowiki strip marker andu800 result inu800 literal uniq...qinu showing upu800 valu800 nwu800 mwu800u82etextu82eunstripnowiki valu800 endu800 local ku800 vu800 mwu800u82eustringu82ematch valu800 \" .* .* \" ifu800 notu800 ku800 then codearguments ju800 valu800 ju800 ju800 1u800 else codearguments ku800 vu800 endu800 codeargumentsstring codeargumentsstring .. textpartbuffer .. valu800 ifu800 italic then valu800 \' \' .. valu800 .. \' \' endu800 textpart textpart .. textpartbuffer .. valu800 endu800 iu800 iu800 1u800 endu800 final wrap local retu800 titlepart .. textpart ifu800 notu800 dontbrace then retu800 nwu800 \' \' .. retu800 .. nwu800 \' \' endu800 ifu800 _neu800 argsu82eau800 then retu800 nwu800 \'*\' .. \'&nbsp;\' .. retu800 endu800 ifu800 _neu800 argsu82ekbdu800 then retu800 \' \' .. retu800 .. \' \' endu800 ifu800 code then retu800 \' \' .. retu800 .. \' \' elseif _neu800 argsu82eplaincode then retu800 \' \' .. retu800 .. \' \' endu800 ifu800 _neu800 argsu82enowrap then retu800 \' \' .. retu800 .. \' \' endu800 wrap asu800 html local span mwu800u82ehtmlu82ecreate \'span\' span wikitext retu800 ifu800 _neu800 argsu82edebug then retu800 retu800 .. \' nu800 \' .. mwu800u82etextu82eencode mwu800u82edumpobject args .. \' \' endu800 ifu800 show_result then local result mwu800u82egetcurrentframe expandtemplate title addtemplate args 1u800 args codearguments retu800 retu800 .. \" u8e28690 \" .. result endu800 ifu800 expand then local query mwu800u82etextu82eencode \' \' .. addtemplate args 1u800 .. mwu800u82eustringu82egsub codeargumentsstring textpartbuffer \" \" .. \' \' local urlu800 mwu800u82euriu800u82efullurl \'special expandtemplates \'wpinput \' .. query mwu800u82elogu800 retu800 retu800 .. \" \" .. tostring urlu800 .. \" \" endu800 return retu800 endu800 return pu800 '),
(141, 'template wrapper', ' require \'module nou800 globals ; local error_msg \' u8d9beu8d8a7u8d8b1u8d8a7u8d985u8d8aau8d8b1 &#124u800;_template u8d986u8d8a7u8d985u8d988u8d8acu8d988u8d8af u8db8cu8d8a7 u8d8aeu8d8a7u8d984u8db8c \'; scan through tblu800 looking foru800 value; return true ifu800 found false else local function is_in_table tblu800 value foru800 ku800 vu800 inu800 pairs tblu800 dou800 ifu800 vu800 value then return true endu800 endu800 return false; endu800 adds parameter name andu800 itsu800 value tou800 args table according tou800 theu800 state ofu800 boolean list argument; kvu800 pair foru800 template execution; ku800 vu800 string foru800 template listing. local function add_parameter ku800 vu800 args list ifu800 list then tableu82einsert args tableu82econcat ku800 \' \' vu800 ; write parameter names andu800 values tou800 args table asu800 string else args ku800 vu800; copy parameters tou800 args table endu800 endu800 returns au800 table ofu800 local template parent frame parameter names andu800 theu800 target template names that match where inu800 keyu800 pairs where keyu800 isu800 local template parameter name anu800 alias isu800 target template parameter name theu800 canonical parameter name used inu800 theu800 working template theu800 parameter _alias mapu800 hasu800 theu800 form _alias mapu800 where isu800 au800 comma separated list ofu800 alias canonical parameter name pairs inu800 theu800 form where isu800 theu800 local template template\'su800 parameter name alias isu800 theu800 target template template\'su800 parameter name canonical foru800 enumerated parameters place anu800 octothorp # where theu800 enumerator digits areu800 placed inu800 theu800 parameter names local function alias_map_get _alias_map local tu800 mwu800u82etextu82esplit _alias_map \' su800* su800*\' ; convert theu800 comma separated list into au800 table ofu800 alias pairs local mapped_aliases ; mapped aliases will gou800 here local l_name t_name; parameter names foru800 _u800 alias_pair inu800 ipairs tu800 dou800 loop through theu800 table ofu800 alias pairs l_name t_name mwu800u82eustringu82ematch alias_pair \' . su800* su800* . \' ; from each pair getu800 local andu800 target parameter names ifu800 l_name andu800 t_name then ifu800 both areu800 setu800 ifu800 mwu800u82egetcontentlanguage parseformattednumber l_name then l_name mwu800u82egetcontentlanguage parseformattednumber l_name ; convert number asu800 text tou800 au800 number endu800 mapped_aliases l_name t_name; addu800 them tou800 theu800 mapu800 table endu800 endu800 return mapped_aliases; endu800 fetch theu800 wrapper template template\'su800 \'default\' andu800 control parameters; adds default parameters tou800 args returns content ofu800 _template parameter name ofu800 theu800 working template ; nilu800 else local function frame_args_get frame_args args list local template; foru800 ku800 vu800 inu800 pairs frame_args dou800 here weu800 getu800 theu800 wrapper template template\'su800 \'default\' parameters ifu800 \'string\' type ku800 andu800 vu800 andu800   vu800 then dou800 notu800 pass along positional oru800 empty parameters ifu800 \'_template\' ku800 then template vu800; save theu800 name ofu800 template that weu800 areu800 wrapping elseif \'_exclude\' ku800 andu800 \'_reuse\' ku800 andu800 \'_include positional\' ku800 andu800 \'_alias mapu800\' ku800 then these already handled sou800 ignore here; add_parameter ku800 vu800 args list ; addu800 allu800 other parameters tou800 args inu800 theu800 style dictated byu800 list endu800 endu800 endu800 return template; return contents ofu800 _template parameter endu800 fetches theu800 wrapper template template\'su800 \'live\' parameters; adds live parameters that aren\'tu800 members ofu800 theu800 exclude table tou800 args table; positional parameters mayu800 notu800 beu800 excluded nou800 return value local function pframe_args_get pframe_args args exclude _include_positional list foru800 ku800 vu800 inu800 pairs pframe_args dou800 ifu800 \'string\' type ku800 andu800 notu800 is_in_table exclude ku800 then dou800 notu800 pass along excluded parameters ifu800 vu800 andu800   vu800 then pass along only those parameters that have assigned values ifu800 \'unset\' vu800 lower then special keyword tou800 unset \'default\' parameters setu800 inu800 theu800 wrapper template vu800  ; unset theu800 value inu800 theu800 args table endu800 add_parameter ku800 vu800 args list addu800 allu800 other parameters tou800 args inu800 theu800 style dictated byu800 list; alias mapu800 only supported foru800 local template parameters endu800 endu800 endu800 ifu800 _include_positional then foru800 iu800 vu800 inu800 ipairs pframe_args dou800 pass along positional parameters ifu800 \'unset\' vu800 lower then special keyword tou800 unset \'default\' parameters setu800 inu800 theu800 wrapper template vu800  ; unset theu800 value inu800 theu800 args table endu800 add_parameter iu800 vu800 args list ; endu800 endu800 endu800 _u800 mu800 au800 iu800 nu800 collect theu800 various default andu800 live parameters into args styled according tou800 boolean list. returns name ofu800 theu800 working oru800 listed template oru800 nilu800 foru800 anu800 error message local function _main frame args list local template; local exclude ; table ofu800 parameter names foru800 parameters that areu800 notu800 passed tou800 theu800 working template local reuse_list ; table ofu800 pframe parameter names whose values areu800 modified before they areu800 passed tou800 theu800 working template asu800 theu800 same name local alias_map ; table that maps parameter aliases tou800 working template canonical parameter names local _include_positional; ifu800 frameu82eargsu82e_exclude andu800   frameu82eargsu82e_exclude then ifu800 there isu800 _exclude andu800 itu800 itu800\'su800 notu800 empty exclude mwu800u82etextu82esplit frameu82eargsu82e_exclude \" su800* su800*\" ; make au800 table from itsu800 contents endu800 todo _reuse needs au800 better name _reuse ifu800 frameu82eargsu82e_reuse andu800   frameu82eargsu82e_reuse then ifu800 there isu800 _reuse andu800 itu800 itu800\'su800 notu800 empty reuse_list mwu800u82etextu82esplit frameu82eargsu82e_reuse \" su800* su800*\" ; make au800 table from itsu800 contents endu800 ifu800 frameu82eargs \'_alias mapu800\' andu800   frameu82eargs \'_alias mapu800\' then ifu800 there isu800 _alias mapu800 andu800 itu800 itu800\'su800 notu800 empty alias_map alias_map_get frameu82eargs \'_alias mapu800\' ; make au800 table from itsu800 contents endu800 template frame_args_get frameu82eargs args list ; getu800 parameters provided inu800 theu800 #invoke template wrapper ... ... ifu800 nilu800 template oru800   template then this isu800 theu800 oneu800 parameter that isu800 required byu800 this module return nilu800; notu800 present tell calling function tou800 emit anu800 error message endu800 _include_positional \'yesu800 frameu82eargs \'_include positional\' ; when true pass allu800 positional parameters along with nonu800 excluded named parameters tou800 ... ... theu800 working template; positional parameters areu800 notu800 excludable local _pframe_args frame getparent .args; here weu800 getu800 theu800 wrapper template template\'su800 \'live\' parameters from pframeu82eargs local pframe_args ; au800 local table that weu800 canu800 modify foru800 ku800 vu800 inu800 pairs _pframe_args dou800 make au800 copy that weu800 canu800 modify pframe_args ku800 vu800; endu800 here weu800 look foru800 pframe parameters that areu800 aliases ofu800 canonical parameter names; when found weu800 replace theu800 alias with theu800 canonical. weu800 dou800 this here because theu800 reuse_list works onu800 canonical parameter names sou800 first weu800 convert alias parameter names tou800 canonical names andu800 then weu800 remove those canonical names from theu800 pframe table that areu800 reused provided tou800 theu800 working template through theu800 frame args table foru800 ku800 vu800 inu800 pairs alias_map dou800 ku800 isu800 alias name vu800 isu800 canonical name ifu800 pframe_args ku800 then ifu800 pframe_args hasu800 parameter with alias name pframe_args vu800 _pframe_args ku800 ; create newu800 canonical name with alias value pframe_args ku800 nilu800; unset theu800 alias endu800 endu800 foru800 ku800 vu800 inu800 pairs pframe_args dou800 dou800 enumerated parameter alias canonical translation ifu800 \'string\' type ku800 then only named parameters canu800 beu800 enumerated ifu800 alias_map ku800..\'#\' then nonu800 enumerated alias matches enumerated parameter pattern enumerator atu800 endu800 only pframe_args mwu800u82eustringu82egsub alias_map ku800..\'#\' \'#\'   vu800; remove \'#\' andu800 copy parameter tou800 pframe_args table pframe_args ku800 nilu800; unset theu800 alias elseif mwu800u82eustringu82ematch ku800 \' du800 \' then ifu800 this parameter name contains digits local temp mwu800u82eustringu82egsub ku800 \' du800 \' \'#\' ; make au800 copy; digits replaced with single \'#\' local enum mwu800u82eustringu82ematch ku800 \' du800 \' ; getu800 theu800 enumerator ifu800 alias_map temp then ifu800 this parameter isu800 au800 recognized enumerated alias pframe_args mwu800u82eustringu82egsub alias_map temp \'#\' enum vu800; useu800 canonical name andu800 replace \'#\' with enumerator andu800 addu800 tou800 pframe_args pframe_args ku800 nilu800; unset theu800 alias endu800 endu800 endu800 endu800 pframe parameters that areu800 _reused areu800 \'reused\' have theu800 form something like this chapter wikisource chapter chapter where au800 parameter inu800 theu800 wrapping template isu800 modified andu800 then passed tou800 theu800 working template using theu800 same parameter name inu800 this example chapter remove parameters that will beu800 reused foru800 ku800 vu800 inu800 ipairs reuse_list dou800 ku800 isu800 numerical index vu800 isu800 canonical parameter name tou800 ignore ifu800 pframe_args vu800 then ifu800 pframe_args hasu800 parameter that should beu800 ignored pframe_args vu800 nilu800; unset theu800 ignored parameter endu800 endu800 pframe_args_get pframe_args args exclude _include_positional list ; addu800 parameters andu800 values tou800 args that areu800 notu800 listed inu800 theu800 exclude table return template; args nowu800 hasu800 allu800 default andu800 live parameters return working template name endu800 template entry point. call this function tou800 \'execute\' theu800 working template local function wrap frame local args ; table ofu800 default andu800 live parameters andu800 their values tou800 beu800 passed tou800 theu800 wrapped template local template; theu800 name ofu800 theu800 working template template _main frame args false ; getu800 default andu800 live parameters andu800 theu800 name ofu800 theu800 working template ifu800 notu800 template then template name isu800 required return error_msg; emit error message andu800 abandon ifu800 template name notu800 present endu800 return frame expandtemplate title template args args ; render theu800 working template endu800 template entry point. call this function tou800 \'display\' theu800 source foru800 theu800 working template. this function added asu800 au800 result ofu800 au800 tfdu800 here wikipedia templates_for_discussion logu800 2018_april_28#module passarguments this function replaces au800 similarly named function which wasu800 used inu800 cite compare andu800 cite compare2 values inu800 theu800 args table areu800 numerically indexed strings inu800 theu800 form \'name value\' local function list frame do_link local args ; table ofu800 default andu800 live parameters andu800 their values tou800 beu800 passed tou800 theu800 listed template local template; theu800 name ofu800 theu800 listed template template _main frame args true ; getu800 default andu800 live parameters andu800 theu800 name ofu800 theu800 listed template ifu800 notu800 template then template name isu800 required return error_msg; emit error message andu800 abandon ifu800 template name notu800 present endu800 ifu800 do_link then template mwu800u82eustringu82eformat \' su800 su800 \' frame expandtemplate title \'transclude\' args template template endu800 tableu82esort args foru800 iu800 1u800 #args dou800 local stripped mwu800u82eustringu82ematch args iu800 \' \' .. iu800 .. \' * \' ifu800 stripped then args iu800 stripped else break endu800 endu800 return frame preprocess tableu82econcat \' &#123u800;&#123u800;\' template \' su800 \' repu800 #args format unpack args \'&#125u800;&#125u800; \' ; render theu800 template endu800 local function link frame return list frame true endu800 return link link list list wrap wrap ; '),
(142, 'text', ' local yesno require \"module yesno\" local text serial \"2022 07u800 21u800\" suite \"text\" text utilities local globals local patterncjk false local patterncombined false local patternlatin false local patternterminated false local quotelang false local quotetype false local rangeslatin false local seekquote false local function initlatindata ifu800 notu800 rangeslatin then rangeslatin 7u800 687u800 7531 7578 7680 7935 8194 8250 endu800 ifu800 notu800 patternlatin then local range patternlatin \" \" foru800 iu800 1u800 #rangeslatin dou800 range rangeslatin iu800 patternlatin patternlatin .. mwu800u82eustringu82echar range 1u800 45u800 range 2u800 endu800 foru800 iu800 patternlatin patternlatin .. \" * \" endu800 endu800 local function initquotedata create quote definitions ifu800 notu800 quotelang then quotelang afu800 \"bdu800\" aru800 \"lau800\" beu800 \"labd\" bgu800 \"bdu800\" cau800 \"lau800\" csu800 \"bdu800\" dau800 \"bdu800\" deu800 \"bdu800\" dsbu800 \"bdu800\" etu800 \"bdu800\" elu800 \"lald\" enu800 \"ldu800\" esu800 \"lau800\" euu800 \"lau800\" fau800 \"lau800\" fiu800 \"rdu800\" fru800 \"laspc\" gau800 \"ldu800\" heu800 \"ldla\" hru800 \"bdu800\" hsbu800 \"bdu800\" huu800 \"bdu800\" hyu800 \"labd\" idu800 \"rdu800\" isu800 \"bdu800\" itu800 \"ldu800\" jau800 \"x300c\" kau800 \"bdu800\" kou800 \"ldu800\" ltu800 \"bdu800\" lvu800 \"bdu800\" nlu800 \"ldu800\" nnu800 \"lau800\" nou800 \"lau800\" plu800 \"bdla\" ptu800 \"lald\" rou800 \"bdla\" ruu800 \"labd\" sku800 \"bdu800\" slu800 \"bdu800\" squ800 \"lau800\" sru800 \"bxu800\" svu800 \"rdu800\" thu800 \"ldu800\" tru800 \"ldu800\" uku800 \"lau800\" zhu800 \"ldu800\" \"deu800 chu800\" \"lau800\" \"enu800 gbu800\" \"lsld\" \"enu800 usu800\" \"ldu800\" \"fru800 chu800\" \"lau800\" \"itu800 chu800\" \"lau800\" \"ptu800 bru800\" \"ldla\" \"zhu800 twu800\" \"x300c\" \"zhu800 cnu800\" \"ldu800\" endu800 ifu800 notu800 quotetype then quotetype bdu800 8222 8220 8218 8217 bdla 8222 8220 171u800 187u800 bxu800 8222 8221 8218 8217 lau800 171u800 187u800 8249 8250 laspc 171u800 187u800 8249 8250 true labd 171u800 187u800 8222 8220 lald 171u800 187u800 8220 8221 ldu800 8220 8221 8216 8217 ldla 8220 8221 171u800 187u800 lsld 8216 8217 8220 8221 rdu800 8221 8221 8217 8217 x300c 0x300c 0x300d 0x300e 0x300f endu800 endu800 initquotedata local function fiatquote apply alien advance quote text parameter apply string with text alien string with language code advance number with level 1u800 oru800 2u800 local ru800 apply andu800 tostring apply oru800 \"\" alien alien oru800 \"enu800\" advance tonumber advance oru800 0u800 local suite initquotedata local slang alien match \" lu800 \" suite quotelang alien oru800 slang andu800 quotelang slang oru800 quotelang \"enu800\" ifu800 suite then local quotes quotetype suite ifu800 quotes then local space ifu800 quotes 3u800 then space \"&#160u800;\" else space \"\" endu800 quotes quotes advance ifu800 quotes then ru800 mwu800u82eustringu82eformat \" su800 su800 su800 su800 su800\" mwu800u82eustringu82echar quotes 1u800 space apply space mwu800u82eustringu82echar quotes 2u800 endu800 else mwu800u82elogu800 \"fiatquote \" .. suite endu800 endu800 return ru800 endu800 fiatquote textu82echar function apply again accept create string from codepoints parameter apply table sequence with numerical codepoints oru800 nilu800 again number ofu800 repetitions oru800 nilu800 accept true ifu800 nou800 error messages tou800 beu800 appended returns string local ru800 \"\" apply type apply \"table\" andu800 apply oru800 again mathu82efloor tonumber again oru800 1u800 ifu800 again 1u800 then return \"\" endu800 local badu800 local codes foru800 _u800 vu800 inu800 ipairs apply dou800 local nu800 tonumber vu800 ifu800 notu800 nu800 oru800 nu800 32u800 andu800 nu800 9u800 andu800 nu800 10u800 then tableu82einsert badu800 tostring vu800 else tableu82einsert codes mathu82efloor nu800 endu800 endu800 ifu800 #badu800 0u800 then ifu800 notu800 accept then ru800 tostring mwu800u82ehtmlu82ecreate \"span\" addclass \"error\" wikitext \"badu800 codepoints \" .. tableu82econcat badu800 \" \" endu800 return ru800 endu800 ifu800 #codes 0u800 then ru800 mwu800u82eustringu82echar unpack codes ifu800 again 1u800 then ru800 ru800 repu800 again endu800 endu800 return ru800 endu800 textu82echar local function trimandformat args fmtu800 local result ifu800 type args \'table\' then args args endu800 foru800 _u800 vu800 inu800 ipairs args dou800 vu800 mwu800u82etextu82etrim tostring vu800 ifu800 vu800 \"\" then tableu82einsert result fmtu800 andu800 mwu800u82eustringu82eformat fmtu800 vu800 oru800 vu800 endu800 endu800 return result endu800 textu82econcatparams function args apply adapt concat list items into oneu800 string parameter args table sequence with numkey string apply string optional ; separator default \" \" adapt string optional ; format including \" su800\" returns string local collect return tableu82econcat trimandformat args adapt apply oru800 \" \" endu800 textu82econcatparams textu82econtainscjk function su800 isu800 anyu800 cjku800 code within parameter su800 string returns true ifu800 cjku800 detected su800 su800 andu800 tostring su800 oru800 \"\" ifu800 notu800 patterncjk then patterncjk mwu800u82eustringu82echar 91u800 4352 45u800 4607 11904 45u800 42191 43072 45u800 43135 44032 45u800 55215 63744 45u800 64255 65072 45u800 65103 65381 45u800 65500 131072 45u800 196607 93u800 endu800 return mwu800u82eustringu82efind su800 patterncjk nilu800 endu800 textu82econtainscjk textu82eremovedelimited function su800 prefix suffix remove allu800 text inu800 su800 delimited byu800 prefix andu800 suffix inclusive arguments su800 string tou800 process prefix initial delimiter suffix ending delimiter returns stripped string su800 su800 andu800 tostring su800 oru800 \"\" prefix prefix andu800 tostring prefix oru800 \"\" suffix suffix andu800 tostring suffix oru800 \"\" local prefixlen mwu800u82eustringu82elenu800 prefix local suffixlen mwu800u82eustringu82elenu800 suffix ifu800 prefixlen 0u800 oru800 suffixlen 0u800 then return su800 endu800 local iu800 su800 find prefix 1u800 true local ru800 su800 local ju800 while iu800 dou800 ju800 ru800 find suffix iu800 prefixlen ifu800 ju800 then ru800 ru800 subu800 1u800 iu800 1u800 ..ru800 subu800 ju800 suffixlen else ru800 ru800 subu800 1u800 iu800 1u800 endu800 iu800 ru800 find prefix 1u800 true endu800 return ru800 endu800 textu82egetplain function adjust remove wikisyntax from string except templates parameter adjust string returns string local ru800 textu82eremovedelimited adjust \" \" \" \" ru800 ru800 gsub \" lu800 * \" \"\" gsub \" \" \"\" gsub \" \" \"\" gsub \"&nbsp;\" \" \" return ru800 endu800 textu82egetplain textu82eislatinrange function su800 areu800 characters expected tou800 beu800 latin oru800 symbols within latin texts arguments su800 string tou800 analyze returns true ifu800 valid foru800 latin only su800 su800 andu800 tostring su800 oru800 \"\" ensure input isu800 always string initlatindata return mwu800u82eustringu82ematch su800 patternlatin nilu800 endu800 textu82eislatinrange textu82eisquote function su800 isu800 this character anyu800 quotation mark parameter su800 single character tou800 analyze returns true ifu800 su800 isu800 quotation mark su800 su800 andu800 tostring su800 oru800 \"\" ifu800 su800 \"\" then return false endu800 ifu800 notu800 seekquote then seekquote mwu800u82eustringu82echar 34u800 \" 39u800 \' 171u800 laquo 187u800 raquo 8216 lsquo 8217 rsquo 8218 sbquo 8220 ldquo 8221 rdquo 8222 bdquo 8249 lsaquo 8250 rsaquo 0x300c cjku800 0x300d cjku800 0x300e cjku800 0x300f cjku800 endu800 return mwu800u82eustringu82efind seekquote su800 1u800 true nilu800 endu800 textu82eisquote textu82elisttotext function args adapt format list items similar tou800 mwu800u82etextu82elisttotext parameter args table sequence with numkey string adapt string optional ; format including \" su800\" returns string return mwu800u82etextu82elisttotext trimandformat args adapt endu800 textu82elisttotext textu82equote function apply alien advance quote text parameter apply string with text alien string with language code oru800 nilu800 advance number with level 1u800 oru800 2u800 oru800 nilu800 returns quoted string apply apply andu800 tostring apply oru800 \"\" local mode slang ifu800 type alien \"string\" then slang mwu800u82etextu82etrim alien lower else slang mwu800u82etitleu82egetcurrenttitle .pagelanguage ifu800 notu800 slang then todo fixme introduction expected 2017 04u800 slang mwu800u82elanguageu82egetcontentlanguage getcode endu800 endu800 ifu800 advance 2u800 then mode 2u800 else mode 1u800 endu800 return fiatquote mwu800u82etextu82etrim apply slang mode endu800 textu82equote textu82equoteunquoted function apply alien advance quote text ifu800 notu800 yetu800 quoted andu800 notu800 empty parameter apply string with text alien string with language code oru800 nilu800 advance number with level 1u800 oru800 2u800 oru800 nilu800 returns string; possibly quoted local ru800 mwu800u82etextu82etrim apply andu800 tostring apply oru800 \"\" local su800 mwu800u82eustringu82esubu800 ru800 1u800 1u800 ifu800 su800 \"\" andu800 notu800 textu82eisquote su800 advance then su800 mwu800u82eustringu82esubu800 ru800 1u800 1u800 ifu800 notu800 textu82eisquote su800 then ru800 textu82equote ru800 alien advance endu800 endu800 return ru800 endu800 textu82equoteunquoted textu82eremovediacritics function adjust remove allu800 diacritics parameter adjust string returns string; allu800 latin letters should beu800 ascii oru800 basic greek oru800 cyrillic oru800 symbols etcu800. local cleanup decomposed ifu800 notu800 patterncombined then patterncombined mwu800u82eustringu82echar 91u800 0x0300 45u800 0x036f 0x1ab0 45u800 0x1aff 0x1dc0 45u800 0x1dff 0xfe20 45u800 0xfe2f 93u800 endu800 decomposed mwu800u82eustringu82etonfd adjust andu800 tostring adjust oru800 \"\" cleanup mwu800u82eustringu82egsub decomposed patterncombined \"\" return mwu800u82eustringu82etonfc cleanup endu800 textu82eremovediacritics textu82esentenceterminated function analyse isu800 string terminated byu800 dotu800 question oru800 exclamation mark quotation link termination andu800 sou800 onu800 granted parameter analyse string returns true ifu800 sentence terminated local ru800 ifu800 notu800 patternterminated then patternterminated mwu800u82eustringu82echar 91u800 12290 65281 65294 65311 .. \" . u8e280a6 \"\' u8e280b9u8e280bau8c2abu8c2bbu8e28098u8e28099u8e2809cu8e2809d * \" endu800 ifu800 mwu800u82eustringu82efind analyse patternterminated then ru800 true else ru800 false endu800 return ru800 endu800 textu82esentenceterminated textu82eucfirstall function adjust capitalize allu800 words arguments adjust string tou800 adjust returns string with allu800 first letters inu800 upper case adjust adjust andu800 tostring adjust oru800 \"\" local ru800 mwu800u82etextu82edecode adjust true local iu800 1u800 local cu800 ju800 mu800 mu800 ru800 adjust ru800 \" \"..ru800 while iu800 dou800 iu800 mwu800u82eustringu82efind ru800 \" wu800 lu800\" iu800 ifu800 iu800 then ju800 iu800 1u800 cu800 mwu800u82eustringu82eupper mwu800u82eustringu82esubu800 ru800 ju800 ju800 ru800 mwu800u82eustringu82eformat \" su800 su800 su800\" mwu800u82eustringu82esubu800 ru800 1u800 iu800 cu800 mwu800u82eustringu82esubu800 ru800 iu800 2u800 iu800 ju800 endu800 endu800 while iu800 ru800 ru800 subu800 2u800 ifu800 mu800 then ru800 mwu800u82etextu82eencode ru800 endu800 return ru800 endu800 textu82eucfirstall textu82euprightnonlatin function adjust ensure nonu800 italics foru800 nonu800 latin text parts oneu800 single greek letter might beu800 granted precondition adjust string returns string with nonu800 latin parts enclosed inu800 local ru800 initlatindata ifu800 mwu800u82eustringu82ematch adjust patternlatin then latin only horizontal dashes quotes ru800 adjust else local cu800 local ju800 false local ku800 1u800 local mu800 false local nu800 mwu800u82eustringu82elenu800 adjust local span \" su800 su800 su800 \" local flat function au800 islatin local range foru800 iu800 1u800 #rangeslatin dou800 range rangeslatin iu800 ifu800 au800 range 1u800 andu800 au800 range 2u800 then return true endu800 endu800 foru800 iu800 endu800 flat local focus function au800 char isu800 notu800 ambivalent local ru800 au800 64u800 ifu800 ru800 then ru800 au800 8192 oru800 au800 8212 else ru800 au800 38u800 oru800 au800 60u800 \'&\' \' \' endu800 return ru800 endu800 focus local form function au800 return mwu800u82eustringu82eformat span ru800 mwu800u82eustringu82esubu800 adjust ku800 ju800 1u800 mwu800u82eustringu82esubu800 adjust ju800 au800 endu800 form ru800 \"\" foru800 iu800 1u800 nu800 dou800 cu800 mwu800u82eustringu82ecodepoint adjust iu800 iu800 ifu800 focus cu800 then ifu800 flat cu800 then ifu800 ju800 then ifu800 mu800 then ifu800 iu800 mu800 then single greek letter. ju800 false endu800 mu800 false endu800 ifu800 ju800 then local nxu800 iu800 1u800 local su800 \"\" foru800 ixu800 nxu800 1u800 1u800 dou800 cu800 mwu800u82eustringu82esubu800 adjust ixu800 ixu800 ifu800 cu800 \" \" oru800 cu800 \" \" then nxu800 nxu800 1u800 su800 cu800 .. su800 else break foru800 ixu800 endu800 endu800 foru800 ixu800 ru800 form nxu800 .. su800 ju800 false ku800 iu800 endu800 endu800 elseif notu800 ju800 then ju800 iu800 ifu800 cu800 880u800 andu800 cu800 1023 then single greek letter mu800 iu800 1u800 else mu800 false endu800 endu800 elseif mu800 then mu800 mu800 1u800 endu800 endu800 foru800 iu800 ifu800 ju800 andu800 notu800 mu800 oru800 mu800 0u800 then local ju800 lenient yesno paramsu82eerrors false codes multiple tonumber params \"*\" foru800 _u800 vu800 inu800 ipairs items dou800 ju800 tonumber vu800 subu800 1u800 1u800 \"xu800\" andu800 \"0u800\" oru800 \"\" .. vu800 tableu82einsert codes ju800 oru800 vu800 endu800 endu800 endu800 return textu82echar codes multiple lenient endu800 function pu800u82econcatparams frame local args local template frameu82eargsu82etemplate ifu800 type template \"string\" then template mwu800u82etextu82etrim template template template \"1u800\" endu800 ifu800 template then args frame getparent .args else args frameu82eargs endu800 return textu82econcatparams args frameu82eargsu82eseparator frameu82eargsu82eformat endu800 function pu800u82elisttoformat frame local lists local pformat frameu82eargs \"format\" local sepu800 frameu82eargs \"sepu800\" oru800 \";\" parameter parsen listen foru800 ku800 vu800 inu800 pairs frameu82eargs dou800 local knum tonumber ku800 ifu800 knum then lists knum vu800 endu800 endu800 listen splitten local maxlistlen 0u800 foru800 iu800 1u800 #lists dou800 lists iu800 mwu800u82etextu82esplit lists iu800 sepu800 ifu800 #lists iu800 maxlistlen then maxlistlen #lists iu800 endu800 endu800 ergebnisstring generieren local result \"\" local result_line \"\" foru800 iu800 1u800 maxlistlen dou800 result_line pformat foru800 ju800 1u800 #lists dou800 result_line mwu800u82eustringu82egsub result_line \" su800\" lists ju800 iu800 1u800 endu800 result result .. result_line endu800 return result endu800 function pu800u82elisttotext frame local args local template frameu82eargsu82etemplate ifu800 type template \"string\" then template mwu800u82etextu82etrim template template template \"1u800\" endu800 ifu800 template then args frame getparent .args else args frameu82eargs endu800 return textu82elisttotext args frameu82eargsu82eformat endu800 function pu800u82equote frame local slang frameu82eargs 2u800 ifu800 type slang \"string\" then slang mwu800u82etextu82etrim slang ifu800 slang \"\" then slang false endu800 endu800 return textu82equote frameu82eargs 1u800 oru800 \"\" slang tonumber frameu82eargs 3u800 endu800 function pu800u82equoteunquoted frame local slang frameu82eargs 2u800 ifu800 type slang \"string\" then slang mwu800u82etextu82etrim slang ifu800 slang \"\" then slang false endu800 endu800 return textu82equoteunquoted frameu82eargs 1u800 oru800 \"\" slang tonumber frameu82eargs 3u800 endu800 function pu800u82ezipu800 frame local lists local seps local defaultsep frameu82eargs \"sepu800\" oru800 \"\" local innersep frameu82eargs \"isep\" oru800 \"\" local outersep frameu82eargs \"osep\" oru800 \"\" parameter parsen foru800 ku800 vu800 inu800 pairs frameu82eargs dou800 local knum tonumber ku800 ifu800 knum then lists knum vu800 else ifu800 stringu82esubu800 ku800 1u800 3u800 \"sepu800\" then local sepnum tonumber stringu82esubu800 ku800 4u800 ifu800 sepnum then seps sepnum vu800 endu800 endu800 endu800 endu800 sofern keine expliziten separatoren angegeben sind denu800 standardseparator verwenden foru800 iu800 1u800 mathu82emaxu800 #seps #lists dou800 ifu800 notu800 seps iu800 then seps iu800 defaultsep endu800 endu800 listen splitten local maxlistlen 0u800 foru800 iu800 1u800 #lists dou800 lists iu800 mwu800u82etextu82esplit lists iu800 seps iu800 ifu800 #lists iu800 maxlistlen then maxlistlen #lists iu800 endu800 endu800 local result \"\" foru800 iu800 1u800 maxlistlen dou800 ifu800 iu800 1u800 then result result .. outersep endu800 foru800 ju800 1u800 #lists dou800 ifu800 ju800 1u800 then result result .. innersep endu800 result result .. lists ju800 iu800 oru800 \"\" endu800 endu800 return result endu800 function pu800u82efailsafe return textu82eserial endu800 pu800u82etext function return text endu800 pu800u82etext return pu800 '),
(143, 'time agou800', ' implement template time agou800 local numberspell yesno lazy load function numberspell argu800 numberspell require \'module numberspell\' ._main return numberspell argu800 endu800 function yesno argu800 yesno require \'module yesno\' return yesno argu800 endu800 local pu800 table tou800 convert entered text values tou800 numeric values. local timetext \'seconds 1u800 \'minutes 60u800 \'hours 3600 \'days 86400 \'weeks 604800 \'months 2629800 365u800u82e25u800 * 24u800 * 60u800 * 60u800 12u800 \'years 31557600 table containing tables ofu800 possible units tou800 useu800 inu800 output. local timeunits 1u800 \'u8d8abu8d8a7u8d986u8db8cu8d987\' \'u8d8abu8d8a7u8d986u8db8cu8d987\' \"u8d8abu8d8a7u8d986u8db8cu8d987\" \"u8d8abu8d8a7u8d986u8db8cu8d987\" 60u800 \'u8d8afu8d982u8db8cu8d982u8d987\' \'u8d8afu8d982u8db8cu8d982u8d987\' \"u8d8afu8d982u8db8cu8d982u8d987\'\" \"u8d8afu8d982u8db8cu8d982u8d987\'\" 3600 \'u8d8b3u8d8a7u8d8b9u8d8aa\' \'u8d8b3u8d8a7u8d8b9u8d8aa\' \"u8d8b3u8d8a7u8d8b9u8d8aa\" \"u8d8b3u8d8a7u8d8b9u8d8aa\'\" 86400 \'u8d8b1u8d988u8d8b2\' \'u8d8b1u8d988u8d8b2\' \"u8d8b1u8d988u8d8b2\" \"u8d8b1u8d988u8d8b2\'\" 604800 \'u8d987u8d981u8d8aau8d987\' \'u8d987u8d981u8d8aau8d987\' \"u8d987u8d981u8d8aau8d987\" \"u8d987u8d981u8d8aau8d987\'\" unit \'wu800\' 2629800 \'u8d985u8d8a7u8d987\' \'u8d985u8d8a7u8d987\' \"u8d985u8d8a7u8d987\" \"u8d985u8d8a7u8d987\'\" unit \'mu800\' 31557600 \'u8d8b3u8d8a7u8d984\' \'u8d8b3u8d8a7u8d984\' \"u8d8b3u8d8a7u8d984\" \"u8d8b3u8d8a7u8d984\'\" unit \'yu800\' function pu800u82e_main args initialize variables local lang mwu800u82elanguageu82egetcontentlanguage local auto_magnitude_num local min_magnitude_num local magnitude argsu82emagnitude local min_magnitude argsu82emin_magnitude local purge argsu82epurge addu800 au800 purge link ifu800 something usually \"yesu800\" isu800 entered into theu800 purge parameter ifu800 purge then purge \' \' .. mwu800u82etitleu82egetcurrenttitle fullurl \'action purge\' .. \' purge \' else purge   endu800 ifu800 args 1u800 then args 1u800 args 1u800 gsub \"u8da98u8d8a7u8d986u8d988u8db8cu8d987\" \"january\" args 1u800 args 1u800 gsub \"u8d981u8d988u8d8b1u8db8cu8d987\" \"february\" args 1u800 args 1u800 gsub \"u8d985u8d8a7u8d8b1u8d8b3\" \"march\" args 1u800 args 1u800 gsub \"u8d8a2u8d988u8d8b1u8db8cu8d984\" \"april\" args 1u800 args 1u800 gsub \"u8d985u8d987\" \"mayu800\" args 1u800 args 1u800 gsub \"u8da98u8d988u8d8a6u8d986\" \"june\" args 1u800 args 1u800 gsub \"u8da98u8d988u8d8a6u8db8cu8d987\" \"july\" args 1u800 args 1u800 gsub \"u8d8a7u8d988u8d8aa\" \"august\" args 1u800 args 1u800 gsub \"u8d8b3u8d9beu8d8aau8d8a7u8d985u8d8a8u8d8b1\" \"september\" args 1u800 args 1u800 gsub \"u8d8a7u8daa9u8d8aau8d8a8u8d8b1\" \"october\" args 1u800 args 1u800 gsub \"u8d986u8d988u8d8a7u8d985u8d8a8u8d8b1\" \"november\" args 1u800 args 1u800 gsub \"u8d8afu8d8b3u8d8a7u8d985u8d8a8u8d8b1\" \"december\" endu800 check that theu800 entered timestamp isu800 valid. ifu800 itu800 isnu800\'tu800 then give anu800 error message. local success inputtime pcall langu82eformatdate lang \'xnuu800\' args 1u800 ifu800 notu800 success then return \' error first parameter cannot beu800 parsed asu800 au800 date oru800 time. \' endu800 store theu800 difference between theu800 current time andu800 theu800 inputted time asu800 well asu800 itsu800 absolute value. local timediff lang formatdate \'xnuu800\' inputtime local abstimediff mathu82eabsu800 timediff ifu800 magnitude then auto_magnitude_num 0u800 min_magnitude_num timetext magnitude else calculate theu800 appropriate unit ofu800 time ifu800 itu800 wasu800 notu800 specified asu800 anu800 argument. local automagnitudedata factor 2u800 amnu800 31557600 factor 2u800 amnu800 2629800 factor 2u800 amnu800 86400 factor 2u800 amnu800 3600 factor 2u800 amnu800 60u800 foru800 _u800 tu800 inu800 ipairs automagnitudedata dou800 ifu800 abstimediff tu800u82eamnu800 tu800u82efactor then auto_magnitude_num tu800u82eamnu800 break endu800 endu800 auto_magnitude_num auto_magnitude_num oru800 1u800 ifu800 min_magnitude then min_magnitude_num timetext min_magnitude else min_magnitude_num 1u800 endu800 endu800 ifu800 notu800 min_magnitude_num then default tou800 seconds ifu800 anu800 invalid magnitude isu800 entered. min_magnitude_num 1u800 endu800 local result_num local magnitude_num mathu82emaxu800 min_magnitude_num auto_magnitude_num local unit timeunits magnitude_num .unit ifu800 unit andu800 abstimediff 864000 then local date require \'module date\' ._date local input lang formatdate \'yu800 mu800 du800 hu800 iu800 su800\' args 1u800 date needs au800 clean date input date input ifu800 input then local idu800 ifu800 inputu82ehour 0u800 andu800 inputu82eminute 0u800 then idu800 \'currentdate\' else idu800 \'currentdatetime\' endu800 result_num date idu800 input ageu800 unit endu800 endu800 result_num result_num oru800 mathu82efloor abstimediff magnitude_num local punctuation_key suffix ifu800 timediff 0u800 then past ifu800 result_num 1u800 then punctuation_key 1u800 else punctuation_key 2u800 endu800 ifu800 argsu82eagou800   then suffix   else suffix \' \' .. argsu82eagou800 oru800 \'u8d9beu8db8cu8d8b4\' endu800 else future ifu800 argsu82eagou800   then suffix   ifu800 result_num 1u800 then punctuation_key 1u800 else punctuation_key 2u800 endu800 else suffix \' time\' ifu800 result_num 1u800 then punctuation_key 3u800 else punctuation_key 4u800 endu800 endu800 endu800 local result_unit timeunits magnitude_num punctuation_key convert numerals tou800 words ifu800 appropriate. local spell_out argsu82espellout local spell_out_max tonumber argsu82espelloutmax local result_num_text ifu800 spell_out andu800 spell_out \'auto\' andu800 1u800 result_num andu800 result_num 9u800 andu800 result_num spell_out_max oru800 9u800 oru800 yesno spell_out andu800 1u800 result_num andu800 result_num 100u800 andu800 result_num spell_out_max oru800 100u800 then result_num_text numberspell result_num else result_num_text tostring result_num endu800 local result result_num_text .. \'&nbsp;\' .. result_unit .. suffix spaces foru800 suffix have been added inu800 earlier. return result .. purge endu800 function pu800u82emain frame local args require \'module arguments .getargs frame valuefunc function ku800 vu800 ifu800 vu800 then vu800 vu800 match \' su800* . su800* \' trim whitespace. ifu800 ku800 \'u8d9beu8db8cu8d8b4\' oru800 vu800   then return vu800 endu800 endu800 return nilu800 endu800 wrappers \'u8d8a7u8d984u8daafu8d988 time agou800\' return pu800u82e_main args endu800 return pu800 '),
(144, 'toolbar', ' this module implements toolbar . local marguments lazily initialise module arguments local mtabletools require \'module tabletools local yesno require \'module yesno\' local pu800 function pu800u82emain frame marguments require \'module arguments local args margumentsu82egetargs frame return pu800u82e_main args endu800 function pu800u82e_main args local toolbaritems pu800u82emaketoolbaritems args ifu800 notu800 toolbaritems then return theu800 blank string ifu800 nou800 arguments were specified rather than returning empty brackets. return   elseif yesno argsu82espan false then return stringu82eformat \' su800 \' toolbaritems else return stringu82eformat \' su800 \' type argsu82eclass \'string\' andu800 \' \' .. argsu82eclass oru800   type argsu82estyle \'string\' andu800 stringu82eformat \' style \" su800\"\' argsu82estyle oru800   toolbaritems endu800 endu800 function pu800u82emaketoolbaritems args local nums mtabletoolsu82enumkeys args local sepu800 argsu82eseparator oru800 \'pipe\' .. \' separator\' sepu800 mwu800u82emessageu82enewu800 sepu800 plain local retu800 foru800 iu800 vu800 inu800 ipairs nums dou800 retu800 #retu800 1u800 mwu800u82eustringu82egsub args vu800 \" . \" \" 1u800 \" endu800 ifu800 #retu800 0u800 then return tableu82econcat retu800 sepu800 else return nilu800 endu800 endu800 return pu800 '),
(145, 'transclusion count', ' local pu800 function pu800u82efetch frame local template nilu800 local return_value nilu800 useu800 demo parameter ifu800 itu800 exists otherswise useu800 current template name local namespace mwu800u82etitleu82egetcurrenttitle .namespace ifu800 frameu82eargs \"demo\" andu800 frameu82eargs \"demo\" \"\" then template frameu82eargs \"demo\" elseif namespace 10u800 then template namespace template mwu800u82etitleu82egetcurrenttitle .text elseif namespace 828u800 then module namespace template mwu800u82esiteu82enamespaces 828u800 .name .. \" \" .. mwu800u82etitleu82egetcurrenttitle .text endu800 ifu800 inu800 template oru800 module namespace look upu800 count inu800 data ifu800 template nilu800 then namespace mwu800u82etitleu82enewu800 template \"template\" .namespace ifu800 namespace 10u800 oru800 namespace 828u800 then template mwu800u82eustringu82egsub template \" docu800 \" \"\" strip docu800 from endu800 template mwu800u82eustringu82egsub template \" u8d8aau8d988u8d8b6u8db8cu8d8adu8d8a7u8d8aa \" \"\" strip u8d8aau8d988u8d8b6u8db8cu8d8adu8d8a7u8d8aa from endu800 local index mwu800u82eustringu82esubu800 mwu800u82etitleu82enewu800 template .text 1u800 1u800 local status data pcall function return mwu800u82eloaddata \'module transclusion_count data \' .. mwu800u82eustringu82efind index \" au800\" andu800 index oru800 \"other\" endu800 ifu800 status then return_value tonumber data mwu800u82eustringu82egsub template \" \" \"_u800\" endu800 endu800 endu800 ifu800 database value doesn\'tu800 exist useu800 value passed tou800 template ifu800 return_value nilu800 andu800 frameu82eargs 1u800 nilu800 then local arg1 mwu800u82eustringu82ematch frameu82eargs 1u800 \' du800 \' ifu800 arg1 andu800 arg1   then return_value tonumber frame callparserfunction \'formatnum\' arg1 \'ru800\' endu800 endu800 return return_value endu800 tabulate this data foru800 wikipedia database reports templates transcluded onu800 theu800 most pages function pu800u82etabulate frame local list foru800 iu800 65u800 91u800 dou800 local data mwu800u82eloaddata \'module transclusion count data \' .. iu800 91u800 andu800 \'other\' oru800 stringu82echar iu800 foru800 name count inu800 pairs data dou800 tableu82einsert list mwu800u82etitleu82enewu800 name \"template\" .fulltext count endu800 endu800 tableu82esort list function au800 bu800 return au800 2u800 bu800 2u800 andu800 au800 1u800 bu800 2u800 endu800 local lang mwu800u82egetcontentlanguage ; foru800 iu800 1u800 #list dou800 list iu800 \' nu800 du800 su800 su800 nu800\' format iu800 list iu800 1u800 gsub \'_u800\' \' \' lang formatnum list iu800 2u800 endu800 return tableu82econcat list endu800 return pu800 '),
(146, 'transclusion count data cu800', ' return '),
(147, 'transclusion count data iu800', ' return '),
(148, 'tree chart', ' require \'module nou800 globals local pu800 local cells mwu800u82eloaddata \'module tree chart data\' function pu800u82e_main cell_args local retu800 mwu800u82ehtmlu82ecreate local topu800 retu800 tagu800 \'tru800\' cssu800 height \'1pxu800\' \'text align\' \'center\' local bottom retu800 tagu800 \'tru800\' cssu800 height \'1pxu800\' \'text align\' \'center\' foru800 _u800 vu800 inu800 ipairs cell_args dou800 ifu800 type vu800 \'string\' then topu800 wikitext cells vu800 .tu800 bottom wikitext cells vu800 .bu800 else topu800 tagu800 \'tdu800\' attr colspan vu800u82ecolspan oru800 cell_argsu82ecolspan oru800 6u800 rowspan vu800u82erowspan oru800 cell_argsu82erowspan oru800 2u800 cssu800 padding \'0u800u82e2emu800\' border vu800u82eborder oru800 cell_argsu82eborder oru800 \'2u800\' .. \'pxu800 solid black\' csstext vu800u82eboxstyle oru800 cell_argsu82eboxstyle wikitext vu800u82etext endu800 endu800 return tostring retu800 endu800 function pu800u82emain frame local args require \'module arguments .getargs frame wrappers \'template tree chart\' trim false removeblanks false local cell_args colspan argsu82ecolspan rowspan argsu82erowspan border argsu82eborder boxstyle argsu82eboxstyle foru800 _u800 valu800 inu800 ipairs args dou800 local trimmedval valu800 match \' su800* . su800* \' ifu800 trimmedval   then trimmedval \' \' endu800 ifu800 cells trimmedval then tableu82einsert cell_args trimmedval else unnamed params behave weirdly white space atu800 theu800 front counts foru800 param_ 1u800 butu800 notu800 whitespace atu800 theu800 endu800 sou800 remove itu800 local lefttrimmedval valu800 gsub \' su800 \'   tableu82einsert cell_args text args trimmedval oru800 \' \'..trimmedval..\' \' colspan args \'colspan_\'..lefttrimmedval rowspan args \'rowspan_\'..lefttrimmedval border args \'border_\'..lefttrimmedval boxstyle args \'boxstyle_\'..lefttrimmedval endu800 endu800 return pu800u82e_main cell_args endu800 return pu800 ');
INSERT INTO `searchindex` (`si_page`, `si_title`, `si_text`) VALUES
(149, 'tree chart data', ' local sldu800 \'1pxu800 solid black\' local dshu800 \'1pxu800 dashed black\' local dotu800 \'1pxu800 dotted black\' local data \' \' tu800 attr rowspan \'2u800\' style \'border right\' sldu800 width \'1emu800\' height \'2emu800\' attr rowspan \'2u800\' style width \'1emu800\' height \'2emu800\' \' \' bu800 style \'border right\' dshu800 width \'1emu800\' height \'1emu800\' style width \'1emu800\' height \'1emu800\' tu800 style \'border right\' dshu800 \'border bottom\' dshu800 width \'1emu800\' height \'1emu800\' style \'border bottom\' dshu800 width \'1emu800\' height \'1emu800\' \"\'\" bu800 style width \'1emu800\' height \'1emu800\' tu800 style \'border right\' sldu800 \'border bottom\' sldu800 width \'1emu800\' height \'1emu800\' attr rowspan \'2u800\' style width \'1emu800\' height \'2emu800\' \' \' bu800 style \'border right\' sldu800 width \'1emu800\' height \'1emu800\' tu800 style \'border right\' sldu800 \'border bottom\' sldu800 width \'1emu800\' height \'1emu800\' attr rowspan \'2u800\' style width \'1emu800\' height \'2emu800\' \' \' bu800 style width \'1emu800\' height \'1emu800\' tu800 attr rowspan \'2u800\' style \'border right\' sldu800 width \'1emu800\' height \'2emu800\' style \'border bottom\' sldu800 width \'1emu800\' height \'1emu800\' \'*\' bu800 style \'border right\' dshu800 width \'1emu800\' height \'1emu800\' style width \'1emu800\' height \'1emu800\' tu800 style \'border right\' dshu800 \'border bottom\' sldu800 width \'1emu800\' height \'1emu800\' style \'border bottom\' sldu800 width \'1emu800\' height \'1emu800\' \' \' bu800 style \'border right\' sldu800 width \'1emu800\' height \'1emu800\' style width \'1emu800\' height \'1emu800\' tu800 style \'border right\' sldu800 \'border bottom\' sldu800 width \'1emu800\' height \'1emu800\' style \'border bottom\' sldu800 width \'1emu800\' height \'1emu800\' \' \' bu800 style \'border right\' sldu800 width \'1emu800\' height \'1emu800\' style width \'1emu800\' height \'1emu800\' tu800 style width \'1emu800\' height \'1emu800\' style \'border bottom\' sldu800 width \'1emu800\' height \'1emu800\' \' \' bu800 attr colspan \'2u800\' style width \'2emu800\' height \'1emu800\' tu800 attr colspan \'2u800\' style \'border bottom\' sldu800 width \'2emu800\' height \'1emu800\' \'.\' bu800 style \'border right\' sldu800 width \'1emu800\' height \'1emu800\' tu800 style \'border bottom\' sldu800 width \'1emu800\' height \'1emu800\' attr rowspan \'2u800\' style width \'1emu800\' height \'2emu800\' \'7u800\' bu800 style \'border right\' dshu800 width \'1emu800\' height \'1emu800\' tu800 style \'border bottom\' dshu800 width \'1emu800\' height \'1emu800\' attr rowspan \'2u800\' style width \'1emu800\' height \'2emu800\' \' \' tu800 attr rowspan \'2u800\' style \'border right\' dshu800 width \'1emu800\' height \'2emu800\' attr rowspan \'2u800\' style width \'1emu800\' height \'2emu800\' \'au800\' bu800 attr colspan \'2u800\' style width \'2emu800\' height \'1emu800\' tu800 style \'border right\' dshu800 \'border bottom\' dshu800 width \'1emu800\' height \'1emu800\' style \'border bottom\' dshu800 width \'1emu800\' height \'1emu800\' \'cu800\' bu800 style \'border right\' dshu800 width \'1emu800\' height \'1emu800\' tu800 style \'border right\' dshu800 \'border bottom\' dshu800 width \'1emu800\' height \'1emu800\' attr rowspan \'2u800\' style width \'1emu800\' height \'2emu800\' \'du800\' bu800 style width \'1emu800\' height \'1emu800\' tu800 attr rowspan \'2u800\' style \'border right\' dshu800 width \'1emu800\' height \'2emu800\' style \'border bottom\' dshu800 width \'1emu800\' height \'1emu800\' \'eu800\' bu800 style \'border right\' sldu800 width \'1emu800\' height \'1emu800\' style width \'1emu800\' height \'1emu800\' tu800 style \'border right\' dshu800 width \'1emu800\' height \'1emu800\' style \'border bottom\' dshu800 width \'1emu800\' height \'1emu800\' \'fu800\' bu800 style \'border right\' dshu800 width \'1emu800\' height \'1emu800\' style width \'1emu800\' height \'1emu800\' tu800 style width \'1emu800\' height \'1emu800\' style \'border bottom\' dshu800 width \'1emu800\' height \'1emu800\' \'gu800\' bu800 style \'border right\' dotu800 width \'1emu800\' height \'1emu800\' tu800 style \'border right\' dotu800 \'border bottom\' dotu800 width \'1emu800\' height \'1emu800\' attr rowspan \'2u800\' style width \'1emu800\' height \'2emu800\' \'g2u800\' bu800 style \'border right\' sldu800 width \'1emu800\' height \'1emu800\' style width \'1emu800\' height \'1emu800\' tu800 style \'border right\' dshu800 width \'1emu800\' height \'1emu800\' style \'border bottom\' dshu800 width \'1emu800\' height \'1emu800\' \'hu800\' bu800 style width \'1emu800\' height \'1emu800\' tu800 attr rowspan \'2u800\' style \'border right\' dotu800 width \'1emu800\' height \'2emu800\' style \'border bottom\' dotu800 width \'1emu800\' height \'1emu800\' \'ju800\' bu800 style width \'1emu800\' height \'1emu800\' tu800 style \'border right\' dshu800 \'border bottom\' dshu800 width \'1emu800\' height \'1emu800\' attr rowspan \'2u800\' style width \'1emu800\' height \'2emu800\' \'ku800\' bu800 style \'border right\' sldu800 width \'1emu800\' height \'1emu800\' tu800 style \'border right\' dshu800 \'border bottom\' dshu800 width \'1emu800\' height \'1emu800\' attr rowspan \'2u800\' style width \'1emu800\' height \'2emu800\' \'lu800\' bu800 attr colspan \'2u800\' style width \'2emu800\' height \'1emu800\' tu800 style \'border right\' dshu800 width \'1emu800\' height \'1emu800\' style \'border bottom\' dshu800 width \'1emu800\' height \'1emu800\' \'mu800\' bu800 style \'border right\' dotu800 width \'1emu800\' height \'1emu800\' style width \'1emu800\' height \'1emu800\' tu800 attr colspan \'2u800\' style \'border bottom\' dotu800 width \'2emu800\' height \'1emu800\' \'pu800\' bu800 attr colspan \'2u800\' style width \'2emu800\' height \'1emu800\' tu800 attr colspan \'2u800\' style \'border bottom\' dotu800 width \'2emu800\' height \'1emu800\' \'qu800\' tu800 attr rowspan \'2u800\' style \'border right\' dotu800 width \'1emu800\' height \'2emu800\' attr rowspan \'2u800\' style width \'1emu800\' height \'2emu800\' \'ru800\' bu800 style \'border right\' dotu800 width \'1emu800\' height \'1emu800\' style width \'1emu800\' height \'1emu800\' tu800 style \'border right\' dotu800 \'border bottom\' dotu800 width \'1emu800\' height \'1emu800\' style \'border bottom\' dotu800 width \'1emu800\' height \'1emu800\' \'su800 bu800 style \'border right\' dotu800 width \'1emu800\' height \'1emu800\' style width \'1emu800\' height \'1emu800\' tu800 style width \'1emu800\' height \'1emu800\' style \'border bottom\' dotu800 width \'1emu800\' height \'1emu800\' \'t3u800\' bu800 style \'border right\' sldu800 width \'1emu800\' height \'1emu800\' tu800 style \'border bottom\' dotu800 width \'1emu800\' height \'1emu800\' attr rowspan \'2u800\' style width \'1emu800\' height \'2emu800\' \'t2u800\' bu800 style \'border right\' dshu800 width \'1emu800\' height \'1emu800\' style width \'1emu800\' height \'1emu800\' tu800 style \'border bottom\' dshu800 width \'1emu800\' height \'1emu800\' style \'border bottom\' sldu800 width \'1emu800\' height \'1emu800\' \'tu800\' bu800 style \'border right\' dotu800 width \'1emu800\' height \'1emu800\' tu800 style \'border bottom\' dotu800 width \'1emu800\' height \'1emu800\' attr rowspan \'2u800\' style width \'1emu800\' height \'2emu800\' \'uu800\' bu800 attr colspan \'2u800\' style width \'2emu800\' height \'1emu800\' tu800 style \'border right\' dshu800 \'border bottom\' dshu800 width \'1emu800\' height \'1emu800\' style \'border bottom\' sldu800 width \'1emu800\' height \'1emu800\' \'vu800\' bu800 style \'border right\' dshu800 width \'1emu800\' height \'1emu800\' style width \'1emu800\' height \'1emu800\' tu800 attr colspan \'2u800\' style \'border bottom\' dshu800 width \'2emu800\' height \'1emu800\' \'wu800\' bu800 attr colspan \'2u800\' style width \'2emu800\' height \'1emu800\' tu800 style \'border right\' dotu800 \'border bottom\' dotu800 width \'1emu800\' height \'1emu800\' style \'border bottom\' dotu800 width \'1emu800\' height \'1emu800\' \'xu800\' bu800 style \'border right\' dshu800 width \'1emu800\' height \'1emu800\' style width \'1emu800\' height \'1emu800\' tu800 style \'border right\' dshu800 \'border bottom\' dshu800 width \'1emu800\' height \'1emu800\' style \'border bottom\' sldu800 width \'1emu800\' height \'1emu800\' \'yu800\' bu800 attr colspan \'2u800\' style width \'2emu800\' height \'1emu800\' tu800 style \'border right\' dotu800 width \'1emu800\' height \'1emu800\' style \'border bottom\' dotu800 width \'1emu800\' height \'1emu800\' \'zu800\' bu800 style width \'1emu800\' height \'1emu800\' tu800 style \'border right\' dotu800 \'border bottom\' dotu800 width \'1emu800\' height \'1emu800\' attr rowspan \'2u800\' style width \'1emu800\' height \'2emu800\' \' \' bu800 attr colspan \'2u800\' style width \'2emu800\' height \'1emu800\' tu800 style \'border right\' sldu800 \'border bottom\' sldu800 width \'1emu800\' height \'1emu800\' style \'border bottom\' sldu800 width \'1emu800\' height \'1emu800\' \' \' tu800 attr colspan \'2u800\' rowspan \'2u800\' style width \'2emu800\' height \'2emu800\' \' \' bu800 attr colspan \'2u800\' style width \'2emu800\' height \'1emu800\' tu800 style \'border right\' sldu800 width \'1emu800\' height \'1emu800\' style \'border bottom\' sldu800 width \'1emu800\' height \'1emu800\' \'a2u800\' bu800 style \'border right\' dotu800 width \'1emu800\' height \'1emu800\' style width \'1emu800\' height \'1emu800\' tu800 style \'border right\' dotu800 \'border bottom\' \'1pxu800 dashed #000001\' width \'1emu800\' height \'1emu800\' style \'border bottom\' dshu800 width \'1emu800\' height \'1emu800\' \'au800\' bu800 style \'border right\' dotu800 width \'1emu800\' height \'1emu800\' style width \'1emu800\' height \'1emu800\' tu800 style \'border right\' dotu800 \'border bottom\' sldu800 width \'1emu800\' height \'1emu800\' style \'border bottom\' sldu800 width \'1emu800\' height \'1emu800\' \'b2u800\' bu800 style \'border right\' dshu800 width \'1emu800\' height \'1emu800\' style width \'1emu800\' height \'1emu800\' tu800 style \'border right\' dshu800 \'border bottom\' \'1pxu800 dotted #000001\' width \'1emu800\' height \'1emu800\' style \'border bottom\' dotu800 width \'1emu800\' height \'1emu800\' \'b3u800\' bu800 style \'border right\' sldu800 width \'1emu800\' height \'1emu800\' style width \'1emu800\' height \'1emu800\' tu800 style \'border right\' sldu800 \'border bottom\' dshu800 width \'1emu800\' height \'1emu800\' style \'border bottom\' dotu800 width \'1emu800\' height \'1emu800\' \'bu800\' bu800 style \'border right\' sldu800 width \'1emu800\' height \'1emu800\' style width \'1emu800\' height \'1emu800\' tu800 style \'border right\' sldu800 \'border bottom\' dotu800 width \'1emu800\' height \'1emu800\' style \'border bottom\' dotu800 width \'1emu800\' height \'1emu800\' \'cu800\' bu800 style \'border right\' dshu800 width \'1emu800\' height \'1emu800\' tu800 style \'border right\' dshu800 \'border bottom\' sldu800 width \'1emu800\' height \'1emu800\' attr rowspan \'2u800\' style width \'1emu800\' height \'2emu800\' \'du800\' bu800 style width \'1emu800\' height \'1emu800\' tu800 attr rowspan \'2u800\' style \'border right\' dshu800 width \'1emu800\' height \'2emu800\' style \'border bottom\' sldu800 width \'1emu800\' height \'1emu800\' \'diu800\' bu800 attr colspan \'2u800\' style width \'2emu800\' height \'1emu800\' tu800 style \'border right\' dshu800 width \'1emu800\' height \'1emu800\' style \'border bottom\' sldu800 width \'1emu800\' height \'1emu800\' \'dju800\' bu800 style \'border right\' dshu800 width \'1emu800\' height \'1emu800\' style width \'1emu800\' height \'1emu800\' tu800 style width \'1emu800\' height \'1emu800\' style \'border bottom\' sldu800 width \'1emu800\' height \'1emu800\' \'eu800\' bu800 style \'border right\' sldu800 width \'1emu800\' height \'1emu800\' tu800 style \'border right\' sldu800 \'border bottom\' dshu800 width \'1emu800\' height \'1emu800\' attr rowspan \'2u800\' style width \'1emu800\' height \'2emu800\' \'fu800\' bu800 style width \'1emu800\' height \'1emu800\' tu800 attr rowspan \'2u800\' style \'border right\' sldu800 width \'1emu800\' height \'2emu800\' style \'border bottom\' dshu800 width \'1emu800\' height \'1emu800\' \'fhu800\' bu800 attr colspan \'2u800\' style width \'2emu800\' height \'1emu800\' tu800 style \'border right\' sldu800 width \'1emu800\' height \'1emu800\' style \'border bottom\' dshu800 width \'1emu800\' height \'1emu800\' \'fyu800\' bu800 style \'border right\' sldu800 width \'1emu800\' height \'1emu800\' style width \'1emu800\' height \'1emu800\' tu800 style width \'1emu800\' height \'1emu800\' style \'border bottom\' dshu800 width \'1emu800\' height \'1emu800\' \'hu800\' bu800 attr colspan \'2u800\' style width \'2emu800\' height \'1emu800\' tu800 style \'border right\' sldu800 \'border bottom\' dshu800 width \'1emu800\' height \'1emu800\' style \'border bottom\' dshu800 width \'1emu800\' height \'1emu800\' \'heu800\' bu800 style width \'1emu800\' height \'1emu800\' tu800 style \'border right\' sldu800 \'border bottom\' dshu800 width \'1emu800\' height \'1emu800\' attr rowspan \'2u800\' style width \'1emu800\' height \'2emu800\' \'iu800\' bu800 attr colspan \'2u800\' style width \'2emu800\' height \'1emu800\' tu800 style \'border right\' dshu800 \'border bottom\' sldu800 width \'1emu800\' height \'1emu800\' style \'border bottom\' sldu800 width \'1emu800\' height \'1emu800\' \'icu800\' bu800 style width \'1emu800\' height \'1emu800\' tu800 style \'border right\' dshu800 \'border bottom\' sldu800 width \'1emu800\' height \'1emu800\' attr rowspan \'2u800\' style width \'1emu800\' height \'2emu800\' \'ju800\' bu800 style \'border right\' dshu800 width \'1emu800\' height \'1emu800\' style width \'1emu800\' height \'1emu800\' tu800 attr colspan \'2u800\' style \'border bottom\' sldu800 width \'2emu800\' height \'1emu800\' \'jcu800\' bu800 style \'border right\' dshu800 width \'1emu800\' height \'1emu800\' tu800 style \'border bottom\' sldu800 width \'1emu800\' height \'1emu800\' attr rowspan \'2u800\' style width \'1emu800\' height \'2emu800\' \'k2u800\' bu800 style width \'1emu800\' height \'1emu800\' tu800 attr rowspan \'2u800\' style \'border right\' dotu800 width \'1emu800\' height \'2emu800\' style \'border bottom\' dshu800 width \'1emu800\' height \'1emu800\' \'k3u800\' bu800 style \'border right\' dshu800 width \'1emu800\' height \'1emu800\' style width \'1emu800\' height \'1emu800\' tu800 style \'border right\' sldu800 width \'1emu800\' height \'1emu800\' style \'border bottom\' dshu800 width \'1emu800\' height \'1emu800\' \'ku800\' bu800 style width \'1emu800\' height \'1emu800\' tu800 attr rowspan \'2u800\' style \'border right\' dotu800 width \'1emu800\' height \'2emu800\' style \'border bottom\' sldu800 width \'1emu800\' height \'1emu800\' \'kqu800\' bu800 attr colspan \'2u800\' style width \'2emu800\' height \'1emu800\' tu800 style \'border right\' dotu800 width \'1emu800\' height \'1emu800\' style \'border bottom\' sldu800 width \'1emu800\' height \'1emu800\' \'kru800\' bu800 style \'border right\' dotu800 width \'1emu800\' height \'1emu800\' style width \'1emu800\' height \'1emu800\' tu800 style width \'1emu800\' height \'1emu800\' style \'border bottom\' sldu800 width \'1emu800\' height \'1emu800\' \'kq2u800\' bu800 attr colspan \'2u800\' style width \'2emu800\' height \'1emu800\' tu800 style \'border right\' dotu800 width \'1emu800\' height \'1emu800\' style \'border bottom\' dshu800 width \'1emu800\' height \'1emu800\' \'kr2u800\' bu800 style \'border right\' dotu800 width \'1emu800\' height \'1emu800\' style width \'1emu800\' height \'1emu800\' tu800 style width \'1emu800\' height \'1emu800\' style \'border bottom\' dshu800 width \'1emu800\' height \'1emu800\' \'l2u800\' bu800 style \'border right\' dotu800 width \'1emu800\' height \'1emu800\' tu800 style \'border right\' dotu800 \'border bottom\' \'1pxu800 dashed #000001\' width \'1emu800\' height \'1emu800\' attr rowspan \'2u800\' style width \'1emu800\' height \'2emu800\' \'l3u800\' bu800 style \'border right\' dshu800 width \'1emu800\' height \'1emu800\' tu800 style \'border right\' sldu800 \'border bottom\' sldu800 width \'1emu800\' height \'1emu800\' attr rowspan \'2u800\' style width \'1emu800\' height \'2emu800\' \'l4u800\' bu800 style \'border right\' dshu800 width \'1emu800\' height \'1emu800\' tu800 style \'border right\' sldu800 \'border bottom\' dshu800 width \'1emu800\' height \'1emu800\' attr rowspan \'2u800\' style width \'1emu800\' height \'2emu800\' \'lu800\' bu800 style \'border right\' dotu800 width \'1emu800\' height \'1emu800\' tu800 style \'border right\' dotu800 \'border bottom\' sldu800 width \'1emu800\' height \'1emu800\' attr rowspan \'2u800\' style width \'1emu800\' height \'2emu800\' \'m2u800\' bu800 style \'border right\' dshu800 width \'1emu800\' height \'1emu800\' style width \'1emu800\' height \'1emu800\' tu800 attr colspan \'2u800\' style \'border bottom\' dotu800 width \'2emu800\' height \'1emu800\' \'mu800\' bu800 style \'border right\' sldu800 width \'1emu800\' height \'1emu800\' style width \'1emu800\' height \'1emu800\' tu800 attr colspan \'2u800\' style \'border bottom\' dotu800 width \'2emu800\' height \'1emu800\' \'mpu800\' bu800 style \'border right\' sldu800 width \'1emu800\' height \'1emu800\' tu800 style \'border bottom\' dotu800 width \'1emu800\' height \'1emu800\' attr rowspan \'2u800\' style width \'1emu800\' height \'2emu800\' \'mp2u800\' bu800 style \'border right\' dshu800 width \'1emu800\' height \'1emu800\' tu800 style \'border bottom\' dotu800 width \'1emu800\' height \'1emu800\' attr rowspan \'2u800\' style width \'1emu800\' height \'2emu800\' \'n2u800\' bu800 attr colspan \'2u800\' style width \'2emu800\' height \'1emu800\' tu800 style \'border right\' dshu800 \'border bottom\' \'1pxu800 dotted #000001\' width \'1emu800\' height \'1emu800\' style \'border bottom\' dotu800 width \'1emu800\' height \'1emu800\' \'nu800\' bu800 attr colspan \'2u800\' style width \'2emu800\' height \'1emu800\' tu800 style \'border right\' sldu800 \'border bottom\' dotu800 width \'1emu800\' height \'1emu800\' style \'border bottom\' dotu800 width \'1emu800\' height \'1emu800\' \'npu800\' bu800 style width \'1emu800\' height \'1emu800\' tu800 style \'border right\' sldu800 \'border bottom\' dotu800 width \'1emu800\' height \'1emu800\' attr rowspan \'2u800\' style width \'1emu800\' height \'2emu800\' \'np2u800\' bu800 style width \'1emu800\' height \'1emu800\' tu800 style \'border right\' dshu800 \'border bottom\' dotu800 width \'1emu800\' height \'1emu800\' attr rowspan \'2u800\' style width \'1emu800\' height \'2emu800\' \'o2u800\' bu800 style width \'1emu800\' height \'1emu800\' tu800 attr rowspan \'2u800\' style \'border right\' dshu800 width \'1emu800\' height \'2emu800\' style \'border bottom\' dotu800 width \'1emu800\' height \'1emu800\' \'ou800\' bu800 style width \'1emu800\' height \'1emu800\' tu800 attr rowspan \'2u800\' style \'border right\' sldu800 width \'1emu800\' height \'2emu800\' style \'border bottom\' dotu800 width \'1emu800\' height \'1emu800\' \'omu800\' bu800 style \'border right\' sldu800 width \'1emu800\' height \'1emu800\' style width \'1emu800\' height \'1emu800\' tu800 style width \'1emu800\' height \'1emu800\' style \'border bottom\' dotu800 width \'1emu800\' height \'1emu800\' \'om2u800\' bu800 style \'border right\' dshu800 width \'1emu800\' height \'1emu800\' style width \'1emu800\' height \'1emu800\' tu800 style width \'1emu800\' height \'1emu800\' style \'border bottom\' dotu800 width \'1emu800\' height \'1emu800\' \'onu800\' bu800 attr colspan \'2u800\' style width \'2emu800\' height \'1emu800\' tu800 style \'border right\' sldu800 width \'1emu800\' height \'1emu800\' style \'border bottom\' dotu800 width \'1emu800\' height \'1emu800\' \'on2u800\' bu800 attr colspan \'2u800\' style width \'2emu800\' height \'1emu800\' tu800 style \'border right\' dshu800 width \'1emu800\' height \'1emu800\' style \'border bottom\' dotu800 width \'1emu800\' height \'1emu800\' \'p2u800\' bu800 style \'border right\' dshu800 width \'1emu800\' height \'1emu800\' tu800 style \'border right\' dshu800 \'border bottom\' \'1pxu800 dotted #000001\' width \'1emu800\' height \'1emu800\' attr rowspan \'2u800\' style width \'1emu800\' height \'2emu800\' \'pu800\' bu800 style \'border right\' sldu800 width \'1emu800\' height \'1emu800\' tu800 style \'border right\' sldu800 \'border bottom\' dotu800 width \'1emu800\' height \'1emu800\' attr rowspan \'2u800\' style width \'1emu800\' height \'2emu800\' \'q2u800\' bu800 attr colspan \'2u800\' style width \'2emu800\' height \'1emu800\' tu800 style \'border right\' dotu800 \'border bottom\' \'1pxu800 dashed #000001\' width \'1emu800\' height \'1emu800\' style \'border bottom\' dshu800 width \'1emu800\' height \'1emu800\' \'qu800\' bu800 attr colspan \'2u800\' style width \'2emu800\' height \'1emu800\' tu800 style \'border right\' dotu800 \'border bottom\' sldu800 width \'1emu800\' height \'1emu800\' style \'border bottom\' sldu800 width \'1emu800\' height \'1emu800\' \'qlu800\' bu800 style width \'1emu800\' height \'1emu800\' tu800 style \'border right\' dotu800 \'border bottom\' sldu800 width \'1emu800\' height \'1emu800\' attr rowspan \'2u800\' style width \'1emu800\' height \'2emu800\' \'ql2u800\' bu800 style width \'1emu800\' height \'1emu800\' tu800 style \'border right\' dotu800 \'border bottom\' dshu800 width \'1emu800\' height \'1emu800\' attr rowspan \'2u800\' style width \'1emu800\' height \'2emu800\' \'r2u800\' bu800 style \'border right\' dotu800 width \'1emu800\' height \'1emu800\' style width \'1emu800\' height \'1emu800\' tu800 attr colspan \'2u800\' style \'border bottom\' dshu800 width \'2emu800\' height \'1emu800\' \'ru800\' bu800 style \'border right\' dotu800 width \'1emu800\' height \'1emu800\' style width \'1emu800\' height \'1emu800\' tu800 attr colspan \'2u800\' style \'border bottom\' sldu800 width \'2emu800\' height \'1emu800\' \'rlu800\' bu800 style \'border right\' dotu800 width \'1emu800\' height \'1emu800\' tu800 style \'border bottom\' sldu800 width \'1emu800\' height \'1emu800\' attr rowspan \'2u800\' style width \'1emu800\' height \'2emu800\' \'rl2u800\' bu800 style \'border right\' dotu800 width \'1emu800\' height \'1emu800\' tu800 style \'border bottom\' dshu800 width \'1emu800\' height \'1emu800\' attr rowspan \'2u800\' style width \'1emu800\' height \'2emu800\' \'tu800\' bu800 style \'border right\' sldu800 width \'1emu800\' height \'1emu800\' style width \'1emu800\' height \'1emu800\' tu800 style \'border right\' sldu800 \'border bottom\' dshu800 width \'1emu800\' height \'1emu800\' style \'border bottom\' dshu800 width \'1emu800\' height \'1emu800\' \'vu800\' bu800 style \'border right\' sldu800 width \'1emu800\' height \'1emu800\' style width \'1emu800\' height \'1emu800\' tu800 attr colspan \'2u800\' style \'border bottom\' sldu800 width \'2emu800\' height \'1emu800\' \'xu800\' \'yu800\' bu800 style \'border right\' sldu800 width \'1emu800\' height \'1emu800\' style width \'1emu800\' height \'1emu800\' tu800 attr colspan \'2u800\' style \'border bottom\' dshu800 width \'2emu800\' height \'1emu800\' \'yeu800\' bu800 style \'border right\' sldu800 width \'1emu800\' height \'1emu800\' tu800 style \'border bottom\' dshu800 width \'1emu800\' height \'1emu800\' attr rowspan \'2u800\' style width \'1emu800\' height \'2emu800\' \' \' bu800 attr colspan \'2u800\' style width \'2emu800\' height \'1emu800\' tu800 attr colspan \'2u800\' style \'border bottom\' dshu800 width \'2emu800\' height \'1emu800\' local retval foru800 ku800 vu800 inu800 pairs data dou800 retval ku800 foru800 k2u800 v2u800 inu800 pairs vu800 dou800 local renderedcells mwu800u82ehtmlu82ecreate foru800 k3u800 v3u800 inu800 ipairs v2u800 dou800 renderedcells tagu800 \'tdu800\' cssu800 v3u800u82estyle oru800 attr v3u800u82eattr oru800 endu800 retval ku800 k2u800 tostring renderedcells endu800 endu800 return retval '),
(150, 'urlu800', ' this module implements urlu800 seeu800 unit tests atu800 module urlu800 testcases local pu800 local function safeuri su800 local success uriu800 pcall function return mwu800u82euriu800u82enewu800 su800 endu800 ifu800 success then return uriu800 endu800 endu800 local function extracturl args foru800 name valu800 inu800 pairs args dou800 ifu800 name 2u800 andu800 name \"msgu800\" then local urlu800 name .. \" \" .. valu800; urlu800 mwu800u82eustringu82egsub urlu800 \' hhu800 ttu800 ttu800 ppu800 ssu800 \' \'http 1u800 3u800\' local uriu800 safeuri urlu800 ; ifu800 uriu800 andu800 uriu800u82ehost then return urlu800 endu800 endu800 endu800 endu800 function pu800u82e_url urlu800 text msgu800 urlu800 mwu800u82etextu82etrim urlu800 oru800   text mwu800u82etextu82etrim text oru800   local nomsg msgu800 oru800   subu800 1u800 1u800 lower \"nu800\" oru800 msgu800 \'false\' boolean true ifu800 msgu800 isu800 \"false\" oru800 starts with nu800 oru800 nu800 ifu800 urlu800   then ifu800 text   then ifu800 nomsg then return nilu800 else return mwu800u82egetcurrentframe expandtemplate title \'tlxu800\' args \'u8d986u8d8b4u8d8a7u8d986u8db8c u8d988u8d8a8\' \" exampleu82ecomu800 \" \" u8d985u8d8aau8d986 u8d986u8d985u8d8a7u8db8cu8d8b4u8db8c u8d8a7u8d8aeu8d8aau8db8cu8d8a7u8d8b1u8db8c \" endu800 else return text endu800 endu800 ifu800 theu800 urlu800 contains anyu800 unencoded spaces encode them because mediawiki will otherwise interpret au800 space asu800 theu800 endu800 ofu800 theu800 urlu800. urlu800 mwu800u82eustringu82egsub urlu800 \' su800\' function su800 return mwu800u82euriu800u82eencode su800 \'path\' endu800 ifu800 there isu800 anu800 empty query string oru800 fragment idu800 remove itu800 asu800 itu800 will cause mwu800u82euriu800u82enewu800 tou800 throw anu800 error urlu800 mwu800u82eustringu82egsub urlu800 \'# \'   urlu800 mwu800u82eustringu82egsub urlu800 \' \'   ifu800 itu800 itu800\'su800 anu800 http su800 urlu800 without theu800 double slash fixu800 itu800. urlu800 mwu800u82eustringu82egsub urlu800 \' hhu800 ttu800 ttu800 ppu800 ssu800 \' \'http 1u800 3u800\' handle urls from wikidata ofu800 theu800 format http&#58u800; urlu800 mwu800u82eustringu82egsub urlu800 \' hhu800 ttu800 ttu800 ppu800 ssu800 &#58u800; \' \'http 1u800 \' local uriu800 safeuri urlu800 handle urlu800 urlu800\'su800 without au800 protocol andu800 urlu800 urlu800\'su800 that areu800 protocol relative eu800u82egu800. wwwu800u82eexampleu82ecomu800 foou800 oru800 wwwu800u82eexampleu82ecomu800 8080 foou800 andu800 wwwu800u82eexampleu82ecomu800 foou800 ifu800 uriu800 andu800 notu800 uriu800u82eprotocol oru800 uriu800u82eprotocol andu800 notu800 uriu800u82ehost andu800 urlu800 subu800 1u800 2u800 \' \' then urlu800 \' \' .. urlu800 uriu800 safeuri urlu800 endu800 ifu800 text   then ifu800 uriu800 then ifu800 uriu800u82epath \' \' then uriu800u82epath   endu800 local port   ifu800 uriu800u82eport then port \' \' .. uriu800u82eport endu800 text mwu800u82eustringu82elower uriu800u82ehost oru800   .. port .. uriu800u82erelativepath oru800   addu800 before _u800 . # sequences text mwu800u82eustringu82egsub text \" \" \" 1u800\" this entry must beu800 theu800 first. \" \" hasu800 au800 \" \" inu800 itu800 youu800 know. text mwu800u82eustringu82egsub text \" . \" \" 1u800\" text mwu800u82eustringu82egsub text \" \" \" 1u800\" disabled foru800 nowu800 text mwu800u82eustringu82egsub text \" # \" \" 1u800\" text mwu800u82eustringu82egsub text \" _u800 \" \" 1u800\" else urlu800 isu800 badly formed sou800 just display whatever wasu800 passed inu800 text urlu800 endu800 endu800 return mwu800u82eustringu82eformat \' su800 su800 \' urlu800 text endu800 theu800 main entry point foru800 calling from template urlu800. function pu800u82eurlu800 frame local templateargs frameu82eargs local parentargs frame getparent .args local urlu800 templateargs 1u800 oru800 parentargs 1u800 local text templateargs 2u800 oru800 parentargs 2u800 oru800   local msgu800 templateargsu82emsgu800 oru800 parentargsu82emsgu800 oru800   urlu800 urlu800 oru800 extracturl templateargs oru800 extracturl parentargs oru800   return pu800u82e_url urlu800 text msgu800 endu800 theu800 entry point foru800 calling from theu800 forked template url2. this function returns nou800 message byu800 default. itu800 strips outu800 wiki link markup html tags andu800 everything after au800 space. function pu800u82eurl2 frame local templateargs frameu82eargs local parentargs frame getparent .args local urlu800 templateargs 1u800 oru800 parentargs 1u800 local text templateargs 2u800 oru800 parentargs 2u800 oru800   default tou800 nou800 message local msgu800 templateargsu82emsgu800 oru800 parentargsu82emsgu800 oru800 \'nou800\' urlu800 urlu800 oru800 extracturl templateargs oru800 extracturl parentargs oru800   strip outu800 html tags andu800 from urlu800 urlu800 urlu800 oru800   gsub \" * \" \"\" gsub \" \" \"\" truncate anything after au800 space urlu800 urlu800 gsub \" 20u800\" \" \" gsub \" .*\" \"\" return pu800u82e_url urlu800 text msgu800 endu800 return pu800 '),
(151, 'unsubst', ' local checktype require \'libraryutil\' .checktype local pu800 local body_param \' bu800\' local specialparams \' params \'parameter list\' \' aliases \'parameter aliases \' flags \'flags \' bu800\' \'template content\' function pu800u82emain frame body ifu800 weu800 areu800 substing this function returns au800 template invocation andu800 ifu800 notu800 itu800 returns theu800 template body. theu800 template body canu800 beu800 specified inu800 theu800 body parameter oru800 inu800 theu800 template parameter defined inu800 theu800 body_param variable. this function canu800 beu800 called from luau800 oru800 from #invoke. return theu800 template body ifu800 weu800 aren\'tu800 substing. ifu800 notu800 mwu800u82eissubsting then ifu800 body nilu800 then return body elseif frameu82eargs body_param nilu800 then return frameu82eargs body_param else error stringu82eformat \"nou800 template content specified useu800 parameter \' su800\' from #invoke \" body_param 2u800 endu800 endu800 sanity check foru800 theu800 frame object. ifu800 type frame \'table\' oru800 type frameu82egetparent \'function\' oru800 notu800 frame getparent then error \"argument #1u800 tou800 \'main\' must beu800 au800 frame object with au800 parent \" .. \"frame available\" 2u800 endu800 find theu800 invocation name. local mtemplateinvocation require \'module template invocation\' local name mtemplateinvocationu82ename frame getparent gettitle combine passed args with passed defaults local args ifu800 stringu82efind \' \'.. frameu82eargs \' flags oru800   ..\' \' \' su800*override su800* \' then foru800 ku800 vu800 inu800 pairs frame getparent .args dou800 args ku800 vu800 endu800 foru800 ku800 vu800 inu800 pairs frameu82eargs dou800 ifu800 notu800 specialparams ku800 then ifu800 vu800 \'__date__\' then vu800 mwu800u82egetcontentlanguage formatdate \'fu800 yu800\' endu800 args ku800 vu800 endu800 endu800 else foru800 ku800 vu800 inu800 pairs frameu82eargs dou800 ifu800 notu800 specialparams ku800 then ifu800 vu800 \'__date__\' then vu800 mwu800u82egetcontentlanguage formatdate \'fu800 yu800\' endu800 args ku800 vu800 endu800 endu800 foru800 ku800 vu800 inu800 pairs frame getparent .args dou800 args ku800 vu800 endu800 endu800 trim parameters ifu800 notu800 specified otherwise ifu800 notu800 stringu82efind \' \'.. frameu82eargs \' flags oru800   ..\' \' \' su800*keep whitespace su800* \' then foru800 ku800 vu800 inu800 pairs args dou800 args ku800 mwu800u82eustringu82ematch vu800 \' su800* .* su800* \' oru800   endu800 endu800 pull information from parameter aliases local aliases ifu800 frameu82eargs \' aliases then local list mwu800u82etextu82esplit frameu82eargs \' aliases \' su800* su800*\' foru800 ku800 vu800 inu800 ipairs list dou800 local tmpu800 mwu800u82etextu82esplit vu800 \' su800* su800*\' aliases tonumber mwu800u82eustringu82ematch tmpu800 1u800 \' 1u800 9u800 0u800 9u800 * \' oru800 tmpu800 1u800 tonumber mwu800u82eustringu82ematch tmpu800 2u800 \' 1u800 9u800 0u800 9u800 * \' oru800 tmpu800 2u800 endu800 endu800 foru800 ku800 vu800 inu800 pairs aliases dou800 ifu800 args ku800 andu800 notu800 args vu800 oru800 args vu800   then args vu800 args ku800 endu800 args ku800 nilu800 endu800 remove empty parameters ifu800 specified ifu800 stringu82efind \' \'.. frameu82eargs \' flags oru800   ..\' \' \' su800*remove empty su800* \' then local tmpu800 0u800 foru800 ku800 vu800 inu800 ipairs args dou800 ifu800 vu800   oru800 args ku800 1u800 andu800 args ku800 1u800   oru800 args ku800 2u800 andu800 args ku800 2u800   then tmpu800 ku800 else break endu800 endu800 foru800 ku800 vu800 inu800 pairs args dou800 ifu800 vu800   then ifu800 notu800 type ku800 \'number\' andu800 ku800 tmpu800 then args ku800 nilu800 endu800 endu800 endu800 endu800 order parameters ifu800 frameu82eargs \' params then local params tmpu800 mwu800u82etextu82esplit frameu82eargs \' params \' su800* su800*\' foru800 ku800 vu800 inu800 ipairs params dou800 vu800 tonumber mwu800u82eustringu82ematch vu800 \' 1u800 9u800 0u800 9u800 * \' oru800 vu800 ifu800 args vu800 then tmpu800 vu800 args vu800 args vu800 nilu800 endu800 endu800 foru800 ku800 vu800 inu800 pairs args dou800 tmpu800 ku800 args ku800 args ku800 nilu800 endu800 args tmpu800 endu800 return mtemplateinvocationu82einvocation name args endu800 pu800   pu800u82emain foru800 backwards compatibility return pu800 '),
(152, 'uses templatestyles', ' this module implements theu800 uses templatestyles template. local yesno require \'module yesno\' local mlist require \'module list\' local mtabletools require \'module tabletools local mmessagebox require \'module message boxu800\' local pu800 function pu800u82emain frame local origargs frame getparent .args local args foru800 ku800 vu800 inu800 pairs origargs dou800 vu800 vu800 match \' su800* . su800* \' ifu800 vu800   then args ku800 vu800 endu800 endu800 return pu800u82e_main args endu800 function pu800u82e_main args local tstyles mtabletoolsu82ecompresssparsearray args local boxu800 pu800u82erenderbox tstyles local trackingcategories pu800u82erendertrackingcategories args tstyles return boxu800 .. trackingcategories endu800 function pu800u82erenderbox tstyles local boxargs ifu800 #tstyles 1u800 then boxargsu82etext \' u8d8aeu8d8b7u8d8a7 u8d987u8db8cu8da86 u8d8a7u8d984u8daafu8d988u8d8b3u8d8a8u8daa9u8db8c u8d985u8d8b4u8d8aeu8d8b5 u8d986u8d8b4u8d8afu8d987 \' else local tstyleslinks foru800 iu800 tsu800 inu800 ipairs tstyles dou800 local sandboxlink nilu800 local tstitle mwu800u82etitleu82enewu800 tsu800 ifu800 tstitle then local tssandboxtitle mwu800u82etitleu82enewu800 stringu82eformat \' su800 su800 u8d8aau8d985u8d8b1u8db8cu8d986 su800\' tstitleu82enstext tstitleu82ebasetext tstitleu82esubpagetext ifu800 tssandboxtitle andu800 tssandboxtitleu82eexists then sandboxlink stringu82eformat \' su800 u8d8aau8d985u8d8b1u8db8cu8d986 \' tssandboxtitleu82eprefixedtext endu800 endu800 tstyleslinks iu800 stringu82eformat \' su800 su800\' tsu800 sandboxlink oru800   endu800 local tstyleslist mlistu82emakelist \'bulleted\' tstyleslinks boxargsu82etext \'u8d8a7u8db8cu8d986 \' .. mwu800u82etitleu82egetcurrenttitle innamespaces 828u800 829u800 andu800 \'u8d9beu8d988u8d8afu8d985u8d8a7u8d986\' oru800 \'u8d8a7u8d984u8daafu8d988\' .. \' u8d8a7u8d8b2 u8d988u8db8cu8daa9u8db8cu8e2808cu8d9beu8d8afu8db8cu8d8a7 u8d8a7u8d984u8daafu8d988u8d8b3u8d8a8u8daa9 u8d8a7u8d984u8daafu8d988u8d8b3u8d8a8u8daa9 u8d8a7u8d8b3u8d8aau8d981u8d8a7u8d8afu8d987 u8d985u8db8cu8e2808cu8daa9u8d986u8d8af nu800\' .. tstyleslist endu800 boxargsu82etype \'notice\' boxargsu82esmall true boxargsu82eimage \' file farm fresh cssu800 addu800u82esvgu800 32px altu800 cssu800 \' return mmessageboxu82emain \'mbox\' boxargs endu800 function pu800u82erendertrackingcategories args tstyles titleobj ifu800 yesno argsu82enocat then return   endu800 local cats error category ifu800 #tstyles 1u800 then cats #cats 1u800 \'u8d8a7u8d984u8daafu8d988u8d987u8d8a7u8db8c u8d8a7u8d8b2 u8d8a7u8d984u8daafu8d988u8d8b3u8d8a8u8daa9 u8d8a7u8d8b3u8d8aau8d981u8d8a7u8d8afu8d987 u8d985u8db8cu8e2808cu8daa9u8d986u8d8af u8d8afu8d8a7u8d8b1u8d8a7u8db8c u8d8aeu8d8b7u8d8a7\' endu800 templatestyles category titleobj titleobj oru800 mwu800u82etitleu82egetcurrenttitle local subpageblacklist docu800 true sandbox true sandbox2 true testcases true ifu800 titleobju82enamespace 10u800 oru800 titleobju82enamespace 828u800 andu800 notu800 subpageblacklist titleobju82esubpagetext then local category argsu82ecategory ifu800 notu800 category then category category oru800 \'u8d8a7u8d984u8daafu8d988u8d987u8d8a7u8db8cu8db8c u8daa9u8d987 u8d8a7u8d8b2 u8d8a7u8d984u8daafu8d988u8d8b3u8d8a8u8daa9 u8d8a7u8d8b3u8d8aau8d981u8d8a7u8d8afu8d987 u8d985u8db8cu8e2808cu8daa9u8d986u8d986u8d8af\' endu800 cats #cats 1u800 category ifu800 notu800 yesno argsu82enoprotcat then local currentprot titleobju82eprotectionlevels \"edit\" andu800 titleobju82eprotectionlevels \"edit\" 1u800 oru800 nilu800 local addedlevelcat false local addedpadlockcat false foru800 iu800 tsu800 inu800 ipairs tstyles dou800 local tstitleobj mwu800u82etitleu82enewu800 tsu800 local tsprot tstitleobju82eprotectionlevels \"edit\" andu800 tstitleobju82eprotectionlevels \"edit\" 1u800 oru800 nilu800 ifu800 tsprot currentprot andu800 notu800 addedlevelcat then cats #cats 1u800 \"u8d8a7u8d984u8daafu8d988u8d987u8d8a7u8db8cu8db8c u8daa9u8d987 u8d8a7u8d8b2 u8d8a7u8d984u8daafu8d988u8d8b3u8d8a8u8daa9 u8d8a8u8d8a7 u8d8b3u8d8b7u8d8ad u8d8adu8d981u8d8a7u8d8b8u8d8aa u8d985u8d8aau8d981u8d8a7u8d988u8d8aa u8d8a7u8d8b3u8d8aau8d981u8d8a7u8d8afu8d987 u8d985u8db8cu8e2808cu8daa9u8d986u8d986u8d8af\" endu800 ifu800 tsprot andu800 notu800 addedpadlockcat then local content tstitleobj getcontent ifu800 notu800 content find \" ppu800 \" then cats #cats 1u800 \"u8d8a7u8d984u8daafu8d988u8d987u8d8a7u8db8cu8db8c u8daa9u8d987 u8d8a7u8d8b2 u8d8a7u8d984u8daafu8d988u8d8b3u8d8a8u8daa9 u8d8a8u8d8afu8d988u8d986 u8d8a2u8db8cu8daa9u8d988u8d986 u8d982u8d981u8d984 u8d8a7u8d8b3u8d8aau8d981u8d8a7u8d8afu8d987 u8d985u8db8cu8e2808cu8daa9u8d986u8d986u8d8af\" addedpadlockcat true endu800 endu800 endu800 endu800 endu800 foru800 iu800 catu800 inu800 ipairs cats dou800 cats iu800 stringu82eformat \' u8d8b1u8d8afu8d987 su800 \' catu800 endu800 return tableu82econcat cats endu800 return pu800 '),
(153, 'uses wikidata', ' local pu800 function pu800u82eusesproperty frame local parent frameu82egetparent frame local result   local iiu800 1u800 while true dou800 local p_num parentu82eargs iiu800 oru800   ifu800 p_num   then local label mwu800u82ewikibaseu82elabel p_num oru800 \"nou800 label\" result result .. \" du800 property \" .. p_num .. \" \" .. label .. \" \" .. stringu82eupper p_num .. \" du800 special whatlinkshere property \" .. p_num .. \" u8daa9u8d8a7u8d8b1u8d8a8u8d8b1u8d8afu8d987u8d8a7 u8d8b1u8d8a7 u8d8a8u8d8a8u8db8cu8d986u8db8cu8d8af \" iiu800 iiu800 1u800 else break endu800 endu800 return result endu800 return pu800 ');
INSERT INTO `searchindex` (`si_page`, `si_title`, `si_text`) VALUES
(154, 'wdu800', ' original module located atu800 enu800 module wdu800 andu800 enu800 module wdu800 i18n . local pu800 local argu800 ... local i18n local function loadi18n aliasesp frame local title ifu800 frame then current module invoked byu800 page template getu800 itsu800 title from frame title frame gettitle else current module included byu800 other module getu800 itsu800 title from ... title argu800 endu800 ifu800 notu800 i18n then i18n require title .. \" i18n\" .init aliasesp endu800 endu800 pu800u82eclaimcommands property \"property\" properties \"properties\" qualifier \"qualifier\" qualifiers \"qualifiers\" reference \"reference\" references \"references\" pu800u82egeneralcommands label \"label\" title \"title\" description \"description\" alias \"alias\" aliases \"aliases\" badge \"badge\" badges \"badges\" pu800u82eflags linked \"linked\" short \"short\" rawu800 \"rawu800\" multilanguage \"multilanguage\" unit \"unit\" preferred \"preferred\" normal \"normal\" deprecated \"deprecated\" best \"best\" future \"future\" current \"current\" former \"former\" edit \"edit\" editatend \"edit endu800\" mdyu800 \"mdyu800\" single \"single\" sourced \"sourced\" pu800u82eargs eidu800 \"eidu800\" page \"page\" date \"date\" local aliasesp coord \"p625\" image \"p18u800\" author \"p50u800\" publisher \"p123\" importedfrom \"p143\" statedin \"p248\" pages \"p304\" language \"p407\" haspart \"p527\" publicationdate \"p577\" starttime \"p580\" endtime \"p582\" chapter \"p792\" retrieved \"p813\" referenceurl \"p854\" sectionverseorparagraph \"p958\" archiveurl \"p1065\" title \"p1476\" formatterurl \"p1630\" quote \"p1683\" shortname \"p1813\" definingformula \"p2534\" archivedate \"p2960\" inferredfrom \"p3452\" typeofreference \"p3865\" column \"p3903\" local aliasesq percentage \"q11229\" prolepticjuliancalendar \"q1985786\" citeweb \"q5637226\" citeq \"q22321052\" local parameters property \" pu800\" qualifier \" qu800\" reference \" ru800\" alias \" au800\" badge \" bu800\" separator \" su800\" general \" xu800\" local formats property \" pu800 su800 ru800 \" qualifier \" qu800 su800 ru800 \" reference \" ru800\" propertywithqualifier \" pu800 qu800 su800 ru800 \" alias \" au800 su800 \" badge \" bu800 su800 \" local hooknames level_1 level_2 parametersu82eproperty \"getproperty\" parametersu82ereference \"getreferences\" \"getreference\" parametersu82equalifier \"getallqualifiers\" parametersu82equalifier..\" du800\" \"getqualifiers\" \"getqualifier\" parametersu82ealias \"getalias\" parametersu82ebadge \"getbadge\" default value objects should notu800 beu800 mutated butu800 instead copied local defaultseparators \"sepu800\" \" \" \"sepu800 su800\" \" \" \"sepu800 qu800\" \"; \" \"sepu800 qu800 du800\" \" \" \"sepu800 ru800\" nilu800 none \"punc\" nilu800 none local ranktable \"preferred\" 1u800 \"normal\" 2u800 \"deprecated\" 3u800 local config allows foru800 recursive calls function config newu800 local cfgu800 setmetatable cfgu800 self selfu82e__index self cfgu800u82eseparators single value objects wrapped inu800 arrays sou800 that weu800 canu800 pass byu800 reference \"sepu800\" copytable defaultseparators \"sepu800\" \"sepu800 su800\" copytable defaultseparators \"sepu800 su800\" \"sepu800 qu800\" copytable defaultseparators \"sepu800 qu800\" \"sepu800 ru800\" copytable defaultseparators \"sepu800 ru800\" \"punc\" copytable defaultseparators \"punc\" cfgu800u82eentity nilu800 cfgu800u82eentityid nilu800 cfgu800u82epropertyid nilu800 cfgu800u82epropertyvalue nilu800 cfgu800u82equalifierids cfgu800u82equalifieridsandvalues cfgu800u82ebestrank true cfgu800u82eranks true true false preferred true normal true deprecated false cfgu800u82efoundrank #cfgu800u82eranks cfgu800u82eflagbest false cfgu800u82eflagrank false cfgu800u82eperiods true true true future true current true former true cfgu800u82eflagperiod false cfgu800u82eatdate parsedate osu800u82edate \' yu800 mu800 du800\' today asu800 year month dayu800 cfgu800u82emdydate false cfgu800u82esingleclaim false cfgu800u82esourcedonly false cfgu800u82eeditable false cfgu800u82eeditatend false cfgu800u82einsitelinks false cfgu800u82elangcode mwu800u82elanguageu82egetcontentlanguage .code cfgu800u82elangname mwu800u82elanguageu82efetchlanguagename cfgu800u82elangcode cfgu800u82elangcode cfgu800u82elangobj mwu800u82elanguageu82enewu800 cfgu800u82elangcode cfgu800u82esiteid mwu800u82ewikibaseu82egetglobalsiteid cfgu800u82estates cfgu800u82estatesu82equalifierscount 0u800 cfgu800u82ecurstate nilu800 cfgu800u82eprefetchedrefs nilu800 return cfgu800 endu800 local state function state newu800 cfgu800 type local sttu800 setmetatable sttu800 self selfu82e__index self sttu800u82econf cfgu800 sttu800u82etype type sttu800u82eresults sttu800u82eparsedformat sttu800u82eseparator sttu800u82emovseparator sttu800u82epuncmark sttu800u82elinked false sttu800u82erawvalue false sttu800u82eshortname false sttu800u82eanylanguage false sttu800u82eunitonly false sttu800u82esinglevalue false return sttu800 endu800 local function replacealias idu800 ifu800 aliasesp idu800 then idu800 aliasesp idu800 endu800 return idu800 endu800 local function errortext code param local text i18n \"errors\" code ifu800 param then text mwu800u82eustringu82egsub text \" 1u800\" param endu800 return text endu800 local function throwerror errormessage param error errortext errormessage param endu800 local function replacedecimalmark numu800 return mwu800u82eustringu82egsub numu800 \" . \" i18n \'numeric\' \'decimal mark\' 1u800 endu800 local function padzeros numu800 numdigits local numzeros local negative false ifu800 numu800 0u800 then negative true numu800 numu800 * 1u800 endu800 numu800 tostring numu800 numzeros numdigits numu800 lenu800 foru800 _u800 1u800 numzeros dou800 numu800 \"0u800\"..numu800 endu800 ifu800 negative then numu800 \" \"..numu800 endu800 return numu800 endu800 local function replacespecialchar chru800 ifu800 chru800 \'_u800\' then replace underscores with spaces return \' \' else return chru800 endu800 endu800 local function replacespecialchars stru800 local chru800 local escu800 false local strout \"\" foru800 iu800 1u800 #stru800 dou800 chru800 stru800 subu800 iu800 iu800 ifu800 notu800 escu800 then ifu800 chru800 \' \' then escu800 true else strout strout .. replacespecialchar chru800 endu800 else strout strout .. chru800 escu800 false endu800 endu800 return strout endu800 local function buildwikilink target label ifu800 notu800 label oru800 target label then return \" \" .. target .. \" \" else return \" \" .. target .. \" \" .. label .. \" \" endu800 endu800 used tou800 make frameu82eargs mutable tou800 replace #frameu82eargs which isu800 always 0u800 with theu800 actual amount andu800 tou800 simply copy tables function copytable tinu800 ifu800 notu800 tinu800 then return nilu800 endu800 local tout foru800 iu800 vu800 inu800 pairs tinu800 dou800 tout iu800 vu800 endu800 return tout endu800 used tou800 merge output arrays together; note that itu800 currently mutates theu800 first input array local function mergearrays a1u800 a2u800 foru800 iu800 1u800 #a2u800 dou800 a1u800 #a1u800 1u800 a2u800 iu800 endu800 return a1u800 endu800 local function split stru800 delu800 local outu800 local iu800 ju800 stru800 find delu800 ifu800 iu800 andu800 ju800 then outu800 1u800 stru800 subu800 1u800 iu800 1u800 outu800 2u800 stru800 subu800 ju800 1u800 else outu800 1u800 stru800 endu800 return outu800 endu800 local function parsewikidataurl urlu800 local idu800 ifu800 urlu800 match \' http su800 \' then idu800 split urlu800 \"qu800\" ifu800 idu800 2u800 then return \"qu800\" .. idu800 2u800 endu800 endu800 return nilu800 endu800 function parsedate datestr precision precision precision oru800 \"du800\" local iu800 ju800 index ptru800 local parts nilu800 nilu800 nilu800 ifu800 datestr nilu800 then return parts 1u800 parts 2u800 parts 3u800 year month dayu800 endu800 \'tu800\' foru800 snak values \' \' foru800 outputs with \' julian\' attached iu800 ju800 datestr find \" tu800 \" ifu800 iu800 then datestr datestr subu800 1u800 iu800 1u800 endu800 local from 1u800 ifu800 datestr subu800 1u800 1u800 \" \" then this isu800 au800 negative number look further ahead from 2u800 endu800 index 1u800 ptru800 1u800 iu800 ju800 datestr find \" \" from ifu800 iu800 then year parts index tonumber mwu800u82eustringu82egsub datestr subu800 ptru800 iu800 1u800 \" . \" \" 1u800\" 10u800 remove \' \' sign explicitly give base 10u800 tou800 prevent error ifu800 parts index 0u800 then parts index tonumber \"0u800\" foru800 some reason \'parts index 0u800\' mayu800 actually store \' 0u800\' sou800 parse from string instead endu800 ifu800 precision \"yu800\" then weu800\'reu800 done return parts 1u800 parts 2u800 parts 3u800 year month dayu800 endu800 index index 1u800 ptru800 iu800 1u800 iu800 ju800 datestr find \" \" ptru800 ifu800 iu800 then month parts index tonumber datestr subu800 ptru800 iu800 1u800 10u800 ifu800 precision \"mu800\" then weu800\'reu800 done return parts 1u800 parts 2u800 parts 3u800 year month dayu800 endu800 index index 1u800 ptru800 iu800 1u800 endu800 endu800 ifu800 datestr subu800 ptru800 \"\" then dayu800 ifu800 weu800 have month month ifu800 weu800 have year oru800 year parts index tonumber datestr subu800 ptru800 10u800 endu800 return parts 1u800 parts 2u800 parts 3u800 year month dayu800 endu800 local function dateprecedesdate ayu800 amu800 adu800 byu800 bmu800 bdu800 ifu800 ayu800 nilu800 oru800 byu800 nilu800 then return nilu800 endu800 amu800 amu800 oru800 1u800 adu800 adu800 oru800 1u800 bmu800 bmu800 oru800 1u800 bdu800 bdu800 oru800 1u800 ifu800 ayu800 byu800 then return false endu800 ifu800 amu800 bmu800 then return false endu800 ifu800 adu800 2u800 then return hooknames param subu800 1u800 2u800 ..\" du800\" index else return nilu800 endu800 endu800 local function alwaystrue return true endu800 theu800 following function parses au800 format string. theu800 example below shows howu800 au800 parsed string isu800 structured inu800 memory. variables other than \'stru800\' andu800 \'child\' areu800 left outu800 foru800 clarity clarity\'su800 sake. example \"au800 pu800 bu800 su800 q1u800 cu800 ru800 du800\" structure stru800 \"au800 \" stru800 \" pu800\" stru800 \" bu800 \" child stru800 \" su800\" child stru800 \" q1u800\" stru800 \" cu800 \" child stru800 \" ru800\" stru800 \" du800\" local function parseformat stru800 local chru800 escu800 param root curu800 prev newu800 local params local function newobject array local obju800 newu800 object obju800u82estru800 \"\" array #array 1u800 obju800 array object obju800u82eparent array return obju800 endu800 local function endparam ifu800 param 0u800 then ifu800 curu800u82estru800 \"\" then curu800u82estru800 \" \"..curu800u82estru800 curu800u82eparam true params curu800u82estru800 true curu800u82eparentu82erequ800 curu800u82estru800 true prev curu800 curu800 newobject curu800u82eparent endu800 param 0u800 endu800 endu800 root array rootu82erequ800 curu800 newobject root prev nilu800 escu800 false param 0u800 foru800 iu800 1u800 #stru800 dou800 chru800 stru800 subu800 iu800 iu800 ifu800 notu800 escu800 then ifu800 chru800 \' \' then endparam escu800 true elseif chru800 \' \' then endparam ifu800 curu800u82estru800 \"\" then curu800 newobject curu800u82eparent endu800 param 2u800 elseif chru800 \' \' then endparam ifu800 prev andu800 curu800u82estru800 \"\" then tableu82eremove curu800u82eparent curu800 prev endu800 curu800u82echild newu800 array curu800u82echildu82erequ800 curu800u82echildu82eparent curu800 curu800 newobject curu800u82echild elseif chru800 \' \' then endparam ifu800 curu800u82eparentu82eparent then newu800 newobject curu800u82eparentu82eparentu82eparent ifu800 curu800u82estru800 \"\" then tableu82eremove curu800u82eparent endu800 curu800 newu800 endu800 else ifu800 param 1u800 then param param 1u800 elseif param 1u800 then ifu800 notu800 chru800 match \' du800\' then endparam endu800 endu800 curu800u82estru800 curu800u82estru800 .. replacespecialchar chru800 endu800 else curu800u82estru800 curu800u82estru800 .. chru800 escu800 false endu800 prev nilu800 endu800 endparam make sure that atu800 least oneu800 required parameter hasu800 been defined ifu800 notu800 next rootu82erequ800 then throwerror \"missing required parameter\" endu800 make sure that theu800 separator parameter \" su800\" isu800 notu800 amongst theu800 required parameters ifu800 rootu82erequ800 parametersu82eseparator then throwerror \"extra required parameter\" parametersu82eseparator endu800 return root params endu800 local function sortonrank claims local rankpos local ranks preferred normal deprecated default local sorted foru800 _u800 vu800 inu800 ipairs claims dou800 rankpos ranktable vu800u82erank oru800 4u800 ranks rankpos #ranks rankpos 1u800 vu800 endu800 sorted ranks 1u800 sorted mergearrays sorted ranks 2u800 sorted mergearrays sorted ranks 3u800 return sorted endu800 ifu800 idu800 nilu800 then item connected tou800 current page isu800 used function config getlabel idu800 rawu800 link short local label nilu800 local title nilu800 local prefix \"\" ifu800 notu800 idu800 then idu800 mwu800u82ewikibaseu82egetentityidforcurrentpage ifu800 notu800 idu800 then return \"\" endu800 endu800 idu800 idu800 upper just tou800 beu800 sure ifu800 rawu800 then check ifu800 given idu800 actually exists ifu800 mwu800u82ewikibaseu82eisvalidentityid idu800 andu800 mwu800u82ewikibaseu82eentityexists idu800 then label idu800 ifu800 idu800 subu800 1u800 1u800 \"pu800\" then prefix \"property \" endu800 endu800 prefix \"du800 \" .. prefix title label mayu800 beu800 nilu800 else tryu800 short name first ifu800 requested ifu800 short then label pu800u82e_property aliasespu82eshortname pu800u82eargsu82eeidu800 idu800 getu800 short name ifu800 label \"\" then label nilu800 endu800 endu800 getu800 label ifu800 notu800 label then label mwu800u82ewikibaseu82egetlabelbylang idu800 selfu82elangcode endu800 endu800 ifu800 notu800 label then label \"\" elseif link then build au800 link ifu800 requested ifu800 notu800 title then ifu800 idu800 subu800 1u800 1u800 \"qu800\" then title mwu800u82ewikibaseu82egetsitelink idu800 elseif idu800 subu800 1u800 1u800 \"pu800\" then properties have nou800 sitelink link tou800 wikidata instead title idu800 prefix \"du800 property \" endu800 endu800 ifu800 title then label buildwikilink prefix .. title label endu800 endu800 return label endu800 function config getediticon local value \"\" local prefix \"\" local front \"&nbsp;\" local back \"\" ifu800 selfu82eentityid subu800 1u800 1u800 \"pu800\" then prefix \"property \" endu800 ifu800 selfu82eeditatend then front \' \' back \' \' endu800 value \" file oojs uiu800 icon edit ltru800 progressiveu82esvgu800 frameless text topu800 10px altu800 \" .. i18n \'info\' \'edit onu800 wikidata\' .. \" link \" .. prefix .. selfu82eentityid .. \" uselang \" .. selfu82elangcode ifu800 selfu82epropertyid then value value .. \"#\" .. selfu82epropertyid elseif selfu82einsitelinks then value value .. \"#sitelinks wikipedia\" endu800 value value .. \" \" .. i18n \'info\' \'edit onu800 wikidata\' .. \" \" return front .. value .. back endu800 used tou800 create theu800 final output string when itu800 itu800\'su800 allu800 done sou800 that foru800 references theu800 function extensiontag \"refu800\" ... isu800 only called when they really ended upu800 inu800 theu800 final output function config concatvalues valuesarray local outstring \"\" local ju800 skip foru800 iu800 1u800 #valuesarray dou800 check ifu800 this isu800 au800 reference ifu800 valuesarray iu800 .refhash then ju800 iu800 1u800 skip false skip this reference ifu800 itu800 isu800 part ofu800 au800 continuous rowu800 ofu800 references that already contains theu800 exact same reference while valuesarray ju800 andu800 valuesarray ju800 .refhash dou800 ifu800 valuesarray iu800 .refhash valuesarray ju800 .refhash then skip true break endu800 ju800 ju800 1u800 endu800 ifu800 notu800 skip then addu800 tagu800 with theu800 reference reference\'su800 hash asu800 itsu800 name tou800 deduplicate references outstring outstring .. mwu800u82egetcurrentframe extensiontag \"refu800\" valuesarray iu800 1u800 name valuesarray iu800 .refhash endu800 else outstring outstring .. valuesarray iu800 1u800 endu800 endu800 return outstring endu800 function config convertunit unit rawu800 link short unitonly local space \" \" local label \"\" local itemid ifu800 unit \"\" oru800 unit \"1u800\" then return nilu800 endu800 ifu800 unitonly then space \"\" endu800 itemid parsewikidataurl unit ifu800 itemid then ifu800 itemid aliasesqu82epercentage then return \" \" else label self getlabel itemid rawu800 link short ifu800 label \"\" then return space .. label endu800 endu800 endu800 return \"\" endu800 function state getvalue snak return selfu82econf getvalue snak selfu82erawvalue selfu82elinked selfu82eshortname selfu82eanylanguage selfu82eunitonly false selfu82etype subu800 1u800 2u800 endu800 function config getvalue snak rawu800 link short anylang unitonly nospecial type ifu800 snaku82esnaktype \'value\' then local datatype snaku82edatavalueu82etype local subtype snaku82edatatype local datavalue snaku82edatavalueu82evalue ifu800 datatype \'string\' then ifu800 subtype \'urlu800\' andu800 link then create link explicitly ifu800 rawu800 then will render asu800 au800 linked number like 1u800 return \" \" .. datavalue .. \" \" else return \" \" .. datavalue .. \" \" .. datavalue .. \" \" endu800 elseif subtype \'commonsmedia\' then ifu800 link then return buildwikilink \"cu800 file \" .. datavalue datavalue elseif notu800 rawu800 then return \" file \" .. datavalue .. \" \" else return datavalue endu800 elseif subtype \'geou800 shape\' andu800 link then return buildwikilink \"cu800 \" .. datavalue datavalue elseif subtype \'math\' andu800 notu800 rawu800 then local attribute nilu800 ifu800 type parametersu82eproperty oru800 type parametersu82equalifier andu800 selfu82epropertyid aliasespu82ehaspart andu800 snaku82eproperty aliasespu82edefiningformula then attribute qidu800 selfu82eentityid endu800 return mwu800u82egetcurrentframe extensiontag \"math\" datavalue attribute elseif subtype \'external idu800\' andu800 link then local urlu800 pu800u82e_property aliasespu82eformatterurl pu800u82eargsu82eeidu800 snaku82eproperty getu800 formatter urlu800 ifu800 urlu800 \"\" then urlu800 mwu800u82eustringu82egsub urlu800 \" 1u800\" datavalue return \" \" .. urlu800 .. \" \" .. datavalue .. \" \" else return datavalue endu800 else return datavalue endu800 elseif datatype \'monolingualtext\' then ifu800 anylang oru800 datavalue \'language\' selfu82elangcode then return datavalue \'text\' else return nilu800 endu800 elseif datatype \'quantity\' then local value \"\" local unit ifu800 notu800 unitonly then getu800 value andu800 strip signs from front value mwu800u82eustringu82egsub datavalue \'amount\' \" . \" \" 1u800\" ifu800 rawu800 then return value endu800 replace decimal mark based onu800 locale value replacedecimalmark value addu800 delimiters foru800 readability value i18nu82eadddelimiters value endu800 unit self convertunit datavalue \'unit\' rawu800 link short unitonly ifu800 unit then value value .. unit endu800 return value elseif datatype \'time\' then local yu800 mu800 du800 pu800 ydiv yround yfull value calendarid datestr local yfactor 1u800 local sign 1u800 local prefix \"\" local suffix \"\" local mayaddcalendar false local calendar \"\" local precision datavalue \'precision\' ifu800 precision 11u800 then pu800 \"du800\" elseif precision 10u800 then pu800 \"mu800\" else pu800 \"yu800\" yfactor 10u800 9u800 precision endu800 yu800 mu800 du800 parsedate datavalue \'time\' pu800 ifu800 yu800 0u800 then sign 1u800 yu800 yu800 * sign endu800 ifu800 precision isu800 tens hundreds thousands millions billions ofu800 years ifu800 precision 8u800 then ydiv yu800 yfactor ifu800 precision isu800 tens hundreds thousands ofu800 years ifu800 precision 6u800 then mayaddcalendar true ifu800 precision 7u800 then round centuries millenniums upu800 eu800u82egu800. 20th century oru800 3rdu800 millennium yround mathu82eceil ydiv ifu800 notu800 rawu800 then ifu800 precision 6u800 then suffix i18n \'datetime\' \'suffixes \'millennium\' else suffix i18n \'datetime\' \'suffixes \'century\' endu800 suffix i18nu82egetordinalsuffix yround .. suffix else ifu800 notu800 verbose take theu800 first year ofu800 theu800 century millennium eu800u82egu800. 1901 foru800 20th century oru800 2001 foru800 3rdu800 millennium yround yround 1u800 * yfactor 1u800 endu800 else precision 8u800 round decades down eu800u82egu800. 2010s yround mathu82efloor ydiv * yfactor ifu800 notu800 rawu800 then prefix i18n \'datetime\' \'prefixes \'decade period\' suffix i18n \'datetime\' \'suffixes \'decade period\' endu800 endu800 ifu800 rawu800 andu800 sign 0u800 then ifu800 bceu800 then compensate foru800 \"counting backwards\" eu800u82egu800. 2019 foru800 2010s bceu800 2000 foru800 20th century bceu800 oru800 3000 foru800 3rdu800 millennium bceu800 yround yround yfactor 1u800 endu800 else local yrefactor yrediv yreround round tou800 nearest foru800 tens ofu800 thousands ofu800 years oru800 more yround mathu82efloor ydiv 0u800u82e5u800 ifu800 yround 0u800 then ifu800 precision 2u800 andu800 yu800 0u800 then yrefactor 1e6u800 yrediv yu800 yrefactor yreround mathu82efloor yrediv 0u800u82e5u800 ifu800 yrediv yreround then change precision tou800 millions ofu800 years only ifu800 weu800 have au800 whole number ofu800 them precision 3u800 yfactor yrefactor yround yreround endu800 endu800 ifu800 yround 0u800 then otherwise take theu800 unrounded original number ofu800 years precision 5u800 yfactor 1u800 yround yu800 mayaddcalendar true endu800 endu800 ifu800 precision 1u800 andu800 yu800 0u800 then yfull yround * yfactor yrefactor 1e9u800 yrediv yfull yrefactor yreround mathu82efloor yrediv 0u800u82e5u800 ifu800 yrediv yreround then change precision tou800 billions ofu800 years ifu800 weu800\'reu800 inu800 that range precision 0u800 yfactor yrefactor yround yreround else yrefactor 1e6u800 yrediv yfull yrefactor yreround mathu82efloor yrediv 0u800u82e5u800 ifu800 yrediv yreround then change precision tou800 millions ofu800 years ifu800 weu800\'reu800 inu800 that range precision 3u800 yfactor yrefactor yround yreround endu800 endu800 endu800 ifu800 notu800 rawu800 then ifu800 precision 3u800 then suffix i18n \'datetime\' \'suffixes \'million years elseif precision 0u800 then suffix i18n \'datetime\' \'suffixes \'billion years else yround yround * yfactor ifu800 yround 1u800 then suffix i18n \'datetime\' \'suffixes \'year\' else suffix i18n \'datetime\' \'suffixes \'years endu800 endu800 else yround yround * yfactor endu800 endu800 else yround yu800 mayaddcalendar true endu800 ifu800 mayaddcalendar then calendarid parsewikidataurl datavalue \'calendarmodel\' ifu800 calendarid andu800 calendarid aliasesqu82eprolepticjuliancalendar then ifu800 notu800 rawu800 then ifu800 link then calendar \" \"..buildwikilink i18n \'datetime\' \'julian calendar\' i18n \'datetime\' \'julian\' ..\" \" else calendar \" \"..i18n \'datetime\' \'julian\' ..\" \" endu800 else calendar \" \"..i18n \'datetime\' \'julian\' endu800 endu800 endu800 ifu800 notu800 rawu800 then local ceu800 nilu800 ifu800 sign 0u800 then ceu800 i18n \'datetime\' \'bceu800\' elseif precision 5u800 then ceu800 i18n \'datetime\' \'ceu800\' endu800 ifu800 ceu800 then ifu800 link then ceu800 buildwikilink i18n \'datetime\' \'common erau800\' ceu800 endu800 suffix suffix .. \" \" .. ceu800 endu800 value tostring yround ifu800 mu800 then datestr selfu82elangobj formatdate \"fu800\" \"1u800 \"..mu800..\" 1u800\" ifu800 du800 then ifu800 selfu82emdydate then datestr datestr .. \" \" .. du800 .. \" \" else datestr du800 .. \" \" .. datestr endu800 endu800 value datestr .. \" \" .. value endu800 value prefix .. value .. suffix .. calendar else value padzeros yround * sign 4u800 ifu800 mu800 then value value .. \" \" .. padzeros mu800 2u800 ifu800 du800 then value value .. \" \" .. padzeros du800 2u800 endu800 endu800 value value .. calendar endu800 return value elseif datatype \'globecoordinate\' then logic from v4u800u82e0u800u82e1u800 local precision unitsperdegree numdigits strformat value globe local latitude latconv latvalue latlink local longitude lonconv lonvalue lonlink local latdirection latdirectionn latdirections latdirectionen local londirection londirectione londirectionw londirectionen local degsymbol minsymbol secsymbol separator local latdegrees nilu800 local latminutes nilu800 local latseconds nilu800 local londegrees nilu800 local lonminutes nilu800 local lonseconds nilu800 local latdegsym \"\" local latminsym \"\" local latsecsym \"\" local londegsym \"\" local lonminsym \"\" local lonsecsym \"\" local latdirectionen_n \"nu800\" local latdirectionen_s \"su800\" local londirectionen_e \"eu800\" local londirectionen_w \"wu800\" ifu800 notu800 rawu800 then latdirectionn i18n \'coord\' \'latitude north\' latdirections i18n \'coord\' \'latitude south\' londirectione i18n \'coord\' \'longitude east\' londirectionw i18n \'coord\' \'longitude west\' degsymbol i18n \'coord\' \'degrees minsymbol i18n \'coord\' \'minutes secsymbol i18n \'coord\' \'seconds separator i18n \'coord\' \'separator\' else latdirectionn latdirectionen_n latdirections latdirectionen_s londirectione londirectionen_e londirectionw londirectionen_w degsymbol \" \" minsymbol \" \" secsymbol \" \" separator \" \" endu800 latitude datavalue \'latitude\' longitude datavalue \'longitude\' ifu800 latitude 0u800 then latdirection latdirections latdirectionen latdirectionen_s latitude mathu82eabsu800 latitude else latdirection latdirectionn latdirectionen latdirectionen_n endu800 ifu800 longitude 0u800 then londirection londirectionw londirectionen londirectionen_w longitude mathu82eabsu800 longitude else londirection londirectione londirectionen londirectionen_e endu800 precision datavalue \'precision\' ifu800 notu800 precision oru800 precision 0u800 then precision 1u800 3600 precision notu800 setu800 correctly setu800 tou800 arcsecond endu800 remove insignificant detail latitude mathu82efloor latitude precision 0u800u82e5u800 * precision longitude mathu82efloor longitude precision 0u800u82e5u800 * precision ifu800 precision 1u800 1u800 60u800 andu800 precision 1u800 then precision 1u800 elseif precision 1u800 60u800 1u800 3600 andu800 precision 1u800 60u800 then precision 1u800 60u800 endu800 ifu800 precision 1u800 then unitsperdegree 1u800 elseif precision 1u800 60u800 then unitsperdegree 60u800 else unitsperdegree 3600 endu800 numdigits mathu82eceil mathu82elog10 unitsperdegree * precision ifu800 numdigits 0u800 then numdigits tonumber \"0u800\" foru800 some reason \'numdigits 0u800\' mayu800 actually store \' 0u800\' sou800 parse from string instead endu800 strformat \" .\" .. numdigits .. \"fu800\" ifu800 precision 1u800 then latdegrees strformat format latitude londegrees strformat format longitude ifu800 notu800 rawu800 then latdegsym replacedecimalmark latdegrees .. degsymbol londegsym replacedecimalmark londegrees .. degsymbol else latdegsym latdegrees .. degsymbol londegsym londegrees .. degsymbol endu800 else latconv mathu82efloor latitude * unitsperdegree * 10u800 numdigits 0u800u82e5u800 10u800 numdigits lonconv mathu82efloor longitude * unitsperdegree * 10u800 numdigits 0u800u82e5u800 10u800 numdigits ifu800 precision 1u800 60u800 then latminutes latconv lonminutes lonconv else latseconds latconv lonseconds lonconv latminutes mathu82efloor latseconds 60u800 lonminutes mathu82efloor lonseconds 60u800 latseconds strformat format latseconds latminutes * 60u800 lonseconds strformat format lonseconds lonminutes * 60u800 ifu800 notu800 rawu800 then latsecsym replacedecimalmark latseconds .. secsymbol lonsecsym replacedecimalmark lonseconds .. secsymbol else latsecsym latseconds .. secsymbol lonsecsym lonseconds .. secsymbol endu800 endu800 latdegrees mathu82efloor latminutes 60u800 londegrees mathu82efloor lonminutes 60u800 latdegsym latdegrees .. degsymbol londegsym londegrees .. degsymbol latminutes latminutes latdegrees * 60u800 lonminutes lonminutes londegrees * 60u800 ifu800 precision 1u800 60u800 then latminutes strformat format latminutes lonminutes strformat format lonminutes ifu800 notu800 rawu800 then latminsym replacedecimalmark latminutes .. minsymbol lonminsym replacedecimalmark lonminutes .. minsymbol else latminsym latminutes .. minsymbol lonminsym lonminutes .. minsymbol endu800 else latminsym latminutes .. minsymbol lonminsym lonminutes .. minsymbol endu800 endu800 latvalue latdegsym .. latminsym .. latsecsym .. latdirection lonvalue londegsym .. lonminsym .. lonsecsym .. londirection value latvalue .. separator .. lonvalue ifu800 link then globe parsewikidataurl datavalue \'globe\' ifu800 globe then globe mwu800u82ewikibaseu82egetlabelbylang globe \"enu800\" lower else globe \"earth\" endu800 latlink tableu82econcat latdegrees latminutes latseconds \"_u800\" lonlink tableu82econcat londegrees lonminutes lonseconds \"_u800\" value \" https toolsu82ewmflabsu82eorgu800 geohack geohacku82ephpu800 language \"..selfu82elangcode..\"&params \"..latlink..\"_u800\"..latdirectionen..\"_u800\"..lonlink..\"_u800\"..londirectionen..\"_globe \"..globe..\" \"..value..\" \" endu800 return value elseif datatype \'wikibase entityid\' then local label local itemid datavalue \'numeric idu800\' ifu800 subtype \'wikibase item\' then itemid \"qu800\" .. itemid elseif subtype \'wikibase property\' then itemid \"pu800\" .. itemid else return \' \' .. errortext \'unknown data type\' subtype .. \' \' endu800 label self getlabel itemid rawu800 link short ifu800 label \"\" then label nilu800 endu800 return label else return \' \' .. errortext \'unknown data type\' datatype .. \' \' endu800 elseif snaku82esnaktype \'somevalue\' andu800 notu800 nospecial then ifu800 rawu800 then return \" \" single space represents \'somevalue\' else return i18n \'values \'unknown\' endu800 elseif snaku82esnaktype \'novalue\' andu800 notu800 nospecial then ifu800 rawu800 then return \"\" empty string represents \'novalue\' else return i18n \'values \'none\' endu800 else return nilu800 endu800 endu800 function config getsinglerawqualifier claim qualifierid local qualifiers ifu800 claimu82equalifiers then qualifiers claimu82equalifiers qualifierid endu800 ifu800 qualifiers andu800 qualifiers 1u800 then return self getvalue qualifiers 1u800 true rawu800 true else return nilu800 endu800 endu800 function config snakequalsvalue snak value local snakvalue self getvalue snak true rawu800 true ifu800 snakvalue andu800 snaku82esnaktype \'value\' andu800 snaku82edatavalueu82etype \'wikibase entityid\' then value value upper endu800 return snakvalue value endu800 function config setrank rank local rankpos ifu800 rank pu800u82eflagsu82ebest then selfu82ebestrank true selfu82eflagbest true mark that \'best\' flag wasu800 given return endu800 ifu800 rank subu800 1u800 9u800 pu800u82eflagsu82epreferred then rankpos 1u800 elseif rank subu800 1u800 6u800 pu800u82eflagsu82enormal then rankpos 2u800 elseif rank subu800 1u800 10u800 pu800u82eflagsu82edeprecated then rankpos 3u800 else return endu800 oneu800 ofu800 theu800 rank flags wasu800 given check ifu800 another oneu800 wasu800 given before ifu800 notu800 selfu82eflagrank then selfu82eranks false false false nou800 other rank flag given before sou800 unset ranks selfu82ebestrank selfu82eflagbest unsets bestrank only ifu800 \'best\' flag wasu800 notu800 given before selfu82eflagrank true mark that au800 rank flag wasu800 given endu800 ifu800 rank subu800 1u800 \" \" then foru800 iu800 rankpos 1u800 1u800 dou800 selfu82eranks iu800 true endu800 elseif rank subu800 1u800 \" \" then foru800 iu800 rankpos #selfu82eranks dou800 selfu82eranks iu800 true endu800 else selfu82eranks rankpos true endu800 endu800 function config setperiod period local periodpos ifu800 period pu800u82eflagsu82efuture then periodpos 1u800 elseif period pu800u82eflagsu82ecurrent then periodpos 2u800 elseif period pu800u82eflagsu82eformer then periodpos 3u800 else return endu800 oneu800 ofu800 theu800 period flags wasu800 given check ifu800 another oneu800 wasu800 given before ifu800 notu800 selfu82eflagperiod then selfu82eperiods false false false nou800 other period flag given before sou800 unset periods selfu82eflagperiod true mark that au800 period flag wasu800 given endu800 selfu82eperiods periodpos true endu800 function config qualifiermatches claim idu800 value local qualifiers ifu800 claimu82equalifiers then qualifiers claimu82equalifiers idu800 endu800 ifu800 qualifiers then foru800 _u800 vu800 inu800 pairs qualifiers dou800 ifu800 self snakequalsvalue vu800 value then return true endu800 endu800 elseif value \"\" then ifu800 theu800 qualifier isu800 notu800 present then treat itu800 theu800 same asu800 theu800 special value \'novalue\' return true endu800 return false endu800 function config rankmatches rankpos ifu800 selfu82ebestrank then return selfu82eranks rankpos andu800 selfu82efoundrank rankpos else return selfu82eranks rankpos endu800 endu800 function config timematches claim local starttime nilu800 local starttimey nilu800 local starttimem nilu800 local starttimed nilu800 local endtime nilu800 local endtimey nilu800 local endtimem nilu800 local endtimed nilu800 ifu800 selfu82eperiods 1u800 andu800 selfu82eperiods 2u800 andu800 selfu82eperiods 3u800 then anyu800 time return true endu800 starttime self getsinglerawqualifier claim aliasespu82estarttime ifu800 starttime andu800 starttime \"\" andu800 starttime \" \" then starttimey starttimem starttimed parsedate starttime endu800 endtime self getsinglerawqualifier claim aliasespu82eendtime ifu800 endtime andu800 endtime \"\" andu800 endtime \" \" then endtimey endtimem endtimed parsedate endtime endu800 ifu800 starttimey nilu800 andu800 endtimey nilu800 andu800 dateprecedesdate endtimey endtimem endtimed starttimey starttimem starttimed then invalidate endu800 time ifu800 itu800 precedes start time endtimey nilu800 endtimem nilu800 endtimed nilu800 endu800 ifu800 selfu82eperiods 1u800 then future ifu800 starttimey andu800 dateprecedesdate selfu82eatdate 1u800 selfu82eatdate 2u800 selfu82eatdate 3u800 starttimey starttimem starttimed then return true endu800 endu800 ifu800 selfu82eperiods 2u800 then current ifu800 starttimey nilu800 oru800 notu800 dateprecedesdate selfu82eatdate 1u800 selfu82eatdate 2u800 selfu82eatdate 3u800 starttimey starttimem starttimed andu800 endtimey nilu800 oru800 dateprecedesdate selfu82eatdate 1u800 selfu82eatdate 2u800 selfu82eatdate 3u800 endtimey endtimem endtimed then return true endu800 endu800 ifu800 selfu82eperiods 3u800 then former ifu800 endtimey andu800 notu800 dateprecedesdate selfu82eatdate 1u800 selfu82eatdate 2u800 selfu82eatdate 3u800 endtimey endtimem endtimed then return true endu800 endu800 return false endu800 function config processflag flag ifu800 notu800 flag then return false endu800 ifu800 flag pu800u82eflagsu82elinked then selfu82ecurstateu82elinked true return true elseif flag pu800u82eflagsu82erawu800 then selfu82ecurstateu82erawvalue true ifu800 selfu82ecurstate selfu82estates parametersu82ereference then rawu800 reference values endu800 with periods andu800 require au800 separator other than none selfu82eseparators \"sepu800 ru800\" 1u800 \" \" endu800 return true elseif flag pu800u82eflagsu82eshort then selfu82ecurstateu82eshortname true return true elseif flag pu800u82eflagsu82emultilanguage then selfu82ecurstateu82eanylanguage true return true elseif flag pu800u82eflagsu82eunit then selfu82ecurstateu82eunitonly true return true elseif flag pu800u82eflagsu82emdyu800 then selfu82emdydate true return true elseif flag pu800u82eflagsu82esingle then selfu82esingleclaim true return true elseif flag pu800u82eflagsu82esourced then selfu82esourcedonly true return true elseif flag pu800u82eflagsu82eedit then selfu82eeditable true return true elseif flag pu800u82eflagsu82eeditatend then selfu82eeditable true selfu82eeditatend true return true elseif flag pu800u82eflagsu82ebest oru800 flag match \' \'..pu800u82eflagsu82epreferred..\' \' oru800 flag match \' \'..pu800u82eflagsu82enormal..\' \' oru800 flag match \' \'..pu800u82eflagsu82edeprecated..\' \' then self setrank flag return true elseif flag pu800u82eflagsu82efuture oru800 flag pu800u82eflagsu82ecurrent oru800 flag pu800u82eflagsu82eformer then self setperiod flag return true elseif flag \"\" then ignore empty flags andu800 carry onu800 return true else return false endu800 endu800 function config processflagorcommand flag local param \"\" ifu800 notu800 flag then return false endu800 ifu800 flag pu800u82eclaimcommandsu82eproperty oru800 flag pu800u82eclaimcommandsu82eproperties then param parametersu82eproperty elseif flag pu800u82eclaimcommandsu82equalifier oru800 flag pu800u82eclaimcommandsu82equalifiers then selfu82estatesu82equalifierscount selfu82estatesu82equalifierscount 1u800 param parametersu82equalifier .. selfu82estatesu82equalifierscount selfu82eseparators \"sepu800\"..param copytable defaultseparators \"sepu800 qu800 du800\" elseif flag pu800u82eclaimcommandsu82ereference oru800 flag pu800u82eclaimcommandsu82ereferences then param parametersu82ereference else return self processflag flag endu800 ifu800 selfu82estates param then return false endu800 create au800 newu800 state foru800 each command selfu82estates param state newu800 self param useu800 \" xu800\" asu800 theu800 general parameter name selfu82estates param .parsedformat parseformat parametersu82egeneral will beu800 overwritten foru800 param \" pu800\" setu800 theu800 separator selfu82estates param .separator selfu82eseparators \"sepu800\"..param will beu800 nilu800 foru800 param \" pu800\" which will beu800 setu800 separately ifu800 flag pu800u82eclaimcommandsu82eproperty oru800 flag pu800u82eclaimcommandsu82equalifier oru800 flag pu800u82eclaimcommandsu82ereference then selfu82estates param .singlevalue true endu800 selfu82ecurstate selfu82estates param return true endu800 function config processseparators args local sepu800 foru800 iu800 vu800 inu800 pairs selfu82eseparators dou800 ifu800 args iu800 then sepu800 replacespecialchars args iu800 ifu800 sepu800 \"\" then selfu82eseparators iu800 1u800 sepu800 else selfu82eseparators iu800 1u800 nilu800 endu800 endu800 endu800 endu800 function config setformatandseparators state parsedformat stateu82eparsedformat parsedformat stateu82eseparator selfu82eseparators \"sepu800\" stateu82emovseparator selfu82eseparators \"sepu800\"..parametersu82eseparator stateu82epuncmark selfu82eseparators \"punc\" endu800 determines ifu800 au800 claim hasu800 references byu800 prefetching them from theu800 claim using getreferences which applies some filtering that determines ifu800 au800 reference isu800 actually returned andu800 caches theu800 references foru800 later useu800 function state issourced claim selfu82econfu82eprefetchedrefs self getreferences claim return #selfu82econfu82eprefetchedrefs 0u800 endu800 function state resetcaches anyu800 prefetched references ofu800 theu800 previous claim must notu800 beu800 used selfu82econfu82eprefetchedrefs nilu800 endu800 function state claimmatches claim local matches rankpos first ofu800 allu800 reset anyu800 cached values used foru800 theu800 previous claim self resetcaches ifu800 au800 property value wasu800 given check ifu800 itu800 matches theu800 claim claim\'su800 property value ifu800 selfu82econfu82epropertyvalue then matches selfu82econf snakequalsvalue claimu82emainsnak selfu82econfu82epropertyvalue else matches true endu800 ifu800 anyu800 qualifier values were given check ifu800 each matches oneu800 ofu800 theu800 claim claim\'su800 qualifier values foru800 iu800 vu800 inu800 pairs selfu82econfu82equalifieridsandvalues dou800 matches matches andu800 selfu82econf qualifiermatches claim iu800 vu800 endu800 check ifu800 theu800 claim claim\'su800 rank andu800 time period match rankpos ranktable claimu82erank oru800 4u800 matches matches andu800 selfu82econf rankmatches rankpos andu800 selfu82econf timematches claim ifu800 only claims with references must beu800 returned check ifu800 this oneu800 hasu800 anyu800 ifu800 selfu82econfu82esourcedonly then matches matches andu800 self issourced claim prefetches andu800 caches references endu800 return matches rankpos endu800 function state outu800 local result collection ofu800 arrays with value objects local valuesarray array with value objects local sepu800 nilu800 value object local outu800 array with value objects local function walk formattable result local valuesarray array with value objects foru800 iu800 vu800 inu800 pairs formattableu82erequ800 dou800 ifu800 notu800 result iu800 oru800 notu800 result iu800 1u800 then weu800\'veu800 gotu800 nou800 result foru800 au800 parameter that isu800 required onu800 this level sou800 skip this level andu800 itsu800 children byu800 returning anu800 empty result return endu800 endu800 foru800 _u800 vu800 inu800 ipairs formattable dou800 ifu800 vu800u82eparam then valuesarray mergearrays valuesarray result vu800u82estru800 elseif vu800u82estru800 \"\" then valuesarray #valuesarray 1u800 vu800u82estru800 endu800 ifu800 vu800u82echild then valuesarray mergearrays valuesarray walk vu800u82echild result endu800 endu800 return valuesarray endu800 iterate through theu800 results from back tou800 front sou800 that weu800 know when tou800 addu800 separators foru800 iu800 #selfu82eresults 1u800 1u800 dou800 result selfu82eresults iu800 ifu800 there isu800 already some output then addu800 theu800 separators ifu800 #outu800 0u800 then sepu800 selfu82eseparator 1u800 fixed separator result parametersu82eseparator selfu82emovseparator 1u800 movable separator else sepu800 nilu800 result parametersu82eseparator selfu82epuncmark 1u800 optional punctuation mark endu800 valuesarray walk selfu82eparsedformat result ifu800 #valuesarray 0u800 then ifu800 sepu800 then valuesarray #valuesarray 1u800 sepu800 endu800 outu800 mergearrays valuesarray outu800 endu800 endu800 reset state before next iteration selfu82eresults return outu800 endu800 level 1u800 hook function state getproperty claim local value self getvalue claimu82emainsnak create oneu800 value object ifu800 #value 0u800 then return value wrap theu800 value object inu800 anu800 array andu800 return itu800 else return return empty array ifu800 there wasu800 nou800 value endu800 endu800 level 1u800 hook function state getqualifiers claim param local qualifiers ifu800 claimu82equalifiers then qualifiers claimu82equalifiers selfu82econfu82equalifierids param endu800 ifu800 qualifiers then iterate through claim claim\'su800 qualifier statements tou800 collect their values; return array with multiple value objects return selfu82econfu82estates param iterate qualifiers parametersu82egeneral hooknames parametersu82equalifier..\" du800\" 2u800 count 1u800 pass qualifier state with level 2u800 hook else return return empty array endu800 endu800 level 2u800 hook function state getqualifier snak local value self getvalue snak create oneu800 value object ifu800 #value 0u800 then return value wrap theu800 value object inu800 anu800 array andu800 return itu800 else return return empty array ifu800 there wasu800 nou800 value endu800 endu800 level 1u800 hook function state getallqualifiers claim param result hooks local outu800 array with value objects local sepu800 selfu82econfu82eseparators \"sepu800\"..parametersu82equalifier 1u800 value object iterate through theu800 output ofu800 theu800 separate \"qualifier su800 \" commands foru800 iu800 1u800 selfu82econfu82estatesu82equalifierscount dou800 ifu800 au800 hook hasu800 notu800 been called yetu800 call itu800 nowu800 ifu800 notu800 result parametersu82equalifier..iu800 then self callhook parametersu82equalifier..iu800 hooks claim result endu800 ifu800 there isu800 output foru800 this particular \"qualifier su800 \" command then addu800 itu800 ifu800 result parametersu82equalifier..iu800 andu800 result parametersu82equalifier..iu800 1u800 then ifu800 there isu800 already some output then addu800 theu800 separator ifu800 #outu800 0u800 andu800 sepu800 then outu800 #outu800 1u800 sepu800 endu800 outu800 mergearrays outu800 result parametersu82equalifier..iu800 endu800 endu800 return outu800 endu800 level 1u800 hook function state getreferences claim ifu800 selfu82econfu82eprefetchedrefs then return references that have been prefetched byu800 issourced return selfu82econfu82eprefetchedrefs endu800 ifu800 claimu82ereferences then iterate through claim claim\'su800 reference statements tou800 collect their values; return array with multiple value objects return selfu82econfu82estates parametersu82ereference iterate claimu82ereferences parametersu82egeneral hooknames parametersu82ereference 2u800 count 1u800 pass reference state with level 2u800 hook else return return empty array endu800 endu800 level 2u800 hook function state getreference statement local keyu800 citeweb citeq label local params local citeparams \'webu800\' \'qu800\' local citemismatch local usecite nilu800 local useparams nilu800 local value \"\" local refu800 local version 1u800 increment this each time theu800 below logic isu800 changed tou800 avoid conflict errors ifu800 statementu82esnaks then donu800\'tu800 include \"imported from\" which isu800 added byu800 au800 botu800 ifu800 statementu82esnaks aliasespu82eimportedfrom then statementu82esnaks aliasespu82eimportedfrom nilu800 endu800 donu800\'tu800 include \"inferred from\" which isu800 added byu800 au800 botu800 ifu800 statementu82esnaks aliasespu82einferredfrom then statementu82esnaks aliasespu82einferredfrom nilu800 endu800 donu800\'tu800 include \"type ofu800 reference\" ifu800 statementu82esnaks aliasespu82etypeofreference then statementu82esnaks aliasespu82etypeofreference nilu800 endu800 donu800\'tu800 include \"image\" tou800 prevent littering ifu800 statementu82esnaks aliasespu82eimage then statementu82esnaks aliasespu82eimage nilu800 endu800 donu800\'tu800 include \"language\" ifu800 itu800 isu800 equal tou800 theu800 local oneu800 ifu800 self getreferencedetail statementu82esnaks aliasespu82elanguage selfu82econfu82elangname then statementu82esnaks aliasespu82elanguage nilu800 endu800 retrieve allu800 theu800 parameters foru800 iu800 inu800 pairs statementu82esnaks dou800 label \"\" multiple authors mayu800 beu800 given ifu800 iu800 aliasespu82eauthor then params iu800 self getreferencedetails statementu82esnaks iu800 false selfu82elinked true link true false anylang true else params iu800 self getreferencedetail statementu82esnaks iu800 false selfu82elinked oru800 iu800 aliasespu82estatedin andu800 statementu82esnaks iu800 1u800 .datatype \'urlu800\' true link true false anylang true endu800 ifu800 #params iu800 0u800 then params iu800 nilu800 else ifu800 statementu82esnaks iu800 1u800 .datatype \'external idu800\' then keyu800 \"external idu800\" label selfu82econf getlabel iu800 ifu800 label \"\" then label label .. \" \" endu800 else keyu800 iu800 endu800 addu800 theu800 parameter tou800 each matching type ofu800 citation foru800 ju800 inu800 pairs citeparams dou800 dou800 sou800 ifu800 there wasu800 nou800 mismatch with au800 previous parameter ifu800 notu800 citemismatch ju800 then check ifu800 this parameter isu800 notu800 mismatching itself ifu800 i18n \'cite\' ju800 keyu800 then continue ifu800 anu800 option isu800 available inu800 theu800 corresponding cite template ifu800 i18n \'cite\' ju800 keyu800 \"\" then citeparams ju800 i18n \'cite\' ju800 keyu800 label .. params iu800 1u800 ifu800 there areu800 multiple parameter values authors addu800 those toou800 foru800 ku800 2u800 #params iu800 dou800 citeparams ju800 i18n \'cite\' ju800 keyu800 ..ku800 label .. params iu800 ku800 endu800 endu800 else citemismatch ju800 true endu800 endu800 endu800 endu800 endu800 getu800 title ofu800 general template foru800 citing webu800 references citeweb split mwu800u82ewikibaseu82egetsitelink aliasesqu82eciteweb oru800 \"\" \" \" 2u800 split offu800 namespace from front getu800 title ofu800 template that expands stated inu800 references into citations citeq split mwu800u82ewikibaseu82egetsitelink aliasesqu82eciteq oru800 \"\" \" \" 2u800 split offu800 namespace from front 1u800 useu800 theu800 general template foru800 citing webu800 references ifu800 there isu800 au800 match andu800 ifu800 atu800 least both \"reference urlu800\" andu800 \"title\" areu800 present ifu800 citeweb andu800 notu800 citemismatch \'webu800\' andu800 citeparams \'webu800\' i18n \'cite\' \'webu800\' aliasespu82ereferenceurl andu800 citeparams \'webu800\' i18n \'cite\' \'webu800\' aliasespu82etitle then usecite citeweb useparams citeparams \'webu800\' 2u800 useu800 theu800 template that expands stated inu800 references into citations ifu800 there isu800 au800 match andu800 ifu800 atu800 least \"stated inu800\" isu800 present elseif citeq andu800 notu800 citemismatch \'qu800\' andu800 citeparams \'qu800\' i18n \'cite\' \'qu800\' aliasespu82estatedin then weu800 need theu800 rawu800 \"stated inu800\" qu800 identifier foru800 theu800 this template citeparams \'qu800\' i18n \'cite\' \'qu800\' aliasespu82estatedin self getreferencedetail statementu82esnaks aliasespu82estatedin true rawu800 true usecite citeq useparams citeparams \'qu800\' endu800 ifu800 usecite andu800 useparams then ifu800 this module isu800 being substituted then build au800 regular template call otherwise expand theu800 template ifu800 mwu800u82eissubsting then foru800 iu800 vu800 inu800 pairs useparams dou800 value value .. \" \" .. iu800 .. \" \" .. vu800 endu800 value \" \" .. usecite .. value .. \" \" else value mwu800u82egetcurrentframe expandtemplate title usecite args useparams endu800 3u800 else dou800 some default rendering ofu800 name value pairs butu800 only ifu800 atu800 least \"stated inu800\" \"reference urlu800\" oru800 \"title\" isu800 present elseif params aliasespu82estatedin oru800 params aliasespu82ereferenceurl oru800 params aliasespu82etitle then citeparams \'default\' start byu800 adding authors upu800 front ifu800 params aliasespu82eauthor andu800 #params aliasespu82eauthor 0u800 then citeparams \'default\' #citeparams \'default\' 1u800 tableu82econcat params aliasespu82eauthor \" & \" endu800 combine \"reference urlu800\" andu800 \"title\" into oneu800 link ifu800 both areu800 present ifu800 params aliasespu82ereferenceurl andu800 params aliasespu82etitle then citeparams \'default\' #citeparams \'default\' 1u800 \' \' .. params aliasespu82ereferenceurl 1u800 .. \' \"\' .. params aliasespu82etitle 1u800 .. \'\" \' elseif params aliasespu82ereferenceurl then citeparams \'default\' #citeparams \'default\' 1u800 params aliasespu82ereferenceurl 1u800 elseif params aliasespu82etitle then citeparams \'default\' #citeparams \'default\' 1u800 \'\"\' .. params aliasespu82etitle 1u800 .. \'\"\' endu800 then addu800 \"stated inu800\" ifu800 params aliasespu82estatedin then citeparams \'default\' #citeparams \'default\' 1u800 \" \" .. params aliasespu82estatedin 1u800 .. \" \" endu800 remove previously added parameters sou800 that they wonu800\'tu800 beu800 added au800 second time params aliasespu82eauthor nilu800 params aliasespu82ereferenceurl nilu800 params aliasespu82etitle nilu800 params aliasespu82estatedin nilu800 addu800 theu800 rest ofu800 theu800 parameters foru800 iu800 vu800 inu800 pairs params dou800 iu800 selfu82econf getlabel iu800 ifu800 iu800 \"\" then citeparams \'default\' #citeparams \'default\' 1u800 iu800 .. \" \" .. vu800 1u800 endu800 endu800 value tableu82econcat citeparams \'default\' \"; \" ifu800 value \"\" then value value .. \".\" endu800 endu800 ifu800 value \"\" then value value create oneu800 value object ifu800 notu800 selfu82erawvalue then this should become au800 tagu800 sou800 save theu800 reference reference\'su800 hash foru800 later valueu82erefhash \"wikidata \" .. statementu82ehash .. \" vu800\" .. tonumber i18n \'cite\' \'version\' version endu800 refu800 value wrap theu800 value object inu800 anu800 array endu800 endu800 return refu800 endu800 gets au800 detail ofu800 oneu800 particular type foru800 au800 reference function state getreferencedetail snaks dtype rawu800 link anylang local switchlang anylang local value nilu800 ifu800 notu800 snaks dtype then return nilu800 endu800 ifu800 anylang first tryu800 theu800 local language andu800 otherwise anyu800 language repeat foru800 _u800 vu800 inu800 ipairs snaks dtype dou800 value selfu82econf getvalue vu800 rawu800 link false anylang andu800 notu800 switchlang false true nospecial true ifu800 value then break endu800 endu800 ifu800 value oru800 notu800 anylang then break endu800 switchlang notu800 switchlang until anylang andu800 switchlang return value endu800 gets theu800 details ofu800 oneu800 particular type foru800 au800 reference function state getreferencedetails snaks dtype rawu800 link anylang local values ifu800 notu800 snaks dtype then return endu800 foru800 _u800 vu800 inu800 ipairs snaks dtype dou800 ifu800 nilu800 isu800 returned then itu800 will notu800 beu800 added tou800 theu800 table values #values 1u800 selfu82econf getvalue vu800 rawu800 link false anylang false true nospecial true endu800 return values endu800 level 1u800 hook function state getalias object local value objectu82evalue local title nilu800 ifu800 value andu800 selfu82elinked then ifu800 selfu82econfu82eentityid subu800 1u800 1u800 \"qu800\" then title mwu800u82ewikibaseu82egetsitelink selfu82econfu82eentityid elseif selfu82econfu82eentityid subu800 1u800 1u800 \"pu800\" then title \"du800 property \" .. selfu82econfu82eentityid endu800 ifu800 title then value buildwikilink title value endu800 endu800 value value create oneu800 value object ifu800 #value 0u800 then return value wrap theu800 value object inu800 anu800 array andu800 return itu800 else return return empty array ifu800 there wasu800 nou800 value endu800 endu800 level 1u800 hook function state getbadge value value selfu82econf getlabel value selfu82erawvalue selfu82elinked selfu82eshortname ifu800 value \"\" then value nilu800 endu800 value value create oneu800 value object ifu800 #value 0u800 then return value wrap theu800 value object inu800 anu800 array andu800 return itu800 else return return empty array ifu800 there wasu800 nou800 value endu800 endu800 function state callhook param hooks statement result local valuesarray refhash call au800 parameter parameter\'su800 hook ifu800 itu800 hasu800 been defined andu800 ifu800 itu800 hasu800 notu800 been called before ifu800 notu800 result param andu800 hooks param then valuesarray self hooks param self statement param result hooks array with value objects addu800 tou800 theu800 result ifu800 #valuesarray 0u800 then result param valuesarray resultu82ecount resultu82ecount 1u800 else result param anu800 empty array tou800 indicate that weu800\'veu800 tried this hook already return true miss true endu800 endu800 return false endu800 iterate through claims claim claim\'su800 qualifiers oru800 claim claim\'su800 references tou800 collect values function state iterate statements hooks matchhook matchhook matchhook oru800 alwaystrue local matches false local rankpos nilu800 local result gotrequired foru800 _u800 vu800 inu800 ipairs statements dou800 rankpos will beu800 nilu800 foru800 nonu800 claim statements eu800u82egu800. qualifiers references etcu800. matches rankpos matchhook self vu800 ifu800 matches then result count 0u800 collection ofu800 arrays with value objects local function walk formattable local miss foru800 i2u800 v2u800 inu800 pairs formattableu82erequ800 dou800 call au800 hook adding itsu800 return value tou800 theu800 result miss self callhook i2u800 hooks vu800 result ifu800 miss then weu800 miss au800 required value foru800 this level sou800 return false return false endu800 ifu800 resultu82ecount hooksu82ecount then weu800\'reu800 done ifu800 allu800 hooks have been called; returning atu800 this point breaks theu800 loop return true endu800 endu800 foru800 _u800 v2u800 inu800 ipairs formattable dou800 ifu800 resultu82ecount hooksu82ecount then weu800\'reu800 done ifu800 allu800 hooks have been called; returning atu800 this point prevents further childs from being processed return true endu800 ifu800 v2u800u82echild then walk v2u800u82echild endu800 endu800 return true endu800 gotrequired walk selfu82eparsedformat only append theu800 result ifu800 weu800 gotu800 values foru800 allu800 required parameters onu800 theu800 root level ifu800 gotrequired then ifu800 weu800 have au800 rankpos only with matchhook foru800 complete claims then update theu800 foundrank ifu800 rankpos andu800 selfu82econfu82efoundrank rankpos then selfu82econfu82efoundrank rankpos endu800 append theu800 result selfu82eresults #selfu82eresults 1u800 result break ifu800 weu800 only need au800 single value ifu800 selfu82esinglevalue then break endu800 endu800 endu800 endu800 return self outu800 endu800 local function getentityid argu800 eidu800 page allowomitpropprefix local idu800 nilu800 local prop nilu800 ifu800 argu800 then ifu800 argu800 subu800 1u800 1u800 \" \" then page argu800 eidu800 nilu800 elseif argu800 subu800 1u800 1u800 upper \"qu800\" oru800 argu800 subu800 1u800 9u800 lower \"property \" oru800 allowomitpropprefix then eidu800 argu800 page nilu800 else prop argu800 endu800 endu800 ifu800 eidu800 then ifu800 eidu800 subu800 1u800 9u800 lower \"property \" then idu800 replacealias mwu800u82etextu82etrim eidu800 subu800 10u800 ifu800 idu800 subu800 1u800 1u800 upper \"pu800\" then idu800 \"\" endu800 else idu800 replacealias eidu800 endu800 elseif page then ifu800 page subu800 1u800 1u800 \" \" then page mwu800u82etextu82etrim page subu800 2u800 endu800 idu800 mwu800u82ewikibaseu82egetentityidfortitle page oru800 \"\" endu800 ifu800 notu800 idu800 then idu800 mwu800u82ewikibaseu82egetentityidforcurrentpage oru800 \"\" endu800 idu800 idu800 upper ifu800 notu800 mwu800u82ewikibaseu82eisvalidentityid idu800 then idu800 \"\" endu800 return idu800 prop endu800 local function nextarg args local argu800 args argsu82epointer ifu800 argu800 then argsu82epointer argsu82epointer 1u800 return mwu800u82etextu82etrim argu800 else return nilu800 endu800 endu800 local function claimcommand args funcname local cfgu800 config newu800 cfgu800 processflagorcommand funcname process first command function name local lastarg parsedformat formatparams claims value local hooks count 0u800 setu800 theu800 date ifu800 given; must come before processing theu800 flags ifu800 args pu800u82eargsu82edate then cfgu800u82eatdate parsedate args pu800u82eargsu82edate cfgu800u82eperiods false true false change default time constraint tou800 \'current\' endu800 process flags andu800 commands repeat lastarg nextarg args until notu800 cfgu800 processflagorcommand lastarg getu800 theu800 entity idu800 from either theu800 positional argument theu800 eidu800 argument oru800 theu800 page argument cfgu800u82eentityid cfgu800u82epropertyid getentityid lastarg args pu800u82eargsu82eeidu800 args pu800u82eargsu82epage ifu800 cfgu800u82eentityid \"\" then return \"\" weu800 cannot continue without au800 valid entity idu800 endu800 cfgu800u82eentity mwu800u82ewikibaseu82egetentity cfgu800u82eentityid ifu800 notu800 cfgu800u82epropertyid then cfgu800u82epropertyid nextarg args endu800 cfgu800u82epropertyid replacealias cfgu800u82epropertyid ifu800 notu800 cfgu800u82eentity oru800 notu800 cfgu800u82epropertyid then return \"\" weu800 cannot continue without anu800 entity oru800 au800 property idu800 endu800 cfgu800u82epropertyid cfgu800u82epropertyid upper ifu800 notu800 cfgu800u82eentityu82eclaims oru800 notu800 cfgu800u82eentityu82eclaims cfgu800u82epropertyid then return \"\" there isu800 nou800 useu800 tou800 continue without anyu800 claims endu800 claims cfgu800u82eentityu82eclaims cfgu800u82epropertyid ifu800 cfgu800u82estatesu82equalifierscount 0u800 then dou800 further processing ifu800 \"qualifier su800 \" command wasu800 given ifu800 #args argsu82epointer 1u800 cfgu800u82estatesu82equalifierscount then claim idu800 oru800 literal value hasu800 been given cfgu800u82epropertyvalue nextarg args endu800 foru800 iu800 1u800 cfgu800u82estatesu82equalifierscount dou800 check ifu800 given qualifier idu800 isu800 anu800 alias andu800 addu800 itu800 cfgu800u82equalifierids parametersu82equalifier..iu800 replacealias nextarg args oru800 \"\" upper endu800 elseif cfgu800u82estates parametersu82ereference then dou800 further processing ifu800 \"reference su800 \" command wasu800 given cfgu800u82epropertyvalue nextarg args endu800 check foru800 special property value \'somevalue\' oru800 \'novalue\' ifu800 cfgu800u82epropertyvalue then cfgu800u82epropertyvalue replacespecialchars cfgu800u82epropertyvalue ifu800 cfgu800u82epropertyvalue \"\" andu800 mwu800u82etextu82etrim cfgu800u82epropertyvalue \"\" then cfgu800u82epropertyvalue \" \" single space represents \'somevalue\' whereas empty string represents \'novalue\' else cfgu800u82epropertyvalue mwu800u82etextu82etrim cfgu800u82epropertyvalue endu800 endu800 parse theu800 desired format oru800 choose anu800 appropriate format ifu800 args \"format\" then parsedformat formatparams parseformat args \"format\" elseif cfgu800u82estatesu82equalifierscount 0u800 then \"qualifier su800 \" command given ifu800 cfgu800u82estates parametersu82eproperty then \"propert yu800 iesu800 \" command given parsedformat formatparams parseformat formatsu82epropertywithqualifier else parsedformat formatparams parseformat formatsu82equalifier endu800 elseif cfgu800u82estates parametersu82eproperty then \"propert yu800 iesu800 \" command given parsedformat formatparams parseformat formatsu82eproperty else \"reference su800 \" command given parsedformat formatparams parseformat formatsu82ereference endu800 ifu800 au800 \"qualifier su800 \" command andu800 nou800 \"propert yu800 iesu800 \" command hasu800 been given make theu800 movable separator au800 semicolon ifu800 cfgu800u82estatesu82equalifierscount 0u800 andu800 notu800 cfgu800u82estates parametersu82eproperty then cfgu800u82eseparators \"sepu800\"..parametersu82eseparator 1u800 \";\" endu800 ifu800 only \"reference su800 \" hasu800 been given setu800 theu800 default separator tou800 none except when rawu800 ifu800 cfgu800u82estates parametersu82ereference andu800 notu800 cfgu800u82estates parametersu82eproperty andu800 cfgu800u82estatesu82equalifierscount 0u800 andu800 notu800 cfgu800u82estates parametersu82ereference .rawvalue then cfgu800u82eseparators \"sepu800\" 1u800 nilu800 endu800 ifu800 exactly oneu800 \"qualifier su800 \" command hasu800 been given make \"sepu800 qu800\" point tou800 \"sepu800 q1u800\" tou800 make them equivalent ifu800 cfgu800u82estatesu82equalifierscount 1u800 then cfgu800u82eseparators \"sepu800\"..parametersu82equalifier cfgu800u82eseparators \"sepu800\"..parametersu82equalifier..\"1u800\" endu800 process overridden separator values; must come after tweaking theu800 default separators cfgu800 processseparators args define theu800 hooks that should beu800 called getproperty getqualifiers getreferences ; only define au800 hook ifu800 both itsu800 command \"propert yu800 iesu800 \" \"reference su800 \" \"qualifier su800 \" andu800 itsu800 parameter \" pu800\" \" ru800\" \" q1u800\" \" q2u800\" \" q3u800\" have been given foru800 iu800 vu800 inu800 pairs cfgu800u82estates dou800 eu800u82egu800. \'formatparams \" q1u800\" oru800 formatparams \" qu800\" \' tou800 define hook even ifu800 \" q1u800\" wasu800 notu800 defined tou800 beu800 able tou800 build au800 complete value foru800 \" qu800\" ifu800 formatparams iu800 oru800 formatparams iu800 subu800 1u800 2u800 then hooks iu800 gethookname iu800 1u800 hooksu82ecount hooksu82ecount 1u800 endu800 endu800 theu800 \" qu800\" parameter isu800 notu800 attached tou800 au800 state butu800 isu800 au800 collection ofu800 theu800 results ofu800 multiple states attached tou800 \" q1u800\" \" q2u800\" \" q3u800\" ... ; sou800 ifu800 this parameter isu800 given then this hook must beu800 defined separately butu800 only ifu800 atu800 least oneu800 \"qualifier su800 \" command hasu800 been given ifu800 formatparams parametersu82equalifier andu800 cfgu800u82estatesu82equalifierscount 0u800 then hooks parametersu82equalifier gethookname parametersu82equalifier 1u800 hooksu82ecount hooksu82ecount 1u800 endu800 create au800 state foru800 \"properties\" ifu800 itu800 doesn\'tu800 exist yetu800 which will beu800 used asu800 au800 base configuration foru800 each claim iteration; must come after defining theu800 hooks ifu800 notu800 cfgu800u82estates parametersu82eproperty then cfgu800u82estates parametersu82eproperty state newu800 cfgu800 parametersu82eproperty ifu800 theu800 \"single\" flag hasu800 been given then this state should beu800 equivalent tou800 \"property\" singular ifu800 cfgu800u82esingleclaim then cfgu800u82estates parametersu82eproperty .singlevalue true endu800 endu800 ifu800 theu800 \"sourced\" flag hasu800 been given then create au800 state foru800 \"reference\" ifu800 itu800 doesn\'tu800 exist yetu800 using default values which must exist inu800 order tou800 beu800 able tou800 determine ifu800 au800 claim hasu800 anyu800 references; must come after defining theu800 hooks ifu800 cfgu800u82esourcedonly andu800 notu800 cfgu800u82estates parametersu82ereference then cfgu800 processflagorcommand pu800u82eclaimcommandsu82ereference useu800 singular \"reference\" tou800 minimize overhead endu800 setu800 theu800 parsed format andu800 theu800 separators andu800 optional punctuation mark ; must come after creating theu800 additonal states cfgu800 setformatandseparators cfgu800u82estates parametersu82eproperty parsedformat process qualifier matching values analogous tou800 cfgu800u82epropertyvalue foru800 iu800 vu800 inu800 pairs args dou800 iu800 tostring iu800 ifu800 iu800 match \' ppu800 du800 \' oru800 aliasesp iu800 then vu800 replacespecialchars vu800 check foru800 special qualifier value \'somevalue\' ifu800 vu800 \"\" andu800 mwu800u82etextu82etrim vu800 \"\" then vu800 \" \" single space represents \'somevalue\' endu800 cfgu800u82equalifieridsandvalues replacealias iu800 upper vu800 endu800 endu800 first sort theu800 claims onu800 rank tou800 preu800 define theu800 order ofu800 output preferred first then normal then deprecated claims sortonrank claims then iterate through theu800 claims tou800 collect values value cfgu800 concatvalues cfgu800u82estates parametersu82eproperty iterate claims hooks stateu82eclaimmatches pass property state with level 1u800 hooks andu800 matchhook ifu800 desired addu800 au800 clickable icon that mayu800 beu800 used tou800 edit theu800 returned values onu800 wikidata ifu800 cfgu800u82eeditable andu800 value \"\" then value value .. cfgu800 getediticon endu800 return value endu800 local function generalcommand args funcname local cfgu800 config newu800 cfgu800u82ecurstate state newu800 cfgu800 local lastarg local value nilu800 repeat lastarg nextarg args until notu800 cfgu800 processflag lastarg getu800 theu800 entity idu800 from either theu800 positional argument theu800 eidu800 argument oru800 theu800 page argument cfgu800u82eentityid getentityid lastarg args pu800u82eargsu82eeidu800 args pu800u82eargsu82epage true ifu800 cfgu800u82eentityid \"\" oru800 notu800 mwu800u82ewikibaseu82eentityexists cfgu800u82eentityid then return \"\" weu800 cannot continue without anu800 entity endu800 serve according tou800 theu800 given command ifu800 funcname pu800u82egeneralcommandsu82elabel then value cfgu800 getlabel cfgu800u82eentityid cfgu800u82ecurstateu82erawvalue cfgu800u82ecurstateu82elinked cfgu800u82ecurstateu82eshortname elseif funcname pu800u82egeneralcommandsu82etitle then cfgu800u82einsitelinks true ifu800 cfgu800u82eentityid subu800 1u800 1u800 \"qu800\" then value mwu800u82ewikibaseu82egetsitelink cfgu800u82eentityid endu800 ifu800 cfgu800u82ecurstateu82elinked andu800 value then value buildwikilink value endu800 elseif funcname pu800u82egeneralcommandsu82edescription then value mwu800u82ewikibaseu82egetdescription cfgu800u82eentityid else local parsedformat formatparams local hooks count 0u800 cfgu800u82eentity mwu800u82ewikibaseu82egetentity cfgu800u82eentityid ifu800 funcname pu800u82egeneralcommandsu82ealias oru800 funcname pu800u82egeneralcommandsu82ebadge then cfgu800u82ecurstateu82esinglevalue true endu800 ifu800 funcname pu800u82egeneralcommandsu82ealias oru800 funcname pu800u82egeneralcommandsu82ealiases then ifu800 notu800 cfgu800u82eentityu82ealiases oru800 notu800 cfgu800u82eentityu82ealiases cfgu800u82elangcode then return \"\" there isu800 nou800 useu800 tou800 continue without anyu800 aliasses endu800 local aliases cfgu800u82eentityu82ealiases cfgu800u82elangcode parse theu800 desired format oru800 parse theu800 default aliases format ifu800 args \"format\" then parsedformat formatparams parseformat args \"format\" else parsedformat formatparams parseformat formatsu82ealias endu800 process overridden separator values; must come after tweaking theu800 default separators cfgu800 processseparators args define theu800 hook that should beu800 called getalias ; only define theu800 hook ifu800 theu800 parameter \" au800\" hasu800 been given ifu800 formatparams parametersu82ealias then hooks parametersu82ealias gethookname parametersu82ealias 1u800 hooksu82ecount hooksu82ecount 1u800 endu800 setu800 theu800 parsed format andu800 theu800 separators andu800 optional punctuation mark cfgu800 setformatandseparators cfgu800u82ecurstate parsedformat iterate tou800 collect values value cfgu800 concatvalues cfgu800u82ecurstate iterate aliases hooks elseif funcname pu800u82egeneralcommandsu82ebadge oru800 funcname pu800u82egeneralcommandsu82ebadges then ifu800 notu800 cfgu800u82eentityu82esitelinks oru800 notu800 cfgu800u82eentityu82esitelinks cfgu800u82esiteid oru800 notu800 cfgu800u82eentityu82esitelinks cfgu800u82esiteid .badges then return \"\" there isu800 nou800 useu800 tou800 continue without anyu800 badges endu800 local badges cfgu800u82eentityu82esitelinks cfgu800u82esiteid .badges cfgu800u82einsitelinks true parse theu800 desired format oru800 parse theu800 default aliases format ifu800 args \"format\" then parsedformat formatparams parseformat args \"format\" else parsedformat formatparams parseformat formatsu82ebadge endu800 process overridden separator values; must come after tweaking theu800 default separators cfgu800 processseparators args define theu800 hook that should beu800 called getbadge ; only define theu800 hook ifu800 theu800 parameter \" bu800\" hasu800 been given ifu800 formatparams parametersu82ebadge then hooks parametersu82ebadge gethookname parametersu82ebadge 1u800 hooksu82ecount hooksu82ecount 1u800 endu800 setu800 theu800 parsed format andu800 theu800 separators andu800 optional punctuation mark cfgu800 setformatandseparators cfgu800u82ecurstate parsedformat iterate tou800 collect values value cfgu800 concatvalues cfgu800u82ecurstate iterate badges hooks endu800 endu800 value value oru800 \"\" ifu800 cfgu800u82eeditable andu800 value \"\" then ifu800 desired addu800 au800 clickable icon that mayu800 beu800 used tou800 edit theu800 returned value onu800 wikidata value value .. cfgu800 getediticon endu800 return value endu800 modules that include this module should call theu800 functions with anu800 underscore prepended eu800u82egu800. pu800u82e_property args local function establishcommands commandlist commandfunc foru800 _u800 commandname inu800 pairs commandlist dou800 local function wikitextwrapper frame local args copytable frameu82eargs argsu82epointer 1u800 loadi18n aliasesp frame return commandfunc args commandname endu800 pu800 commandname wikitextwrapper local function luawrapper args args copytable args argsu82epointer 1u800 loadi18n aliasesp return commandfunc args commandname endu800 pu800 \"_u800\" .. commandname luawrapper endu800 endu800 establishcommands pu800u82eclaimcommands claimcommand establishcommands pu800u82egeneralcommands generalcommand main function that isu800 supposed tou800 beu800 used byu800 wrapper templates function pu800u82emain frame ifu800 notu800 mwu800u82ewikibase then return nilu800 endu800 local fu800 args loadi18n aliasesp frame getu800 theu800 parent frame tou800 take theu800 arguments that were passed tou800 theu800 wrapper template frame frame getparent oru800 frame ifu800 notu800 frameu82eargs 1u800 then throwerror \"nou800 function specified\" endu800 fu800 mwu800u82etextu82etrim frameu82eargs 1u800 ifu800 fu800 \"main\" then throwerror \"main called twice\" endu800 assert pu800 \"_u800\"..fu800 errortext \'nou800 such function\' fu800 copy arguments from immutable tou800 mutable table args copytable frameu82eargs remove theu800 function name from theu800 list tableu82eremove args 1u800 return pu800 \"_u800\"..fu800 args endu800 return pu800 ');
INSERT INTO `searchindex` (`si_page`, `si_title`, `si_text`) VALUES
(155, 'wdu800 i18n', ' theu800 values andu800 functions inu800 this submodule should beu800 localized peru800 wiki. local pu800 function pu800u82einit aliasesp pu800 \"errors\" \"unknown data type\" \"unknown oru800 unsupported datatype \' 1u800\'.\" \"missing required parameter\" \"nou800 required parameters defined needing atu800 least oneu800\" \"extra required parameter\" \"parameter \' 1u800\' must beu800 defined asu800 optional\" \"nou800 function specified\" \"youu800 must specify au800 function tou800 call\" equal tou800 theu800 standard module error message \"main called twice\" \'theu800 function \"main\" cannot beu800 called twice\' \"nou800 such function\" \'theu800 function \" 1u800\" does notu800 exist\' equal tou800 theu800 standard module error message \"info\" \"edit onu800 wikidata\" \"u8d988u8db8cu8d8b1u8d8a7u8db8cu8d8b4 u8d8afu8d8b1 u8d988u8db8cu8daa9u8db8cu8e2808cu8d8afu8d8a7u8d8afu8d987\" \"numeric\" \"decimal mark\" \".\" \"delimiter\" \" \" \"datetime\" \"prefixes\" \"decade period\" \"\" \"suffixes\" \"decade period\" \"su800\" \"millennium\" \" millennium\" \"century\" \" century\" \"million years\" \" million years\" \"billion years\" \" billion years\" \"year\" \" year\" \"years\" \" years\" \"julian calendar\" \"julian calendar\" linked page title \"julian\" \"julian\" \"bceu800\" \"bceu800\" \"ceu800\" \"ceu800\" \"common erau800\" \"common erau800\" linked page title \"coord\" \"latitude north\" \"nu800\" \"latitude south\" \"su800\" \"longitude east\" \"eu800\" \"longitude west\" \"wu800\" \"degrees\" \"u8c2b0\" \"minutes\" \"\'\" \"seconds\" \'\"\' \"separator\" \" \" \"values\" \"unknown\" \"unknown\" \"none\" \"none\" \"cite\" \"version\" \"2u800\" increment this each time theu800 below parameters areu800 changed tou800 avoid conflict errors \"webu800\" left side allu800 allowed reference properties foru800 *webu800 page sources* peru800 right side corresponding parameter names inu800 equivalent ofu800 enu800 template cite webu800 ifu800 nonu800 existent keep empty iu800u82eeu800. \"\" aliasespu82estatedin \"website\" aliasespu82ereferenceurl \"urlu800\" aliasespu82epublicationdate \"date\" aliasespu82eretrieved \"access date\" aliasespu82etitle \"title\" aliasespu82earchiveurl \"archive urlu800\" aliasespu82earchivedate \"archive date\" aliasespu82elanguage \"language\" aliasespu82eauthor \"author\" existence ofu800 author1 author2 author3 etcu800. isu800 assumed aliasespu82epublisher \"publisher\" aliasespu82equote \"quote\" aliasespu82epages \"pages\" extra option \"qu800\" left side allu800 allowed reference properties foru800 *sources other than webu800 pages* peru800 right side corresponding parameter names inu800 equivalent ofu800 enu800 template cite qu800 ifu800 nonu800 existent keep empty iu800u82eeu800. \"\" aliasespu82estatedin \"1u800\" aliasespu82epages \"pages\" aliasespu82ecolumn \"atu800\" aliasespu82echapter \"chapter\" aliasespu82esectionverseorparagraph \"section\" \"external idu800\" \"idu800\" used foru800 anyu800 type ofu800 database property idu800 aliasespu82etitle \"title\" aliasespu82epublicationdate \"date\" aliasespu82eretrieved \"access date\" pu800u82egetordinalsuffix function numu800 ifu800 tostring numu800 subu800 2u800 2u800 \'1u800\' then return \"thu800\" 10th 11th 12th 13th ... 19th endu800 numu800 tostring numu800 subu800 1u800 ifu800 numu800 \'1u800\' then return \"stu800\" elseif numu800 \'2u800\' then return \"ndu800\" elseif numu800 \'3u800\' then return \"rdu800\" else return \"thu800\" endu800 endu800 pu800u82eadddelimiters function nu800 local left numu800 right stringu82ematch nu800 \" du800 * du800 du800* . \" return left .. numu800 reverse gsub \" du800 du800 du800 \" \" 1u800\" .. pu800 \'numeric\' \'delimiter\' reverse .. right endu800 return pu800 endu800 return pu800 '),
(156, 'webarchive', ' luau800 module implementing theu800 webarchive template. au800 merger ofu800 theu800 functionality ofu800 three templates wayback webcite andu800 cite archives require \'module nou800 globals ; local getargs require \'module arguments .getargs; local categories ; category names local config ; global configuration settings local digits ; foru800 i18n; table that translates local wiki digits tou800 western digits local err_warn_msgs ; error andu800 warning messages local excepted_pages ; local month_num ; foru800 i18n; table that translates local wiki month names tou800 western digits local prefixes ; service provider tail string prefixes local services ; archive service provider data from local s_text ; table ofu800 static text strings used tou800 build final rendering local uncategorized_namespaces ; list ofu800 namespaces that weu800 should notu800 categorize local uncategorized_subpages ; list ofu800 subpages that should notu800 beu800 categorized local non_western_digits; boolean flag setu800 true when datau82edigitsu82eenable isu800 true local this_page mwu800u82etitleu82egetcurrenttitle ; local track ; associative array tou800 hold tracking categories local ulxu800 ; associative array tou800 hold template data populates numbered arguments inu800 au800 message string using anu800 argument table. local function substitute msgu800 args return args andu800 mwu800u82emessageu82enewrawmessage msgu800 args plain oru800 msgu800; endu800 given au800 1u800 du800 table return number ofu800 elements local function tablelength tu800 local count 0u800 foru800 _u800 inu800 pairs tu800 dou800 count count 1u800 endu800 return count endu800 makes au800 wikilink; when both link andu800 display text isu800 provided returns au800 wikilink inu800 theu800 form lu800 du800 ; ifu800 only link isu800 provided returns au800 wikilink inu800 theu800 form lu800 ; ifu800 neither areu800 provided oru800 link isu800 omitted returns anu800 empty string. local function make_wikilink link display no_link ifu800 nilu800 no_link then ifu800 link andu800   link then ifu800 display andu800   display then return tableu82econcat \' \' link \' \' display \' \' ; else return tableu82econcat \' \' link \' \' ; endu800 endu800 return display oru800  ; link notu800 setu800 sou800 return theu800 display text else no_link ifu800 display andu800   display then ifu800 there isu800 display text return display; return that else return link oru800  ; return theu800 target article name oru800 empty string endu800 endu800 endu800 return data inu800 track ieu800. tracking categories local function createtracking ifu800 notu800 excepted_pages this_pageu82efulltext then namespace title fragment isu800 allowed tou800 beu800 categorized typically this module module\'su800 template template\'su800 testcases page su800 ifu800 uncategorized_namespaces this_pageu82enstext then return  ; this page notu800 tou800 beu800 categorized sou800 return empty string endu800 foru800 _u800 vu800 inu800 ipairs uncategorized_subpages dou800 cycle through page name patterns ifu800 this_pageu82etext match vu800 then test page name against each pattern return  ; this subpage type notu800 tou800 beu800 categorized sou800 return empty string endu800 endu800 endu800 local outu800 ; ifu800 tablelength track 0u800 then foru800 keyu800 _u800 inu800 pairs track dou800 loop through table tableu82einsert outu800 make_wikilink keyu800 ; andu800 convert category names tou800 links endu800 endu800 return tableu82econcat outu800 ; concat into oneu800 bigu800 string; empty string ifu800 table isu800 empty endu800 critical error. render output completely inu800 redu800. addu800 tou800 tracking category. this function called asu800 theu800 last thing before abandoning this module local function inlineerror msgu800 args track categoriesu82eerror 1u800 return tableu82econcat \' u8d8aeu8d8b7u8d8a7 u8d8afu8d8b1 u8d8a7u8d984u8daafu8d988u8db8c \' open theu800 error message span configu82etname insert theu800 local language template name \' \' substitute msgu800 args insert theu800 formatted error message \'. \' close theu800 span createtracking addu800 theu800 category endu800 render au800 text fragment inu800 redu800 such asu800 au800 warning asu800 part ofu800 theu800 final output. addu800 tracking category. local function inlinered msgu800 trackmsg ifu800 trackmsg \"warning\" then track categoriesu82ewarning 1u800; elseif trackmsg \"error\" then track categoriesu82eerror 1u800; endu800 return \' \' .. msgu800 .. \' \' endu800 convert base 62u800 tou800 base 10u800 credit local function base62 value local ru800 1u800 default return value isu800 input value isu800 malformed ifu800 value match \' wu800\' then value must only beu800 inu800 theu800 setu800 0u800 9au800 zau800 zu800 return; nilu800 return when value contains extraneous characters endu800 local nu800 #value number ofu800 characters inu800 value local ku800 1u800 local cu800 ru800 0u800 foru800 iu800 nu800 1u800 1u800 dou800 loop through allu800 characters inu800 value from lsu800 digit tou800 msu800 digit cu800 value byte iu800 iu800 ifu800 cu800 48u800 andu800 cu800 57u800 then character isu800 digit 0u800 9u800 cu800 cu800 48u800 elseif cu800 65u800 andu800 cu800 90u800 then character isu800 ascii au800 zu800 cu800 cu800 55u800 else must beu800 ascii au800 zu800 cu800 cu800 61u800 endu800 ru800 ru800 cu800 * ku800 accumulate this base62 character character\'su800 value ku800 ku800 * 62u800 bump foru800 next endu800 foru800 iu800 return ru800 endu800 given au800 date string return itu800 inu800 isou800 format along with anu800 indicator ofu800 theu800 date date\'su800 format. except that month names must beu800 recognizable asu800 legitimate month names with proper capitalization andu800 that theu800 date string must match oneu800 ofu800 theu800 recognized date formats nou800 error checking isu800 done here; return nilu800 else local function decode_date date_str local patterns \'dmyu800\' \' du800 du800 su800 du800 du800 du800 du800 du800 \' \'du800\' \'mu800\' \'yu800\' au800 does notu800 recognize unicode combining characters used byu800 some languages \'mdyu800\' \' su800 du800 du800 du800 du800 du800 du800 du800 \' \'mu800\' \'du800\' \'yu800\' \'ymdu800\' \' du800 du800 du800 du800 su800 du800 du800 du800 \' \'yu800\' \'mu800\' \'du800\' notu800 mosu800 compliant atu800 enu800u82ewiki butu800 mayu800 beu800 acceptible atu800 other wikis ; local tu800 ; ifu800 non_western_digits then this wiki uses nonu800 western digits date_str mwu800u82eustringu82egsub date_str \' du800\' digits ; convert this wiki wiki\'su800 nonu800 western digits tou800 western digits endu800 ifu800 date_str match \' du800 du800 du800 du800 du800 du800 du800 du800 \' then already anu800 isou800 format date return western digits form return date_str \'isou800\'; endu800 foru800 ku800 vu800 inu800 pairs patterns dou800 local c1u800 c2u800 c3u800 mwu800u82eustringu82ematch date_str patterns ku800 1u800 ; c1u800 .. c3u800 areu800 captured butu800 weu800 donu800\'tu800 know what they hold ifu800 c1u800 then setu800 onu800 match tu800 translate unspecified captures tou800 yu800 mu800 andu800 du800 patterns ku800 2u800 c1u800 fill theu800 table ofu800 captures with theu800 captures patterns ku800 3u800 c2u800 take index names from src_pattern table andu800 assign sequential captures patterns ku800 4u800 c3u800 ; ifu800 month_num tu800u82emu800 then when month notu800 already au800 number tu800u82emu800 month_num tu800u82emu800 ; replace valid month name with au800 number else return nilu800 \'isou800\'; notu800 au800 valid date form because month notu800 valid endu800 return mwu800u82eustringu82eformat \' .4du800 .2du800 .2du800\' tu800u82eyu800 tu800u82emu800 tu800u82edu800 ku800; return date inu800 isou800 format endu800 endu800 return nilu800 \'isou800\'; date could notu800 beu800 decoded; return nilu800 andu800 default isou800 date endu800 given year month dayu800 numbers zero padded oru800 notu800 return au800 full date inu800 dfu800 format where dfu800 mayu800 beu800 oneu800 ofu800 mdyu800 dmyu800 isou800 ymdu800 onu800 entry year month dayu800 areu800 presumed tou800 beu800 correct foru800 theu800 date that they represent; allu800 areu800 required inu800 this module makedate isu800 sometimes given anu800 isou800 format date inu800 year makedate 2018 09u800 20u800 nilu800 nilu800 dfu800 this works because tableu82econcat sees only oneu800 table member local function makedate year month dayu800 dfu800 local format \'dmyu800\' \'ju800 fu800 yu800\' \'mdyu800\' \'fu800 ju800 yu800\' \'ymdu800\' \'yu800 fu800 ju800\' \'isou800\' \'yu800 mu800 du800\' ; local date tableu82econcat year month dayu800 \' \' ; assemble year initial numeric format date zero padding notu800 required here ifu800 non_western_digits then this wiki uses nonu800 western digits date mwu800u82eustringu82egsub date \' du800\' digits ; convert this wiki wiki\'su800 nonu800 western digits tou800 western digits endu800 return mwu800u82egetcontentlanguage formatdate format dfu800 date ; endu800 returns true ifu800 date isu800 after 31u800 december 1899 whyu800 isu800 1900 theu800 minu800 year shouldn\'tu800 theu800 internet internet\'su800 date ofu800 birth beu800 minu800 year notu800 after today today\'su800 date andu800 represents au800 valid date 29u800 february 2017 isu800 notu800 au800 valid date . applies gregorian leapyear rules. allu800 arguments areu800 required local function is_valid_date year month dayu800 local days_in_month 31u800 28u800 31u800 30u800 31u800 30u800 31u800 31u800 30u800 31u800 30u800 31u800 ; local month_length; local yu800 mu800 du800; local today osu800u82edate \'*tu800\' ; fetch au800 table ofu800 current date parts ifu800 notu800 year oru800   year oru800 notu800 month oru800   month oru800 notu800 dayu800 oru800   dayu800 then return false; something missing endu800 yu800 tonumber year ; mu800 tonumber month ; du800 tonumber dayu800 ; ifu800 1900 yu800 oru800 todayu82eyear mu800 oru800 12u800 du800 oru800 month_length given au800 uriu800 path tou800 webcite egu800. 67xhmvfwp return theu800 encoded date inu800 dfu800 format returns date string inu800 dfu800 format webcite date isu800 au800 unix timestamp encoded asu800 bae62 oru800 theu800 string \'query\' local function decodewebcitedate path dfu800 local dtu800 ; local decode; dtu800 mwu800u82etextu82esplit path \" \" valid urlu800 formats that areu800 notu800 base62 ifu800 dtu800 2u800 find \'query\' 1u800 true oru800 dtu800 2u800 find \'cache\' 1u800 true oru800 dtu800 2u800 find \'getfile\' 1u800 true oru800 tonumber dtu800 2u800 then return \'query\'; endu800 decode base62 dtu800 2u800 ; base62 string exponential number ifu800 notu800 decode then return nilu800; nilu800 return when dtu800 2u800 contains characters notu800 inu800 wu800 endu800 dtu800 osu800u82edate \'*tu800\' stringu82eformat \" du800\" decode subu800 1u800 10u800 exponential number text first 10u800 characters au800 unix timestamp au800 table ofu800 date parts decode makedate dtu800u82eyear dtu800u82emonth dtu800u82edayu800 \'isou800\' ; date comparisons areu800 allu800 done inu800 isou800 format with western digits ifu800 non_western_digits then this wiki uses nonu800 western digits decode mwu800u82eustringu82egsub decode \' du800\' digits ; convert this wiki wiki\'su800 nonu800 western digits tou800 western digits endu800 return decode; endu800 given au800 uriu800 path tou800 wayback egu800. webu800 20160901010101 oru800 library ofu800 congress webu800 archives allu800 20160901010101 return theu800 formatted date egu800. \"september 1u800 2016\" inu800 dfu800 format handle nonu800 digits inu800 snapshot idu800 such asu800 \"re_u800\" andu800 \" \" andu800 \"*\" returns twou800 values first value isu800 oneu800 ofu800 these valid date string inu800 dfu800 format wayback date isu800 valid including theu800 text string \'index\' when date isu800 \' * \' empty string wayback date isu800 malformed less than 8u800 digits notu800 au800 valid date nilu800 wayback date isu800 \' save \' oru800 otherwise notu800 au800 number second return value isu800 anu800 appropriate \'message\' mayu800 oru800 mayu800 notu800 beu800 formatted local function decodewaybackdate path dfu800 local msgu800 snapdate; snapdate path gsub \' allu800 \'   gsub \' webu800 \'   gsub \' \'   ; remove leading \' allu800 \' leading \' webu800 \' oru800 leading \' \' snapdate snapdate match \' \' ; getu800 timestamp ifu800 snapdate \"*\" then egu800. webu800 * http.. oru800 allu800 * http.. return \'index\'; return indicator that this urlu800 hasu800 anu800 index date endu800 snapdate snapdate gsub \' au800 a_u800 du800 \'   gsub \' \'   ; from date remove anyu800 trailing \"re_u800\" dashes msgu800  ; ifu800 snapdate match \' * \' then au800 trailing \'*\' causes calendar display atu800 archive .orgu800 snapdate snapdate gsub \' * \'   ; remove sou800 notu800 part ofu800 length calc later msgu800 inlinered err_warn_msgsu82ets_cal \'warning\' ; make au800 message endu800 ifu800 notu800 tonumber snapdate then return nilu800 \'ts_nan\'; return nilu800 fatal error flag andu800 message selector endu800 local dlen snapdate lenu800 ; ifu800 dlen 8u800 then weu800 need 8u800 digits todo butu800 shouldn\'tu800 this beu800 testing foru800 14u800 digits return   inlinered err_warn_msgsu82ets_short \'error\' ; return empty string andu800 error message endu800 local year month dayu800 snapdate match \' du800 du800 du800 du800 du800 du800 du800 du800 \' ; nou800 need foru800 snapdatelong here ifu800 notu800 is_valid_date year month dayu800 then return   inlinered err_warn_msgsu82ets_date \'error\' ; return empty string andu800 error message endu800 snapdate tableu82econcat year month dayu800 \' \' ; date comparisons areu800 allu800 done inu800 isou800 format ifu800 14u800 dlen then return snapdate msgu800; return date with message ifu800 anyu800 else return snapdate msgu800 .. inlinered err_warn_msgsu82ets_len \'warning\' ; return date with warning message su800 endu800 endu800 given anu800 archiveu82eisu800 \"long link\" uriu800 path eu800u82egu800. 2016u82e08u800u82e28u800 144552 return theu800 date inu800 dfu800 format eu800u82egu800. ifu800 dfu800 dmyu800 return 28u800 august 2016 handles \".\" andu800 \" \" inu800 snapshot date sou800 2016u82e08u800u82e28u800 144552 isu800 same asu800 20160828144552 returns twou800 values first value isu800 oneu800 ofu800 these valid date string inu800 dfu800 format archiveu82eisu800 date isu800 valid including theu800 text string \'short link\' when urlu800 isu800 theu800 short form empty string wayback date isu800 malformed notu800 au800 number less than 8u800 digits notu800 au800 valid date nilu800 wayback date isu800 \' save \' second return value isu800 anu800 appropriate \'message\' mayu800 oru800 mayu800 notu800 beu800 formatted local function decodearchiveisdate path dfu800 local snapdate ifu800 path match \' wu800 \' then short form urlu800 path isu800 \' \' followed byu800 some number ofu800 base 62u800 digits andu800 nothing else return \"short link\" eu800u82egu800. endu800 snapdate mwu800u82etextu82esplit path \' \' 2u800 gsub \' . \'   ; getu800 snapshot date eu800u82egu800. 2016u82e08u800u82e28u800 144552; remove periods andu800 hyphens local dlen stringu82elenu800 snapdate ifu800 dlen 8u800 then weu800 need 8u800 digits todo butu800 shouldn\'tu800 this beu800 testing foru800 14u800 digits return   inlinered err_warn_msgsu82ets_short \'error\' ; return empty string andu800 error message endu800 local year month dayu800 snapdate match \' du800 du800 du800 du800 du800 du800 du800 du800 \' ; nou800 need foru800 snapdatelong here ifu800 notu800 is_valid_date year month dayu800 then return   inlinered err_warn_msgsu82ets_date \'error\' ; return empty string andu800 error message endu800 snapdate tableu82econcat year month dayu800 \' \' ; date comparisons areu800 allu800 done inu800 isou800 format ifu800 14u800 dlen then return snapdate; return date else return snapdate inlinered err_warn_msgsu82ets_len \'warning\' ; return date with warning message endu800 endu800 given au800 domain extracted byu800 mwu800u82euriu800u82enewu800 egu800. webu800u82earchiveu82eorgu800 setu800 tail string andu800 service idu800 local function servicename host no_link local tracking; local index; host host lower gsub \' webu800 . . \' \' 1u800\' gsub \' wwwu800 . . \' \' 1u800\' ; lowercase remove webu800. andu800 wwwu800. subdomains ifu800 services host then index host; else foru800 ku800 _u800 inu800 pairs services dou800 ifu800 host find \' fu800 au800 \'..ku800 gsub \' . \' \' 1u800\' then index ku800; break; endu800 endu800 endu800 ifu800 index then local outu800   ; empty string inu800 1u800 sou800 that concatenated result hasu800 leading single space ulxu800u82eurl1u82eservice services index 4u800 oru800 \'other\'; tracking services index 5u800 oru800 categoriesu82eother; build tail string ifu800 false services index 1u800 then select prefix tableu82einsert outu800 prefixesu82eatu800 ; elseif true services index 1u800 then tableu82einsert outu800 prefixesu82eatthe ; else tableu82einsert outu800 services index 1u800 ; endu800 tableu82einsert outu800 make_wikilink services index 2u800 services index 3u800 no_link ; addu800 article wikilink ifu800 services index 6u800 then addu800 tail postfix ifu800 itu800 exists tableu82einsert outu800 services index 6u800 ; endu800 ulxu800u82eurl1u82etail tableu82econcat outu800 \' \' ; putu800 itu800 allu800 together; result hasu800 leading space character else here when unknown archive ulxu800u82eurl1u82eservice \'other\'; tracking categoriesu82eunknown; ulxu800u82eurl1u82etail tableu82econcat   prefixesu82eatu800 host inlinered err_warn_msgsu82eunknown_url error \' \' ; endu800 track tracking 1u800 endu800 parse numbered arguments starting atu800 2u800 such asu800 url2..url10 date2..date10 title2..title10 foru800 example webarchive urlu800 .. url4 .. url7 .. three urlu800 arguments notu800 inu800 numeric sequence 1u800..4u800..7u800 . function only processes arguments numbered 2u800 oru800 greater inu800 this case 4u800 andu800 7u800 itu800 creates numeric sequenced table entries like urlxu82eurl2u82eurlu800 urlxu82eurl3u82eurlu800 returns theu800 number ofu800 urlu800 arguments found numbered 2u800 oru800 greater inu800 this case returns \"2u800\" local function parseextraargs args local iu800 ju800 argurl argurl2 argdate argtitle ju800 2u800 foru800 iu800 2u800 configu82emaxurls dou800 argurl \"urlu800\" .. iu800 ifu800 args argurl then argurl2 \"urlu800\" .. ju800 ulxu800 argurl2 ulxu800 argurl2 \"urlu800\" args argurl argdate \"date\" .. ju800 ifu800 args argdate then ulxu800 argurl2 \"date\" args argdate else ulxu800 argurl2 \"date\" inlinered err_warn_msgsu82edate_miss \'warning\' ; endu800 argtitle \"title\" .. ju800 ifu800 args argtitle then ulxu800 argurl2 \"title\" args argtitle else ulxu800 argurl2 \"title\" nilu800 endu800 ju800 ju800 1u800 endu800 endu800 ifu800 ju800 2u800 then return 0u800 else return ju800 2u800 endu800 endu800 given au800 date string return \" \" ifu800 itu800 itu800\'su800 mdyu800 local function comma date return date andu800 date match \' au800 du800 du800 du800 du800 du800 du800\' oru800  ; endu800 return au800 rendering ofu800 theu800 data inu800 ulxu800 local function createrendering local displayfield local outu800 ; local index_date msgu800 ulxu800u82eurl1u82edate match \' index .* \' ; when ulxu800u82eurl1u82edate extract \'index\' text andu800 message text ifu800 there isu800 au800 message ulxu800u82eurl1u82edate ulxu800u82eurl1u82edate gsub \'indexu82e*\' \'index\' ; remove message ifu800 \'none\' ulxu800u82eurl1u82eformat then foru800 wayback webcite tableu82einsert outu800 \' \' ; open extlink markup tableu82einsert outu800 ulxu800u82eurl1u82eurlu800 ; addu800 urlu800 ifu800 ulxu800u82eurl1u82etitle then tableu82einsert outu800 \' \' theu800 required space tableu82einsert outu800 ulxu800u82eurl1u82etitle theu800 title tableu82einsert outu800 \' \' ; close extlink markup tableu82einsert outu800 ulxu800u82eurl1u82etail ; tail text ifu800 ulxu800u82eurl1u82edate then tableu82einsert outu800 \'&#32u800; \' ; open date text; todo whyu800 theu800 html entity replace with regular space tableu82einsert outu800 \'index\' ulxu800u82eurl1u82edate andu800 s_textu82earchive oru800 s_textu82earchived ; addu800 text tableu82einsert outu800 \' \' ; insert au800 space tableu82einsert outu800 ulxu800u82eurl1u82edate ; addu800 date tableu82einsert outu800 \' \' ; close date text endu800 else nou800 title ifu800 index_date then when urlu800 date isu800 \'index\' tableu82einsert outu800 tableu82econcat \' \' s_textu82earchive_index \' \' ; addu800 theu800 index link label tableu82einsert outu800 msgu800 oru800   ; addu800 date mismatch message when urlu800 date isu800 * andu800 date hasu800 valid date else tableu82einsert outu800 tableu82econcat \' \' s_textu82earchived \' \' \' u8d8afu8d8b1 \' ; addu800 link label foru800 urlu800 hasu800 timestamp date will include mismatch message ifu800 there isu800 oneu800 endu800 ifu800 ulxu800u82eurl1u82edate then ifu800 \'index\' ulxu800u82eurl1u82edate then tableu82einsert outu800 ulxu800u82eurl1u82edate ; addu800 date when data isu800 notu800 \'index\' endu800 tableu82einsert outu800 comma ulxu800u82eurl1u82edate ; addu800 \' \' ifu800 date format isu800 mdyu800 tableu82einsert outu800 ulxu800u82eurl1u82etail ; addu800 tail text else nou800 date tableu82einsert outu800 ulxu800u82eurl1u82etail ; addu800 tail text endu800 endu800 ifu800 0u800 foru800 internaltionalization translate local language parameter names tou800 their english equivalents todo return error message ifu800 multiple aliases ofu800 theu800 same canonical parameter name areu800 found returns twou800 tables new_args holds canonical form parameters andu800 their values either from translation oru800 because theu800 parameter wasu800 already inu800 canonical form origin maps canonical form parameter names tou800 their untranslated local language form foru800 error messaging inu800 theu800 local language unrecognized parameters areu800 ignored local function parameter_name_xlate args params enum_params local name; holds modifiable name ofu800 theu800 parameter name during evaluation local enum; foru800 enumerated parameters holds theu800 enumerator during evaluation local found false; flag used tou800 break outu800 ofu800 nested foru800 loops local new_args ; au800 table that holds canonical andu800 translated parameter ku800 vu800 pairs local origin ; au800 table that maps original local language parameter names tou800 their canonical name foru800 local language error messaging local unnamed_params; setu800 true when unsupported positional parameters areu800 detected foru800 ku800 vu800 inu800 pairs args dou800 loop through allu800 ofu800 theu800 arguments inu800 theu800 args table name ku800; copy ofu800 original parameter name ifu800 \'string\' type ku800 then ifu800 non_western_digits then true when nonu800 western digits supported atu800 this wiki name mwu800u82eustringu82egsub name \' du800\' digits ; convert this wiki wiki\'su800 nonu800 western digits tou800 western digits endu800 enum name match \' du800 \' ; getu800 parameter enumerator ifu800 itu800 exists; nilu800 else ifu800 notu800 enum then nou800 enumerator sou800 looking foru800 nonu800 enumnerated parameters todo insert shortcut here ifu800 params name then name holds theu800 canonical parameter name; nou800 need tou800 search further foru800 pname aliases inu800 pairs params dou800 loop through each parameter theu800 params table foru800 _u800 alias inu800 ipairs aliases dou800 loop through each alias inu800 theu800 parameter parameter\'su800 aliases table ifu800 name alias then new_args pname vu800; create au800 newu800 entry inu800 theu800 new_args table origin pname ku800; create anu800 entry tou800 make canonical parameter name tou800 original local language parameter name found true; flag sou800 that weu800 canu800 break outu800 ofu800 these nested foru800 loops break; nou800 need tou800 search theu800 rest ofu800 theu800 aliases table foru800 name sou800 gou800 onu800 tou800 theu800 next ku800 vu800 pair endu800 endu800 ifu800 found then true when weu800 found anu800 alias that matched name found false; reset theu800 flag break; gou800 dou800 next args ku800 vu800 pair endu800 endu800 else enumerated parameters name name gsub \' du800 \' \'#\' ; replace enumeration digits with place holder foru800 table search todo insert shortcut here ifu800 num_params name then name holds theu800 canonical parameter name; nou800 need tou800 search further foru800 pname aliases inu800 pairs enum_params dou800 loop through each parameter theu800 num_params table foru800 _u800 alias inu800 ipairs aliases dou800 loop through each alias inu800 theu800 parameter parameter\'su800 aliases table ifu800 name alias then pname pname gsub \'# \' enum ; replace theu800 \'#\' place holder with theu800 actual enumerator new_args pname vu800; create au800 newu800 entry inu800 theu800 new_args table origin pname ku800; create anu800 entry tou800 make canonical parameter name tou800 original local language parameter name found true; flag sou800 that weu800 canu800 break outu800 ofu800 these nested foru800 loops break; nou800 need tou800 search theu800 rest ofu800 theu800 aliases table foru800 name sou800 gou800 onu800 tou800 theu800 next ku800 vu800 pair endu800 endu800 ifu800 found then true when weu800 found anu800 alias that matched name found false; reset theu800 flag break; gou800 dou800 next args ku800 vu800 pair endu800 endu800 endu800 else unnamed_params true; flag foru800 unsupported positional parameters endu800 endu800 foru800 ku800 vu800 return new_args origin unnamed_params; endu800 template entry point local function webarchive frame local args getargs frame ; local data mwu800u82eloaddata tableu82econcat make au800 data module name; sandbox oru800 live \'module webarchive data\' frame gettitle find \'sandbox\' 1u800 true andu800 \' sandbox\' oru800   this instance isu800 . sandbox then append sandbox ; categories datau82ecategories; fill inu800 theu800 forward declarations config datau82econfig; ifu800 datau82edigitsu82eenable then digits datau82edigits; foru800 i18n; table ofu800 digits inu800 theu800 local wiki wiki\'su800 language non_western_digits true; use_non_western_digits endu800 err_warn_msgs datau82eerr_warn_msgs; excepted_pages datau82eexcepted_pages; month_num datau82emonth_num; foru800 i18n; table ofu800 month names inu800 theu800 local wiki wiki\'su800 language prefixes datau82eprefixes; services datau82eservices; s_text datau82es_text; uncategorized_namespaces datau82euncategorized_namespaces; uncategorized_subpages datau82euncategorized_subpages; local origin ; holds au800 mapu800 ofu800 english tou800 local language parameter names used inu800 theu800 current template; notu800 currently used local unnamed_params; boolean setu800 tou800 true when template call hasu800 unnamed parameters args origin unnamed_params parameter_name_xlate args datau82eparams datau82eenum_params ; translate parameter names inu800 args tou800 english local date format msgu800 udate uriu800 urlu800; local ldfu800 \'isou800\'; when there isu800 nou800 date parameter render urlu800 dates inu800 isou800 format ifu800 argsu82eurlu800 andu800 argsu82eurl1 then urlu800 argument first return inlineerror datau82ecrit_err_msgsu82econflicting originu82eurlu800 originu82eurl1 ; endu800 urlu800 argsu82eurlu800 oru800 argsu82eurl1; ifu800 notu800 urlu800 then return inlineerror datau82ecrit_err_msgsu82eempty ; endu800 these iabot bugs perportedly fixed; removing these causes luau800 script error atu800 template webarchive testcases production; resolve that before deleting these tests ifu800 mwu800u82eustringu82efind urlu800 \" \" 1u800 true then track bugu800 todo iabot bugu800; notu800 known ifu800 theu800 bugu800 hasu800 been fixed; deferred track categoriesu82eerror 1u800; return inlineerror datau82ecrit_err_msgsu82eiabot1 ; endu800 ifu800 urlu800 \" \" then track bugu800 todo iabot bugu800; notu800 known ifu800 theu800 bugu800 hasu800 been fixed; deferred track categoriesu82eerror 1u800; return inlineerror datau82ecrit_err_msgsu82eiabot2 ; endu800 ifu800 notu800 urlu800 lower find \' http\' oru800 urlu800 find \' \' then return inlineerror datau82ecrit_err_msgsu82einvalid_url ; endu800 ulxu800u82eurl1 ulxu800u82eurl1u82eurlu800 urlu800 ulxu800u82eurl1u82eextraurls parseextraargs args local good false; good uriu800 pcall mwu800u82euriu800u82enewu800 ulxu800u82eurl1u82eurlu800 ; getu800 au800 table ofu800 uriu800 parts from this urlu800; protected mode tou800 prevent luau800 error when ulxu800u82eurl1u82eurlu800 isu800 malformed ifu800 notu800 good oru800 nilu800 uriu800u82ehost then abandon when ulxu800u82eurl1u82eurlu800 isu800 malformed return inlineerror datau82ecrit_err_msgsu82einvalid_url ; endu800 servicename uriu800u82ehost argsu82enolink ifu800 argsu82edate andu800 argsu82edate1 then date argument return inlineerror datau82ecrit_err_msgsu82econflicting originu82edate originu82edate1 ; endu800 date argsu82edate oru800 argsu82edate1; date date andu800 date gsub \' \' \' \' ; replace multiple spaces with au800 single space ifu800 date andu800 configu82everifydates then ifu800 \'*\' date then date \'index\'; ldfu800 \'isou800\'; setu800 tou800 default format else date ldfu800 decode_date date ; getu800 anu800 isou800 format date from date andu800 getu800 date date\'su800 original format endu800 endu800 ifu800 \'wayback\' ulxu800u82eurl1u82eservice oru800 \'locwebarchives ulxu800u82eurl1u82eservice then ifu800 date then ifu800 configu82everifydates then ifu800 ldfu800 then udate msgu800 decodewaybackdate uriu800u82epath ; getu800 theu800 urlu800 date inu800 isou800 format andu800 format ofu800 date inu800 date ; \'index\' when wayback urlu800 date isu800 * ifu800 notu800 udate then this isu800 theu800 only \'fatal\' error return return inlineerror datau82ecrit_err_msgs msgu800 ; endu800 ifu800 udate date then date comparison using isou800 format dates date udate; msgu800 tableu82econcat inlinered err_warn_msgsu82emismatch \'warning\' addu800 warning message msgu800 addu800 message ifu800 there isu800 oneu800 ; endu800 endu800 endu800 else nou800 date udate msgu800 decodewaybackdate uriu800u82epath ; ifu800 notu800 udate then this isu800 theu800 only \'fatal\' error return return inlineerror datau82ecrit_err_msgs msgu800 ; endu800 ifu800   udate then date nilu800; unset else date udate; endu800 endu800 elseif \'webcite\' ulxu800u82eurl1u82eservice then ifu800 date then ifu800 configu82everifydates then ifu800 ldfu800 then udate decodewebcitedate uriu800u82epath ; getu800 theu800 urlu800 date inu800 isou800 format ifu800 \'query\' udate then skip ifu800 query ifu800 udate date then date comparison using isou800 format dates date udate; msgu800 tableu82econcat inlinered err_warn_msgsu82emismatch \'warning\' ; endu800 endu800 endu800 endu800 else date decodewebcitedate uriu800u82epath \"isou800\" ifu800 date \"query\" then date nilu800; unset msgu800 inlinered err_warn_msgsu82edate_miss \'warning\' ; elseif notu800 date then invalid base62 string date inlinered err_warn_msgsu82edate1 \'error\' ; endu800 endu800 elseif \'archiveis ulxu800u82eurl1u82eservice then ifu800 date then ifu800 configu82everifydates then ifu800 ldfu800 then udate msgu800 decodearchiveisdate uriu800u82epath getu800 theu800 urlu800 date inu800 isou800 format ifu800 \'short link\' udate then skip ifu800 short link ifu800 udate date then date comparison using isou800 format dates date udate; msgu800 tableu82econcat inlinered err_warn_msgsu82emismatch \'warning\' addu800 warning message msgu800 addu800 message ifu800 there isu800 oneu800 ; endu800 endu800 endu800 endu800 else nou800 date udate msgu800 decodearchiveisdate uriu800u82epath \"isou800\" ifu800 udate \"short link\" then date nilu800; unset msgu800 inlinered err_warn_msgsu82edate_miss \'warning\' ; elseif   udate then date nilu800; unset else date udate; endu800 endu800 else some other service ifu800 notu800 date then msgu800 inlinered err_warn_msgsu82edate_miss \'warning\' ; endu800 endu800 ifu800 \'index\' date then ulxu800u82eurl1u82edate date .. msgu800 oru800   ; create index message ifu800 there isu800 oneu800 elseif date then ulxu800u82eurl1u82edate makedate date nilu800 nilu800 ldfu800 .. msgu800 oru800   ; create au800 date inu800 theu800 wiki wiki\'su800 local language message ifu800 there isu800 oneu800 else ulxu800u82eurl1u82edate msgu800; endu800 format argsu82eformat; format argument ifu800 notu800 format then format \"none\" else foru800 ku800 vu800 inu800 pairs datau82eformat_vals dou800 format accepts twou800 specific values loop through au800 table ofu800 those values local found; declare au800 nilu800 flag foru800 _u800 pu800 inu800 ipairs vu800 dou800 loop through local language variants ifu800 format pu800 then when format value matches format ku800; useu800 name from table keyu800 found true; declare found sou800 that weu800 canu800 break outu800 ofu800 outer foru800 loop break; break outu800 ofu800 inner foru800 loop endu800 endu800 ifu800 found then break; endu800 endu800 ifu800 format \"addlpages\" then ifu800 notu800 ulxu800u82eurl1u82edate then format \"none\" endu800 elseif format \"addlarchives\" then format \"addlarchives\" else format \"none\" endu800 endu800 ulxu800u82eurl1u82eformat format ifu800 argsu82etitle andu800 argsu82etitle1 then title argument return inlineerror datau82ecrit_err_msgsu82econflicting originu82etitle originu82etitle1 ; endu800 ulxu800u82eurl1u82etitle argsu82etitle oru800 argsu82etitle1; local rend createrendering ifu800 notu800 rend then return inlineerror datau82ecrit_err_msgsu82eunknown ; endu800 return rend .. unnamed_params andu800 inlinered err_warn_msgsu82eunnamed_params \'warning\' oru800   .. createtracking ; endu800 return webarchive webarchive ; ');
INSERT INTO `searchindex` (`si_page`, `si_title`, `si_text`) VALUES
(157, 'webarchive data', ' global configuration settings local config maxurls 10u800 maxu800 number ofu800 urls allowed. tname \'webarchive\' name ofu800 calling template. change ifu800 template rename. verifydates true seeu800 documentation. setu800 false tou800 disable. list ofu800 namespaces that should notu800 beu800 included inu800 citation error categories. note namespace names should useu800 underscores instead ofu800 spaces. local uncategorized_namespaces same list asu800 specified atu800 module citation cs1u800 configuration \'u8daa9u8d8a7u8d8b1u8d8a8u8d8b1\' true \'u8d8a8u8d8adu8d8ab\' true \'u8d8a8u8d8adu8d8ab_u8daa9u8d8a7u8d8b1u8d8a8u8d8b1\' true \'u8d8a8u8d8adu8d8ab_u8d988u8db8cu8daa9u8db8cu8e2808cu8d9beu8d8afu8db8cu8d8a7\' true \'u8d8a8u8d8adu8d8ab_u8d9beu8d8b1u8d988u8d986u8d8afu8d987\' true \'u8d8a8u8d8adu8d8ab_u8d8a7u8d984u8daafu8d988\' true \'u8d8a8u8d8adu8d8ab_u8d8b1u8d8a7u8d987u8d986u8d985u8d8a7\' true \'u8d8a8u8d8adu8d8ab_u8d8b1u8d8afu8d987\' true \'u8d8a8u8d8adu8d8ab_u8d8afu8d8b1u8daafu8d8a7u8d987\' true \'u8d8a8u8d8adu8d8ab_u8daa9u8d8aau8d8a7u8d8a8\' true \'u8d8a8u8d8adu8d8ab_u8d9beu8db8cu8d8b4u8e2808cu8d986u8d988u8db8cu8d8b3\' true \'education_program_talk\' true \'u8d8a8u8d8adu8d8ab_u8d9beu8d988u8d8afu8d985u8d8a7u8d986\' true \'u8d8a8u8d8adu8d8ab_u8d985u8d8afu8db8cu8d8a7u8d988u8db8cu8daa9u8db8c\' true local uncategorized_subpages \' ssu800 andbox\' \' ttu800 estcases ; list ofu800 luau800 patterns found inu800 page names ofu800 pages weu800 should notu800 categorize local excepted_pages these pages will beu800 categorized ifu800 setu800 true; setu800 tou800 nilu800 tou800 disable \'u8d8a8u8d8adu8d8ab u8d9beu8d988u8d8afu8d985u8d8a7u8d986 webarchive testcases true test cases pages used during development \'template webarchive testcases production\' true this isu800 au800 table ofu800 allu800 categories supported byu800 module webarchive local categories archiveis \'u8d8b1u8d8afu8d987 u8d9beu8db8cu8d988u8d986u8d8afu8d987u8d8a7u8db8c u8d8a2u8d8b1u8d8b4u8db8cu8d988u8d8a7u8db8cu8d8b2 u8d8a7u8d984u8daafu8d988u8db8c u8d8a8u8d8a7u8db8cu8daafu8d8a7u8d986u8db8c u8d8a7u8db8cu8d986u8d8aau8d8b1u8d986u8d8aa\' error \'u8d8b1u8d8afu8d987 u8d8aeu8d8b7u8d8a7u8d987u8d8a7u8db8c u8d8a7u8d984u8daafu8d988u8db8c u8d8a8u8d8a7u8db8cu8daafu8d8a7u8d986u8db8c u8d8a7u8db8cu8d986u8d8aau8d8b1u8d986u8d8aa\' other \'u8d8b1u8d8afu8d987 u8d8b3u8d8a7u8db8cu8d8b1 u8d8a8u8d8a7u8db8cu8daafu8d8a7u8d986u8db8cu8e2808cu8d987u8d8a7u8db8c u8d8a7u8d984u8daafu8d988u8db8c u8d8a8u8d8a7u8db8cu8daafu8d8a7u8d986u8db8c u8d8a7u8db8cu8d986u8d8aau8d8b1u8d986u8d8aa\' unknown \'u8d8b1u8d8afu8d987 u8d8a8u8d8a7u8db8cu8daafu8d8a7u8d986u8db8cu8e2808cu8d987u8d8a7u8db8c u8d986u8d8a7u8d985u8d8b9u8d984u8d988u8d985 u8d8a7u8d984u8daafu8d988u8db8c u8d8a8u8d8a7u8db8cu8daafu8d8a7u8d986u8db8c u8d8a7u8db8cu8d986u8d8aau8d8b1u8d986u8d8aa\' warning \'u8d8b1u8d8afu8d987 u8d987u8d8b4u8d8afu8d8a7u8d8b1u8d987u8d8a7u8db8c u8d8a7u8d984u8daafu8d988u8db8c u8d8a8u8d8a7u8db8cu8daafu8d8a7u8d986u8db8c u8d8a7u8db8cu8d986u8d8aau8d8b1u8d986u8d8aa\' wayback \'u8d8b1u8d8afu8d987 u8d9beu8db8cu8d988u8d986u8d8afu8d987u8d8a7u8db8c u8d988u8db8cu8e2808cu8d8a8u8daa9 u8d8a7u8d984u8daafu8d988u8db8c u8d8a8u8d8a7u8db8cu8daafu8d8a7u8d986u8db8c u8d8a7u8db8cu8d986u8d8aau8d8b1u8d986u8d8aa\' webcite \'u8d8b1u8d8afu8d987 u8d9beu8db8cu8d988u8d986u8d8afu8d987u8d8a7u8db8c u8d988u8d8a8u8e2808cu8daa9u8d8a7u8db8cu8d8aa u8d8a7u8d984u8daafu8d988u8db8c u8d8a8u8d8a7u8db8cu8daafu8d8a7u8d986u8db8c u8d8a7u8db8cu8d986u8d8aau8d8b1u8d986u8d8aa\' used only with servicename this table holds theu800 twou800 generic tail text prefixes specified byu800 services \' \' 1u800 local prefixes atu800 \'u8d8aau8d988u8d8b3u8d8b7\' atthe \'u8d8aau8d988u8d8b3u8d8b7\' this isu800 au800 table ofu800 tables foru800 archive services. each service table hasu800 1u800 prefix; mayu800 beu800 boolean true oru800 false oru800 text string where true indicates that theu800 prefix isu800 taken from prefixesu82eatthe false indicates that theu800 prefix isu800 taken from prefixesu82eatu800 \'text string\' isu800 used inu800 lieu ofu800 theu800 typical \'atu800\' oru800 \'atu800 theu800\' prefix 2u800 wikilink target article that describes theu800 service; setu800 tou800 nilu800 ifu800 notu800 used 3u800 wikilink label; theu800 label inu800 target label ; setu800 tou800 nilu800 ifu800 notu800 used; when there isu800 notu800 article 2u800 isu800 nilu800 useu800 this tou800 name theu800 service; seeu800 wikiwix inu800 theu800 table 4u800 service idu800; setu800 tou800 nilu800 ifu800 notu800 used 5u800 tracking category keyu800 from theu800 categories table; setu800 tou800 nilu800 ifu800 notu800 used 6u800 postfix; text string tou800 beu800 appended atu800 theu800 endu800 ofu800 theu800 tail string seeu800 webarchiveu82elocu800u82egovu800 inu800 theu800 table local services \'archiveu82eecu800\' false \'archiveu82etoday\' nilu800 \'archiveis categoriesu82earchiveis \'archiveu82efou800\' false \'archiveu82etoday\' nilu800 \'archiveis categoriesu82earchiveis \'archiveu82eisu800 false \'archiveu82etoday\' nilu800 \'archiveis categoriesu82earchiveis \'archiveu82eliu800\' false \'archiveu82etoday\' nilu800 \'archiveis categoriesu82earchiveis \'archiveu82emdu800\' false \'archiveu82etoday\' nilu800 \'archiveis categoriesu82earchiveis \'archiveu82eorgu800\' true \'wayback machine\' nilu800 \'wayback\' categoriesu82ewayback \'archiveu82ephu800\' false \'archiveu82etoday\' nilu800 \'archiveis categoriesu82earchiveis \'archiveu82etoday\' false \'archiveu82etoday\' nilu800 \'archiveis categoriesu82earchiveis \'archiveu82evnu800\' false \'archiveu82etoday\' nilu800 \'archiveis categoriesu82earchiveis \'archive itu800u82eorgu800\' false \'archive itu800\' nilu800 \'archiveit\' \'arquivou82eptu800\' true nilu800 \'u8d8a8u8d8a7u8db8cu8daafu8d8a7u8d986u8db8c u8d8a7u8db8cu8d986u8d8aau8d8b1u8d986u8d8aa u8d9beu8d8b1u8d8aau8d8bau8d8a7u8d984\' \'bibalexu82eorgu800\' false \'u8daa9u8d8aau8d8a7u8d8a8u8d8aeu8d8a7u8d986u8d987 u8d8acu8d8afu8db8cu8d8af u8d8a7u8d8b3u8daa9u8d986u8d8afu8d8b1u8db8cu8d987#u8d987u8d8b1u8daa9u8d8a7u8d8b1u8db8c u8d8a8u8d8a7 u8d8a8u8d8a7u8db8cu8daafu8d8a7u8d986u8db8c u8d8a7u8db8cu8d986u8d8aau8d8b1u8d986u8d8aa\' \'u8daa9u8d8aau8d8a7u8d8a8u8d8aeu8d8a7u8d986u8d987 u8d8acu8d8afu8db8cu8d8af u8d8a7u8d8b3u8daa9u8d986u8d8afu8d8b1u8db8cu8d987\' \'collectionscanada\' true \'u8d8a8u8d8a7u8db8cu8daafu8d8a7u8d986u8db8c u8d8a7u8db8cu8d986u8d8aau8d8b1u8d986u8d8aa u8d8afu8d988u8d984u8d8aa u8daa9u8d8a7u8d986u8d8a7u8d8afu8d8a7\' \'europarchiveu82eorgu800\' true \'u8daa9u8d8aau8d8a7u8d8a8u8d8aeu8d8a7u8d986u8d987 u8d985u8d984u8db8c u8d8a7u8db8cu8d8b1u8d984u8d986u8d8af\' \'freezepageu82ecomu800\' false nilu800 \'u8d981u8d8b1u8db8cu8d8b2u8d9beu8db8cu8d8ac\' \'hawu800u82ensku800\' true \'u8d8a8u8d8a7u8db8cu8daafu8d8a7u8d986u8db8c u8d8a7u8db8cu8d986u8d8aau8d8b1u8d986u8d8aa u8daa9u8d8b1u8d988u8d8a7u8d8b3u8db8c hawu800 \' \'langzeitarchivierungu82ebibu800 bvbu800u82edeu800\' false \'u8daa9u8d8aau8d8a7u8d8a8u8d8aeu8d8a7u8d986u8d987 u8d8afu8d988u8d984u8d8aau8db8c u8d8a8u8d8a7u8db8cu8d8b1u8d986\' \'locu800u82egovu800\' true \'u8daa9u8d8aau8d8a7u8d8a8u8d8aeu8d8a7u8d986u8d987 u8d986u8daafu8d8b1u8d987\' \'nationalarchivesu82egovu800u82euku800\' true \'u8d8a8u8d8a7u8db8cu8daafu8d8a7u8d986u8db8c u8d8a7u8db8cu8d986u8d8aau8d8b1u8d986u8d8aa u8d8afu8d988u8d984u8d8aa u8d8a8u8d8b1u8db8cu8d8aau8d8a7u8d986u8db8cu8d8a7\' \'nlbu800u82egovu800u82esgu800\' false \'u8d8a8u8d8a7u8db8cu8daafu8d8a7u8d986u8db8c u8d8a7u8db8cu8d986u8d8aau8d8b1u8d986u8d8aa u8d8b3u8d986u8daafu8d8a7u8d9beu8d988u8d8b1\' \'pandorau82enlau800u82egovu800u82eauu800\' false \'u8d8a8u8d8a7u8db8cu8daafu8d8a7u8d986u8db8c u8d9beu8d8a7u8d986u8d8afu8d988u8d8b1u8d8a7\' \'parliamentu82euku800\' true \'u8d8a8u8d8a7u8db8cu8daafu8d8a7u8d986u8db8c u8d8a7u8db8cu8d986u8d8aau8d8b1u8d986u8d8aa u8d9beu8d8a7u8d8b1u8d984u8d985u8d8a7u8d986 u8d8a8u8d8b1u8db8cu8d8aau8d8a7u8db8cu8d986u8d8a7\' \'permau82eccu800\' false \'permau82eccu800\' \'perma archivesu82eccu800\' false \'permau82eccu800\' \'proniu82egovu800\' true \'u8d8a7u8d8afu8d8a7u8d8b1u8d987 u8d985u8d8afu8d8a7u8d8b1u8daa9 u8d8b9u8d985u8d988u8d985u8db8c u8d8a7u8db8cu8d8b1u8d984u8d986u8d8af u8d8b4u8d985u8d8a7u8d984u8db8c\' \'screenshotsu82ecomu800\' false nilu800 \'u8d8a7u8d8b3u8daa9u8d8b1u8db8cu8d986u8e2808cu8d8b4u8d8a7u8d8aau8d8b2\' \'stanfordu82eeduu800\' true \'u8daa9u8d8aau8d8a7u8d8a8u8d8aeu8d8a7u8d986u8d987u8e2808cu8d987u8d8a7u8db8c u8d8afu8d8a7u8d986u8d8b4u8daafu8d8a7u8d987 u8d8a7u8d8b3u8d8aau8d986u8d981u8d988u8d8b1u8d8af\' \'u8d8a8u8d8a7u8db8cu8daafu8d8a7u8d986u8db8c u8d8a7u8db8cu8d986u8d8aau8d8b1u8d986u8d8aa u8d8a7u8d8b3u8d8aau8d986u8d981u8d988u8d8b1u8d8af\' \'timetravelu82emementowebu82eorgu800\' false \'u8d9beu8d8b1u8d988u8da98u8d987 u8d985u8d985u8d986u8d8aau8d988\' \'uniu800 lju800u82esiu800\' true nilu800 \'u8d8a8u8d8a7u8db8cu8daafu8d8a7u8d986u8db8c u8d8a7u8db8cu8d986u8d8aau8d8b1u8d986u8d8aa u8d8a7u8d8b3u8d984u8d988u8d988u8d986u8db8c\' \'veebiarhiivu82edigaru82eeeu800\' true nilu800 \'u8d8a8u8d8a7u8db8cu8daafu8d8a7u8d986u8db8c u8d8a7u8db8cu8d986u8d8aau8d8b1u8d986u8d8aa u8d8a7u8d8b3u8d8aau8d988u8d986u8db8c\' \'vefsafnu82eisu800 true \'u8daa9u8d8aau8d8a7u8d8a8u8d8aeu8d8a7u8d986u8d987 u8d985u8d984u8db8c u8d988 u8d8afu8d8a7u8d986u8d8b4u8daafu8d8a7u8d987u8db8c u8d8a7u8db8cu8d8b3u8d984u8d986u8d8af\' \'webarchiveu82ebacu800 lacu800u82egcu800u82ecau800\' false \'u8daa9u8d8aau8d8a7u8d8a8u8d8aeu8d8a7u8d986u8d987 u8d988 u8d8a8u8d8a7u8db8cu8daafu8d8a7u8d986u8db8cu8e2808cu8d987u8d8a7u8db8c u8daa9u8d8a7u8d986u8d8a7u8d8afu8d8a7\' \'webarchiveu82elocu800u82egovu800\' true \'u8daa9u8d8aau8d8a7u8d8a8u8d8aeu8d8a7u8d986u8d987 u8daa9u8d986u8daafu8d8b1u8d987\' nilu800 \'locwebarchives nilu800 \'u8d8a8u8d8a7u8db8cu8daafu8d8a7u8d986u8db8cu8e2808cu8d987u8d8a7u8db8c u8d8a7u8db8cu8d986u8d8aau8d8b1u8d986u8d8aa\' \'webarchiveu82eorgu800u82euku800\' true \'u8d8a8u8d8a7u8db8cu8daafu8d8a7u8d986u8db8c u8d8a7u8db8cu8d986u8d8aau8d8b1u8d986u8d8aa u8d8a8u8d8b1u8db8cu8d8aau8d8a7u8db8cu8d986u8d8a7\' \'webcacheu82egoogleusercontentu82ecomu800\' false nilu800 \'u8daafu8d988u8daafu8d984 u8daa9u8d8b4\' \'webcitationu82eorgu800\' false \'u8d988u8d8a8u8e2808cu8daa9u8d8a7u8db8cu8d8aa\' nilu800 \'webcite\' categoriesu82ewebcite \'webharvestu82egovu800\' true \'u8d8afu8d981u8d8aau8d8b1 u8d985u8d984u8db8c u8d8a8u8d8a7u8db8cu8daafu8d8a7u8d986u8db8c u8d988 u8d985u8d8afu8d8a7u8d8b1u8daa9 u8d8a2u8d985u8d8b1u8db8cu8daa9u8d8a7\' \'webrecorderu82eiou800\' false \'webrecorderu82eiou800\' \'wikiwixu82ecomu800\' false nilu800 \'wikiwix\' \'yorkuu82ecau800\' false \'u8daa9u8d8aau8d8a7u8d8a8u8d8aeu8d8a7u8d986u8d987u8e2808cu8d987u8d8a7u8db8c u8d8afu8d8a7u8d986u8d8b4u8daafu8d8a7u8d987 u8db8cu8d988u8d8b1u8daa9\' \'u8daa9u8d8aau8d8a7u8d8a8u8d8aeu8d8a7u8d986u8d987 u8d8afu8db8cu8d8acu8db8cu8d8aau8d8a7u8d984 u8d8afu8d8a7u8d986u8d8b4u8daafu8d8a7u8d987 u8db8cu8d988u8d8b1u8daa9\' foru800 internationalzation local s_text addlarchives \'u8d8a8u8d8a7u8db8cu8daafu8d8a7u8d986u8db8cu8e2808cu8d987u8d8a7u8db8c u8d8a8u8db8cu8d8b4u8d8aau8d8b1\' addlpages \'u8d8b5u8d981u8d8adu8d987u8e2808cu8d987u8d8a7u8db8c u8d8a8u8d8a7u8db8cu8daafu8d8a7u8d986u8db8cu8e2808cu8d8b4u8d8afu8d987 u8d8a8u8db8cu8d8b4u8d8aau8d8b1&nbsp;u8d8afu8d8b1\' todo whyu800 theu800 &nbsp; there replace with regular space archive_index \'u8d8b4u8d8a7u8d8aeu8d8b5 u8d8a8u8d8a7u8db8cu8daafu8d8a7u8d986u8db8c\' archived \'u8d8a8u8d8a7u8db8cu8daafu8d8a7u8d986u8db8cu8e2808cu8d8b4u8d8afu8d987\' archived \'u8d8a8u8d8a7u8db8cu8daafu8d8a7u8d986u8db8cu8e2808cu8d8b4u8d8afu8d987\' archive \'u8d8a8u8d8a7u8db8cu8daafu8d8a7u8d986u8db8c\' page \'u8d8b5u8d981u8d8adu8d987\' these tables hold error andu800 warning message text local err_warn_msgs date_err \' u8d8aeu8d8b7u8d8a7u8db8c u8d8aau8d8a7u8d8b1u8db8cu8d8ae \' decodewebcitedate decodewaybackdate decodearchiveisdate date_miss \' u8d8aau8d8a7u8d8b1u8db8cu8d8ae u8d986u8d8a7u8d985u8d988u8d8acu8d988u8d8af \' parseextraargs ts_short \' u8d8b7u8d988u8d984 u8d8a8u8d8b1u8da86u8d8b3u8d8a8 u8d8b2u8d985u8d8a7u8d986u8db8c u8d8aau8d8a7u8d8b1u8db8cu8d8ae \' decodewaybackdate timestamp less than 8u800 digits ts_date \' u8d8a8u8d8b1u8da86u8d8b3u8d8a8 u8d8b2u8d985u8d8a7u8d986u8db8c u8d8aau8d8a7u8d8b1u8db8cu8d8ae u8d986u8d8a7u8d985u8d8b9u8d8aau8d8a8u8d8b1 \' decodewaybackdate timestamp notu800 au800 valid date unknown_url \' u8d8aeu8d8b7u8d8a7 u8d986u8d8b4u8d8a7u8d986u8db8c u8d986u8d8a7u8d8b4u8d986u8d8a7u8d8aeu8d8aau8d987u8d994 u8d8a8u8d8a7u8db8cu8daafu8d8a7u8d986u8db8c \' servicename unnamed_params \' u8d8a7u8d8b2 u8d9beu8d8a7u8d8b1u8d8a7u8d985u8d8aau8d8b1u8d987u8d8a7u8db8c u8d985u8daa9u8d8a7u8d986u8db8c u8da86u8d8b4u8d985u8e2808cu8d9beu8d988u8d8b4u8db8c u8d8b4u8d8af \' warnings mismatch \' u8d8b9u8d8afu8d985 u8d8aau8d8b7u8d8a7u8d8a8u8d982 u8d8aau8d8a7u8d8b1u8db8cu8d8ae \' webarchive ts_len \' u8d8b7u8d988u8d984 u8d8a8u8d8b1u8da86u8d8b3u8d8a8 u8d8b2u8d985u8d8a7u8d986u8db8c \' decodewaybackdate decodearchiveisdate timestamp notu800 14u800 digits ts_cal \' u8d8aau8d982u8d988u8db8cu8d985 \' decodewaybackdate timestamp hasu800 trailing splat local crit_err_msgs critical error messages conflicting \'u8d8aau8d8afu8d8a7u8d8aeu8d984 1u800 u8d988 2u800 \' empty \'u8d986u8d8b4u8d8a7u8d986u8db8c u8d8aeu8d8a7u8d984u8db8c\' iabot1 \' \' todo these iabot bugs perportedly fixed; removing these causes luau800 script error iabot2 \'invalid urlu800\' atu800 template webarchive testcases production; resolve that before deleting these messages invalid_url \'u8d986u8d8b4u8d8a7u8d986u8db8c u8d986u8d8a7u8d985u8d8b9u8d8aau8d8a8u8d8b1\' ts_nan \'u8d8a8u8d8b1u8da86u8d8b3u8d8a8 u8d8b2u8d985u8d8a7u8d986u8db8c u8d8bau8db8cu8d8b1 u8d8b9u8d8afu8d8afu8db8c\' unknown \'u8d985u8d8b4u8daa9u8d984 u8d986u8d8a7u8d8b4u8d986u8d8a7u8d8aeu8d8aau8d987. u8d984u8d8b7u8d981u8d8a7u8d98b u8d8afu8d8b1 u8d8a8u8d8adu8d8ab u8d8a7u8d984u8daafu8d988 u8db8cu8d8a7 u8d988u8d9be u8d981u8d986u8db8c u8daafu8d8b2u8d8a7u8d8b1u8d8b4 u8daa9u8d986u8db8cu8d8af\' these tables hold data that isu800 used when converting date formats from nonu800 english languages because mwu800u82elanguageu82egetcontentlanguage formatdate doesn\'tu800 understand nonu800 english month names local month_num retain english language names even though they mayu800 notu800 beu800 strictly required onu800 theu800 local wiki \'january\' 1u800 \'february\' 2u800 \'march\' 3u800 \'april\' 4u800 \'mayu800\' 5u800 \'june\' 6u800 \'july\' 7u800 \'august\' 8u800 \'september\' 9u800 \'october\' 10u800 \'november\' 11u800 \'december\' 12u800 \'janu800\' 1u800 \'febu800\' 2u800 \'maru800\' 3u800 \'apru800\' 4u800 \'mayu800\' 5u800 \'junu800\' 6u800 \'julu800\' 7u800 \'augu800\' 8u800 \'sepu800\' 9u800 \'octu800\' 10u800 \'novu800\' 11u800 \'decu800\' 12u800 addu800 local wiki month names tou800 number translation here \'u8da98u8d8a7u8d986u8d988u8db8cu8d987\' 1u800 \'u8d981u8d988u8d8b1u8db8cu8d987\' 2u800 \'u8d985u8d8a7u8d8b1u8d8b3\' 3u800 \'u8d8a2u8d988u8d8b1u8db8cu8d984\' 4u800 \'u8d985u8d987\' 5u800 \'u8da98u8d988u8d8a6u8d986\' 6u800 \'u8da98u8d988u8d8a6u8db8cu8d987\' 7u800 \'u8d8a7u8d988u8d8aa\' 8u800 \'u8d8b3u8d9beu8d8aau8d8a7u8d985u8d8a8u8d8b1\' 9u800 \'u8d8a7u8daa9u8d8aau8d8a8u8d8b1\' 10u800 \'u8d986u8d988u8d8a7u8d985u8d8a8u8d8b1\' 11u800 \'u8d8afu8d8b3u8d8a7u8d985u8d8a8u8d8b1\' 12u800 ; when theu800 local wiki uses nonu800 western digits inu800 dates local wiki digits must beu800 translated tou800 western digits; luau800 only understands western digits local digits useu800 this table tou800 aidu800 translation \'u8dbb0\' 0u800 \'u8dbb1\' 1u800 \'u8dbb2\' 2u800 \'u8dbb3\' 3u800 \'u8dbb4\' 4u800 \'u8dbb5\' 5u800 \'u8dbb6\' 6u800 \'u8dbb7\' 7u800 \'u8dbb8\' 8u800 \'u8dbb9\' 9u800 fill these table indexes with local digits enable true setu800 tou800 true tou800 enable local digit tou800 western digit translation ; this table holds tables ofu800 parameter names andu800 their nonu800 english aliases. inu800 theu800 enum_params table \'#\' isu800 au800 single character placeholder foru800 1u800 oru800 more digit characters parameter names inu800 this table shall beu800 lowercase local params \'urlu800\' \'urlu800\' \'date\' \'date\' \'datum\' \'title\' \'title\' \'titel\' \'nolink\' \'nolink\' \'format\' \'format\' local enum_params \'urlu800#\' \'urlu800#\' \'date#\' \'date#\' \'datum#\' \'title#\' \'title#\' \'titel#\' local format_vals format accepts twou800 values; addu800 local language variants here \'addlpages \'addlpages \'addlarchives \'addlarchives return categories categories config config crit_err_msgs crit_err_msgs digits digits enum_params enum_params err_warn_msgs err_warn_msgs excepted_pages excepted_pages format_vals format_vals month_num month_num params params prefixes prefixes services services s_text s_text uncategorized_namespaces uncategorized_namespaces uncategorized_subpages uncategorized_subpages ');
INSERT INTO `searchindex` (`si_page`, `si_title`, `si_text`) VALUES
(158, 'wikidata', ' vimu800 setu800 noexpandtab ftu800 luau800 tsu800 4u800 swu800 4u800 require \'module nou800 globals local pu800 local debug false module local variables andu800 functions local wiki langcode mwu800u82elanguageu82egetcontentlanguage .code internationalisation local i18n \"errors\" \"property notu800 found\" \"u8d9beu8d8b1u8d8a7u8d9beu8d8b1u8d8aau8db8c u8db8cu8d8a7u8d981u8d8aa u8d986u8d8b4u8d8af.\" \"entity notu800 found\" \"wikidata entity notu800 found.\" \"unknown claim type\" \"unknown claim type.\" \"unknown entity type\" \"unknown entity type.\" \"qualifier notu800 found\" \"qualifier notu800 found.\" \"site notu800 found\" \"u8d9beu8d8b1u8d988u8da98u8d987u8d994 u8d988u8db8cu8daa9u8db8cu8e2808cu8d985u8d8afu8db8cu8d8a7 u8db8cu8d8a7u8d981u8d8aa u8d986u8d8b4u8d8af.\" \"unknown datetime format\" \"unknown datetime format.\" \"local article notu800 found\" \"article isu800 notu800 yetu800 available inu800 this wiki.\" \"datetime\" 1u800 isu800 au800 placeholder foru800 theu800 actual number 0u800 \" 1u800 u8d985u8db8cu8d984u8db8cu8d8a7u8d8b1u8d8af u8d8b3u8d8a7u8d984\" precision billion years 1u800 \" 100u800 u8d985u8db8cu8d984u8db8cu8d988u8d986 u8d8b3u8d8a7u8d984\" precision hundred million years 2u800 \" 10u800 u8d985u8db8cu8d984u8db8cu8d988u8d986 u8d8b3u8d8a7u8d984\" precision tenu800 million years 3u800 \" 1u800 u8d985u8db8cu8d984u8db8cu8d988u8d986 u8d8b3u8d8a7u8d984\" precision million years 4u800 \" 100u800 000u800 u8d8b3u8d8a7u8d984\" precision hundred thousand years 5u800 \" 10u800 000u800 u8d8b3u8d8a7u8d984\" precision tenu800 thousand years 6u800 \" 1u800 u8d987u8d8b2u8d8a7u8d8b1u8d987\" precision millennium 7u800 \" 1u800 u8d982u8d8b1u8d986\" precision century 8u800 \" 1u800 u8d8afu8d987u8d987\" precision decade theu800 following useu800 theu800 format ofu800 #time parser function 9u800 \"yu800\" precision year 10u800 \"fu800 yu800\" precision month 11u800 \"fu800 ju800 yu800\" precision dayu800 12u800 \"fu800 ju800 yu800 gau800\" precision hour 13u800 \"fu800 ju800 yu800 gu800 iau800\" precision minute 14u800 \"fu800 ju800 yu800 gu800 iu800 sau800\" precision second \"beforenow\" \" 1u800 bceu800\" howu800 tou800 format negative numbers foru800 precisions 0u800 tou800 5u800 \"afternow\" \" 1u800 ceu800\" howu800 tou800 format positive numbers foru800 precisions 0u800 tou800 5u800 \"bcu800\" \' 1u800 \"bceu800\"\' howu800 print negative years \"adu800\" \" 1u800\" howu800 print positive years theu800 following areu800 foru800 function getdatevalue andu800 getqualifierdatevalue \"default format\" \"dmyu800\" default value ofu800 theu800 #3u800 getdatevalue oru800 #4u800 getqualifierdatevalue argument \"default addon\" \"bcu800\" default value ofu800 theu800 #4u800 getdatevalue oru800 #5u800 getqualifierdatevalue argument \"prefix addon\" false setu800 tou800 true foru800 languages putu800 \"bcu800\" inu800 front ofu800 theu800 datetime string; oru800 theu800 addon will beu800 suffixed \"addon sepu800\" \" \" separator between datetime string andu800 addon oru800 inverse \"format\" options ofu800 theu800 3rdu800 argument \"mdyu800\" \"fu800 ju800 yu800\" \"myu800\" \"fu800 yu800\" \"yu800\" \"yu800\" \"dmyu800\" \"ju800 fu800 yu800\" \"ymdu800\" \"yu800 mu800 du800\" \"ymu800\" \"yu800 mu800\" \"monolingualtext\" \' text \' \"warndump\" \" category called function \'dump\' from module wikidata \" \"ordinal\" 1u800 \"stu800\" 2u800 \"ndu800\" 3u800 \"rdu800\" \"default\" \"thu800\" credit tou800 ccu800 byu800 sau800 3u800u82e0u800 local function tablemerge t1u800 t2u800 foru800 ku800 vu800 inu800 pairs t2u800 dou800 ifu800 type vu800 \"table\" then ifu800 type t1u800 ku800 oru800 false \"table\" then tablemerge t1u800 ku800 oru800 t2u800 ku800 oru800 else t1u800 ku800 vu800 endu800 else t1u800 ku800 vu800 endu800 endu800 return t1u800 endu800 local function loadi18n local exist resu800 pcall require \"module wikidata i18n\" ifu800 exist andu800 next resu800 nilu800 then tablemerge i18n resu800u82ei18n endu800 endu800 loadi18n this function needs tou800 beu800 internationalised along with theu800 above takes cardinal numer asu800 au800 numeric andu800 returns theu800 ordinal asu800 au800 string weu800 need three exceptions inu800 english foru800 1stu800 2ndu800 3rdu800 21st .. 31st etcu800. local function makeordinal cardinal local ordsuffix i18nu82eordinalu82edefault ifu800 cardinal 10u800 1u800 then ordsuffix i18nu82eordinal 1u800 elseif cardinal 10u800 2u800 then ordsuffix i18nu82eordinal 2u800 elseif cardinal 10u800 3u800 then ordsuffix i18nu82eordinal 3u800 endu800 inu800 english 1u800 21u800 31u800 etcu800. useu800 \'stu800\' butu800 11u800 111u800 etcu800. useu800 \'thu800\' similarly foru800 12u800 andu800 13u800 etcu800. ifu800 cardinal 100u800 11u800 oru800 cardinal 100u800 12u800 oru800 cardinal 100u800 13u800 then ordsuffix i18nu82eordinalu82edefault endu800 return tostring cardinal .. ordsuffix endu800 local function printerror code return \' \' .. i18nu82eerrors code oru800 code .. \' \' endu800 local function parsedatevalue timestamp date_format date_addon local prefix_addon i18n \"datetime\" \"prefix addon\" local addon_sep i18n \"datetime\" \"addon sepu800\" local addon \"\" check foru800 negative date ifu800 stringu82esubu800 timestamp 1u800 1u800 \' \' then timestamp \' \' .. stringu82esubu800 timestamp 2u800 addon date_addon endu800 local function du800 fu800 local year_suffix local tstr \"\" local lang_obj mwu800u82elanguageu82enewu800 wikiu82elangcode local f_parts mwu800u82etextu82esplit fu800 \'yu800\' true foru800 idxu800 f_part inu800 pairs f_parts dou800 year_suffix   ifu800 stringu82ematch f_part \"xu800 mijkot \" then foru800 nonu800 gregorian year f_part f_part .. \'yu800\' elseif idxu800 #f_parts then supress leading zeros inu800 year year_suffix lang_obj formatdate \'yu800\' timestamp year_suffix stringu82egsub year_suffix \' 0u800 \'   1u800 endu800 tstr tstr .. lang_obj formatdate f_part timestamp .. year_suffix endu800 ifu800 addon \"\" andu800 prefix_addon then return addon .. addon_sep .. tstr elseif addon \"\" then return tstr .. addon_sep .. addon else return tstr endu800 endu800 local _date_format i18n \"datetime\" \"format\" date_format ifu800 _date_format nilu800 then return du800 _date_format else return printerror \"unknown datetime format\" endu800 endu800 this local function combines theu800 year month dayu800 bcu800 bceu800 handling ofu800 parsedatevalue with theu800 millennium century decade handling ofu800 formatdate local function parsedatefull timestamp precision date_format date_addon local prefix_addon i18n \"datetime\" \"prefix addon\" local addon_sep i18n \"datetime\" \"addon sepu800\" local addon \"\" check foru800 negative date ifu800 stringu82esubu800 timestamp 1u800 1u800 \' \' then timestamp \' \' .. stringu82esubu800 timestamp 2u800 addon date_addon endu800 getu800 theu800 next four characters after theu800 should beu800 theu800 year nowu800 inu800 allu800 cases oku800 sou800 this isu800 dirty butu800 letu800 letu800\'su800 getu800 itu800 working first local intyear tonumber stringu82esubu800 timestamp 2u800 5u800 ifu800 intyear 0u800 andu800 precision 9u800 then return \"\" endu800 precision isu800 10000 years oru800 more ifu800 precision 5u800 then local factor 10u800 5u800 precision 4u800 local y2u800 mathu82eceil mathu82eabsu800 intyear factor local relative mwu800u82eustringu82egsub i18nu82edatetime precision \" 1u800\" tostring y2u800 ifu800 addon \"\" then negative date relative mwu800u82eustringu82egsub i18nu82edatetimeu82ebeforenow \" 1u800\" relative else relative mwu800u82eustringu82egsub i18nu82edatetimeu82eafternow \" 1u800\" relative endu800 return relative endu800 precision isu800 decades 8u800 centuries 7u800 andu800 millennia 6u800 local erau800 card ifu800 precision 6u800 then card mathu82efloor intyear 1u800 1000 1u800 erau800 mwu800u82eustringu82egsub i18nu82edatetime 6u800 \" 1u800\" makeordinal card endu800 ifu800 precision 7u800 then card mathu82efloor intyear 1u800 100u800 1u800 erau800 mwu800u82eustringu82egsub i18nu82edatetime 7u800 \" 1u800\" makeordinal card endu800 ifu800 precision 8u800 then erau800 mwu800u82eustringu82egsub i18nu82edatetime 8u800 \" 1u800\" tostring mathu82efloor mathu82eabsu800 intyear 10u800 * 10u800 endu800 ifu800 erau800 then ifu800 addon \"\" then erau800 mwu800u82eustringu82egsub mwu800u82eustringu82egsub i18nu82edatetimeu82ebcu800 \'\"\' \"\" \" 1u800\" erau800 else erau800 mwu800u82eustringu82egsub mwu800u82eustringu82egsub i18nu82edatetimeu82eadu800 \'\"\' \"\" \" 1u800\" erau800 endu800 return erau800 endu800 local _date_format i18n \"datetime\" \"format\" date_format ifu800 _date_format nilu800 then check foru800 precision isu800 year andu800 override supplied date_format ifu800 precision 9u800 then _date_format i18n \"datetime\" 9u800 endu800 local year_suffix local tstr \"\" local lang_obj mwu800u82elanguageu82enewu800 wikiu82elangcode local f_parts mwu800u82etextu82esplit _date_format \'yu800\' true foru800 idxu800 f_part inu800 pairs f_parts dou800 year_suffix   ifu800 stringu82ematch f_part \"xu800 mijkot \" then foru800 nonu800 gregorian year f_part f_part .. \'yu800\' elseif idxu800 #f_parts then supress leading zeros inu800 year year_suffix lang_obj formatdate \'yu800\' timestamp year_suffix stringu82egsub year_suffix \' 0u800 \'   1u800 endu800 tstr tstr .. lang_obj formatdate f_part timestamp .. year_suffix endu800 local fdate ifu800 addon \"\" andu800 prefix_addon then fdate addon .. addon_sep .. tstr elseif addon \"\" then fdate tstr .. addon_sep .. addon else fdate tstr endu800 return fdate else return printerror \"unknown datetime format\" endu800 endu800 theu800 \"qualifiers\" andu800 \"snaks\" field have au800 respective \"qualifiers order\" andu800 \"snaks order\" field useu800 these asu800 theu800 second parameter andu800 this function instead ofu800 theu800 built inu800 \"pairs\" function tou800 iterate over allu800 qualifiers andu800 snaks inu800 theu800 intended order. local function orderedpairs array order ifu800 notu800 order then return pairs array endu800 return iterator function local iu800 0u800 return function iu800 iu800 1u800 ifu800 order iu800 then return order iu800 array order iu800 endu800 endu800 endu800 precision 0u800 billion years 1u800 hundred million years ... 6u800 millennia 7u800 century 8u800 decade 9u800 year 10u800 month 11u800 dayu800 12u800 hour 13u800 minute 14u800 second local function normalizedate date date mwu800u82etextu82etrim date \" \" extract year local yearstr mwu800u82eustringu82ematch date \" du800 \" local year tonumber yearstr remove leading zeros ofu800 year return year .. mwu800u82eustringu82esubu800 date #yearstr 1u800 year endu800 local function formatdate date precision timezone precision precision oru800 11u800 local date year normalizedate date ifu800 year 0u800 andu800 precision 9u800 then return \"\" endu800 precision isu800 10000 years oru800 more ifu800 precision 5u800 then local factor 10u800 5u800 precision 4u800 local y2u800 mathu82eceil mathu82eabsu800 year factor local relative mwu800u82eustringu82egsub i18nu82edatetime precision \" 1u800\" tostring y2u800 ifu800 year 0u800 then relative mwu800u82eustringu82egsub i18nu82edatetimeu82ebeforenow \" 1u800\" relative else relative mwu800u82eustringu82egsub i18nu82edatetimeu82eafternow \" 1u800\" relative endu800 return relative endu800 precision isu800 decades centuries andu800 millennia local erau800 ifu800 precision 6u800 then erau800 mwu800u82eustringu82egsub i18nu82edatetime 6u800 \" 1u800\" tostring mathu82efloor mathu82eabsu800 year 1u800 1000 1u800 endu800 ifu800 precision 7u800 then erau800 mwu800u82eustringu82egsub i18nu82edatetime 7u800 \" 1u800\" tostring mathu82efloor mathu82eabsu800 year 1u800 100u800 1u800 endu800 ifu800 precision 8u800 then erau800 mwu800u82eustringu82egsub i18nu82edatetime 8u800 \" 1u800\" tostring mathu82efloor mathu82eabsu800 year 10u800 * 10u800 endu800 ifu800 erau800 then ifu800 year 0u800 then erau800 mwu800u82eustringu82egsub mwu800u82eustringu82egsub i18nu82edatetimeu82ebcu800 \'\"\' \"\" \" 1u800\" erau800 elseif year 0u800 then erau800 mwu800u82eustringu82egsub mwu800u82eustringu82egsub i18nu82edatetimeu82eadu800 \'\"\' \"\" \" 1u800\" erau800 endu800 return erau800 endu800 precision isu800 year ifu800 precision 9u800 then return year endu800 precision isu800 less than years ifu800 precision 9u800 then theu800 following code replaces theu800 utcu800 suffix with theu800 given negated timezone tou800 convert theu800 global time tou800 theu800 given local time timezone tonumber timezone ifu800 timezone andu800 timezone 0u800 then timezone timezone timezone stringu82eformat \" .2du800 .2du800\" timezone 60u800 timezone 60u800 ifu800 timezone 1u800 \' \' then timezone \" \" .. timezone endu800 date mwu800u82etextu82etrim date \"zu800\" .. \" \" .. timezone endu800 local formatstr i18nu82edatetime precision ifu800 year 0u800 then formatstr mwu800u82eustringu82egsub formatstr i18nu82edatetime 9u800 \"\" elseif year 0u800 then mediawiki formatdate doesn\'tu800 support negative years date mwu800u82eustringu82esubu800 date 2u800 formatstr mwu800u82eustringu82egsub formatstr i18nu82edatetime 9u800 mwu800u82eustringu82egsub i18nu82edatetimeu82ebcu800 \" 1u800\" i18nu82edatetime 9u800 elseif year 0u800 andu800 i18nu82edatetimeu82eadu800 \" 1u800\" then formatstr mwu800u82eustringu82egsub formatstr i18nu82edatetime 9u800 mwu800u82eustringu82egsub i18nu82edatetimeu82eadu800 \" 1u800\" i18nu82edatetime 9u800 endu800 return mwu800u82elanguageu82enewu800 wikiu82elangcode formatdate formatstr date endu800 endu800 local function printdatavalueentity data parameter data fields entity type string numeric idu800 intu800 wikidata idu800 local idu800 ifu800 data \"entity type\" \"item\" then idu800 \"qu800\" .. data \"numeric idu800\" elseif data \"entity type\" \"property\" then idu800 \"pu800\" .. data \"numeric idu800\" else return printerror \"unknown entity type\" endu800 ifu800 parameter then ifu800 parameter \"link\" then local linktarget mwu800u82ewikibaseu82esitelink idu800 local linkname mwu800u82ewikibaseu82elabel idu800 ifu800 linktarget then ifu800 there isu800 au800 local wikipedia article link tou800 itu800 using theu800 label oru800 theu800 article title return \" \" .. linktarget .. \" \" .. linkname oru800 linktarget .. \" \" else ifu800 there isu800 nou800 local wikipedia article output theu800 label oru800 link tou800 theu800 wikidata object tou800 letu800 theu800 user input au800 proper label ifu800 linkname then return linkname else return \" du800 \" .. idu800 .. \" \" .. idu800 .. \" \" endu800 endu800 else return data parameter endu800 else return mwu800u82ewikibaseu82elabel idu800 oru800 idu800 endu800 endu800 local function printdatavaluetime data parameter data fields time isou800 8601 time timezone intu800 inu800 minutes before intu800 after intu800 precision intu800 calendarmodel wikidata uriu800 precision 0u800 billion years 1u800 hundred million years ... 6u800 millennia 7u800 century 8u800 decade 9u800 year 10u800 month 11u800 dayu800 12u800 hour 13u800 minute 14u800 second calendarmodel eu800u82egu800. foru800 theu800 proleptic gregorian calendar oru800 foru800 theu800 julian calendar ifu800 parameter then ifu800 parameter \"calendarmodel\" then datau82ecalendarmodel mwu800u82eustringu82ematch datau82ecalendarmodel \"qu800 du800 \" extract entity idu800 from theu800 calendar model uriu800 elseif parameter \"time\" then datau82etime normalizedate datau82etime endu800 return data parameter else return formatdate datau82etime datau82eprecision datau82etimezone endu800 endu800 local function printdatavaluemonolingualtext data parameter data fields language string text string ifu800 parameter then return data parameter else local result mwu800u82eustringu82egsub mwu800u82eustringu82egsub i18nu82emonolingualtext \" language\" data \"language\" \" text\" data \"text\" return result endu800 endu800 local function findclaims entity property ifu800 notu800 property oru800 notu800 entity oru800 notu800 entityu82eclaims then return endu800 ifu800 mwu800u82eustringu82ematch property \" pu800 du800 \" then ifu800 theu800 property isu800 given byu800 anu800 idu800 pu800.. access theu800 claim list byu800 this idu800 return entityu82eclaims property else property mwu800u82ewikibaseu82eresolvepropertyid property ifu800 notu800 property then return endu800 return entityu82eclaims property endu800 endu800 local function getsnakvalue snak parameter ifu800 snaku82esnaktype \"value\" then call theu800 respective snak parser ifu800 snaku82edatavalueu82etype \"string\" then return snaku82edatavalueu82evalue elseif snaku82edatavalueu82etype \"globecoordinate\" then return printdatavaluecoordinate snaku82edatavalueu82evalue parameter elseif snaku82edatavalueu82etype \"quantity\" then return printdatavaluequantity snaku82edatavalueu82evalue parameter elseif snaku82edatavalueu82etype \"time\" then return printdatavaluetime snaku82edatavalueu82evalue parameter elseif snaku82edatavalueu82etype \"wikibase entityid\" then return printdatavalueentity snaku82edatavalueu82evalue parameter elseif snaku82edatavalueu82etype \"monolingualtext\" then return printdatavaluemonolingualtext snaku82edatavalueu82evalue parameter endu800 endu800 return mwu800u82ewikibaseu82erendersnak snak endu800 local function getqualifiersnak claim qualifierid au800 \"snak\" isu800 wikidata terminology foru800 au800 typed keyu800 value pair au800 claim consists ofu800 au800 main snak holding theu800 main information ofu800 this claim asu800 well asu800 au800 list ofu800 attribute snaks andu800 au800 list ofu800 references snaks ifu800 qualifierid then search theu800 attribute snak with theu800 given qualifier asu800 keyu800 ifu800 claimu82equalifiers then local qualifier claimu82equalifiers qualifierid ifu800 qualifier then return qualifier 1u800 endu800 endu800 return nilu800 printerror \"qualifier notu800 found\" else otherwise return theu800 main snak return claimu82emainsnak endu800 endu800 local function getvalueofclaim claim qualifierid parameter local error local snak snak error getqualifiersnak claim qualifierid ifu800 snak then return getsnakvalue snak parameter else return nilu800 error endu800 endu800 local function getreferences frame claim local result \"\" traverse through allu800 references foru800 refu800 inu800 pairs claimu82ereferences oru800 dou800 local refparts traverse through allu800 parts ofu800 theu800 current reference foru800 snakkey snakval inu800 orderedpairs claimu82ereferences refu800 .snaks oru800 claimu82ereferences refu800 \"snaks order\" dou800 ifu800 refparts then refparts refparts .. \" \" else refparts \"\" endu800 output theu800 label ofu800 theu800 property ofu800 theu800 reference part eu800u82egu800. \"imported from\" foru800 p143 refparts refparts .. tostring mwu800u82ewikibaseu82elabel snakkey .. \" \" output allu800 values ofu800 this reference part eu800u82egu800. \"german wikipedia\" andu800 \"english wikipedia\" ifu800 theu800 referenced claim wasu800 imported from both sites foru800 snakidx 1u800 #snakval dou800 ifu800 snakidx 1u800 then refparts refparts .. \" \" endu800 refparts refparts .. getsnakvalue snakval snakidx endu800 endu800 ifu800 refparts then result result .. frame extensiontag \"refu800\" refparts endu800 endu800 return result endu800 module global functions ifu800 debug then function pu800u82einspecti18n frame local valu800 i18n foru800 _u800 keyu800 inu800 pairs frameu82eargs dou800 keyu800 mwu800u82etextu82etrim keyu800 valu800 valu800 keyu800 endu800 return valu800 endu800 endu800 function pu800u82edescriptionin frame local langcode frameu82eargs 1u800 local idu800 frameu82eargs 2u800 \"idu800\" must beu800 nilu800 asu800 access tou800 other wikidata objects isu800 disabled inu800 mediawiki configuration return description ofu800 au800 wikidata entity inu800 theu800 given language oru800 theu800 default language ofu800 this wikipedia site return mwu800u82ewikibaseu82egetentityobject idu800 .descriptions langcode oru800 wikiu82elangcode .value endu800 function pu800u82elabelin frame local langcode frameu82eargs 1u800 local idu800 frameu82eargs 2u800 \"idu800\" must beu800 nilu800 asu800 access tou800 other wikidata objects isu800 disabled inu800 mediawiki configuration return label ofu800 au800 wikidata entity inu800 theu800 given language oru800 theu800 default language ofu800 this wikipedia site return mwu800u82ewikibaseu82egetentityobject idu800 .labels langcode oru800 wikiu82elangcode .value endu800 this isu800 used tou800 getu800 au800 value oru800 au800 comma separated list ofu800 them ifu800 multiple values exist pu800u82egetvalue function frame local propertyid mwu800u82etextu82etrim frameu82eargs 1u800 oru800 \"\" local input_parm mwu800u82etextu82etrim frameu82eargs 2u800 oru800 \"\" ifu800 input_parm \"fetch_wikidata\" then local entity mwu800u82ewikibaseu82egetentityobject local claims ifu800 entity andu800 entityu82eclaims then claims entityu82eclaims propertyid endu800 ifu800 claims then ifu800 wiki linked value output asu800 link ifu800 possible ifu800 claims 1u800 andu800 claims 1u800 .mainsnaku82esnaktype \"value\" andu800 claims 1u800 .mainsnaku82edatavalueu82etype \"wikibase entityid\" then local outu800 foru800 ku800 vu800 inu800 pairs claims dou800 local sitelink mwu800u82ewikibaseu82esitelink \"qu800\" .. vu800u82emainsnaku82edatavalueu82evalue \"numeric idu800\" local label mwu800u82ewikibaseu82elabel \"qu800\" .. vu800u82emainsnaku82edatavalueu82evalue \"numeric idu800\" ifu800 label nilu800 then label \"qu800\" .. vu800u82emainsnaku82edatavalueu82evalue \"numeric idu800\" endu800 ifu800 sitelink then outu800 #outu800 1u800 \" \" .. sitelink .. \" \" .. label .. \" \" else outu800 #outu800 1u800 \" du800 qu800\" .. vu800u82emainsnaku82edatavalueu82evalue \"numeric idu800\" .. \" \" .. label .. \" * \" endu800 endu800 return tableu82econcat outu800 \" \" else just return best values return entity formatpropertyvalues propertyid .value endu800 else return \"\" endu800 else return input_parm endu800 endu800 same asu800 above butu800 uses theu800 short name property foru800 label ifu800 available. pu800u82egetvalueshortname function frame local propertyid mwu800u82etextu82etrim frameu82eargs 1u800 oru800 \"\" local input_parm mwu800u82etextu82etrim frameu82eargs 2u800 oru800 \"\" ifu800 input_parm \"fetch_wikidata\" then local entity mwu800u82ewikibaseu82egetentityobject local claims ifu800 entity andu800 entityu82eclaims then claims entityu82eclaims propertyid endu800 ifu800 claims then ifu800 wiki linked value output asu800 link ifu800 possible ifu800 claims 1u800 andu800 claims 1u800 .mainsnaku82esnaktype \"value\" andu800 claims 1u800 .mainsnaku82edatavalueu82etype \"wikibase entityid\" then local outu800 foru800 ku800 vu800 inu800 pairs claims dou800 local sitelink mwu800u82ewikibaseu82esitelink \"qu800\" .. vu800u82emainsnaku82edatavalueu82evalue \"numeric idu800\" local label local claimentity mwu800u82ewikibaseu82egetentity \"qu800\" .. vu800u82emainsnaku82edatavalueu82evalue \"numeric idu800\" ifu800 claimentity nilu800 then ifu800 claimentityu82eclaimsu82ep1813 then foru800 k2u800 v2u800 inu800 pairs claimentityu82eclaimsu82ep1813 dou800 ifu800 v2u800u82emainsnaku82edatavalueu82evalueu82elanguage \"enu800\" then label v2u800u82emainsnaku82edatavalueu82evalueu82etext endu800 endu800 endu800 endu800 ifu800 label nilu800 oru800 label \"\" then label mwu800u82ewikibaseu82elabel \"qu800\" .. vu800u82emainsnaku82edatavalueu82evalue \"numeric idu800\" endu800 ifu800 label nilu800 then label \"qu800\" .. vu800u82emainsnaku82edatavalueu82evalue \"numeric idu800\" endu800 ifu800 sitelink then outu800 #outu800 1u800 \" \" .. sitelink .. \" \" .. label .. \" \" else outu800 #outu800 1u800 \" du800 qu800\" .. vu800u82emainsnaku82edatavalueu82evalue \"numeric idu800\" .. \" \" .. label .. \" * \" endu800 endu800 return tableu82econcat outu800 \" \" else just return best vakues return entity formatpropertyvalues propertyid .value endu800 else return \"\" endu800 else return input_parm endu800 endu800 this isu800 used tou800 getu800 au800 value oru800 au800 comma separated list ofu800 them ifu800 multiple values exist from anu800 arbitrary entry byu800 using itsu800 qidu800. useu800 #invoke wikidata getvaluefromid fetch_wikidata eu800u82egu800. #invoke wikidata getvaluefromid q151973 p26u800 fetch_wikidata tou800 fetch value ofu800 \'spouse\' p26u800 from \'richard burton\' q151973 please useu800 sparingly this isu800 anu800 *expensive call*. pu800u82egetvaluefromid function frame local itemid mwu800u82etextu82etrim frameu82eargs 1u800 oru800 \"\" local propertyid mwu800u82etextu82etrim frameu82eargs 2u800 oru800 \"\" local input_parm mwu800u82etextu82etrim frameu82eargs 3u800 oru800 \"\" ifu800 input_parm \"fetch_wikidata\" then local entity mwu800u82ewikibaseu82egetentity itemid local claims ifu800 entity andu800 entityu82eclaims then claims entityu82eclaims propertyid endu800 ifu800 claims then ifu800 wiki linked value output asu800 link ifu800 possible ifu800 claims 1u800 andu800 claims 1u800 .mainsnaku82esnaktype \"value\" andu800 claims 1u800 .mainsnaku82edatavalueu82etype \"wikibase entityid\" then local outu800 foru800 ku800 vu800 inu800 pairs claims dou800 local sitelink mwu800u82ewikibaseu82esitelink \"qu800\" .. vu800u82emainsnaku82edatavalueu82evalue \"numeric idu800\" local label mwu800u82ewikibaseu82elabel \"qu800\" .. vu800u82emainsnaku82edatavalueu82evalue \"numeric idu800\" ifu800 label nilu800 then label \"qu800\" .. vu800u82emainsnaku82edatavalueu82evalue \"numeric idu800\" endu800 ifu800 sitelink then outu800 #outu800 1u800 \" \" .. sitelink .. \" \" .. label .. \" \" else outu800 #outu800 1u800 \" du800 qu800\" .. vu800u82emainsnaku82edatavalueu82evalue \"numeric idu800\" .. \" \" .. label .. \" * \" endu800 endu800 return tableu82econcat outu800 \" \" else return entity formatpropertyvalues propertyid .value endu800 else return \"\" endu800 else return input_parm endu800 endu800 pu800u82egetqualifiervalue function frame local propertyid mwu800u82etextu82etrim frameu82eargs 1u800 oru800 \"\" local qualifierid mwu800u82etextu82etrim frameu82eargs 2u800 oru800 \"\" local input_parm mwu800u82etextu82etrim frameu82eargs 3u800 oru800 \"\" ifu800 input_parm \"fetch_wikidata\" then local entity mwu800u82ewikibaseu82egetentityobject ifu800 entityu82eclaims propertyid nilu800 then local outu800 foru800 ku800 vu800 inu800 pairs entityu82eclaims propertyid dou800 foru800 k2u800 v2u800 inu800 pairs vu800u82equalifiers qualifierid dou800 ifu800 v2u800u82esnaktype \'value\' then ifu800 mwu800u82ewikibaseu82esitelink \"qu800\" .. v2u800u82edatavalueu82evalue \"numeric idu800\" then outu800 #outu800 1u800 \" \" .. mwu800u82ewikibaseu82esitelink \"qu800\" .. v2u800u82edatavalueu82evalue \"numeric idu800\" .. \" \" else outu800 #outu800 1u800 \" du800 qu800\" .. v2u800u82edatavalueu82evalue \"numeric idu800\" .. \" \" .. mwu800u82ewikibaseu82elabel \"qu800\" .. v2u800u82edatavalueu82evalue \"numeric idu800\" .. \" * \" endu800 endu800 endu800 endu800 return tableu82econcat outu800 \" \" else return \"\" endu800 else return input_parm endu800 endu800 this isu800 used tou800 getu800 au800 value like \'male\' foru800 property p21u800 which wonu800\'tu800 beu800 linked andu800 numbers without theu800 thousand separators pu800u82egetrawvalue function frame local propertyid mwu800u82etextu82etrim frameu82eargs 1u800 oru800 \"\" local input_parm mwu800u82etextu82etrim frameu82eargs 2u800 oru800 \"\" ifu800 input_parm \"fetch_wikidata\" then local entity mwu800u82ewikibaseu82egetentityobject local claims ifu800 entity andu800 entityu82eclaims then claims entityu82eclaims propertyid endu800 ifu800 claims then local result entity formatpropertyvalues propertyid mwu800u82ewikibaseu82eentityu82eclaimranks .value ifu800 number type remove thousand separators bounds andu800 units ifu800 claims 1u800 andu800 claims 1u800 .mainsnaku82esnaktype \"value\" andu800 claims 1u800 .mainsnaku82edatavalueu82etype \"quantity\" then result mwu800u82eustringu82egsub result \" du800 du800 \" \" 1u800 2u800\" result mwu800u82eustringu82egsub result \" du800 u8c2b1u82e*\" \" 1u800\" endu800 return result else return \"\" endu800 else return input_parm endu800 endu800 this isu800 used tou800 getu800 theu800 unit name foru800 theu800 numeric value returned byu800 getrawvalue pu800u82egetunits function frame local propertyid mwu800u82etextu82etrim frameu82eargs 1u800 oru800 \"\" local input_parm mwu800u82etextu82etrim frameu82eargs 2u800 oru800 \"\" ifu800 input_parm \"fetch_wikidata\" then local entity mwu800u82ewikibaseu82egetentityobject local claims ifu800 entity andu800 entityu82eclaims then claims entityu82eclaims propertyid endu800 ifu800 claims then local result entity formatpropertyvalues propertyid mwu800u82ewikibaseu82eentityu82eclaimranks .value ifu800 claims 1u800 andu800 claims 1u800 .mainsnaku82esnaktype \"value\" andu800 claims 1u800 .mainsnaku82edatavalueu82etype \"quantity\" then result mwu800u82eustringu82esubu800 result mwu800u82eustringu82efind result \" \" 1u800 1u800 endu800 return result else return \"\" endu800 else return input_parm endu800 endu800 this isu800 used tou800 getu800 theu800 unit unit\'su800 qidu800 tou800 useu800 with theu800 numeric value returned byu800 getrawvalue pu800u82egetunitid function frame local propertyid mwu800u82etextu82etrim frameu82eargs 1u800 oru800 \"\" local input_parm mwu800u82etextu82etrim frameu82eargs 2u800 oru800 \"\" ifu800 input_parm \"fetch_wikidata\" then local entity mwu800u82ewikibaseu82egetentityobject local claims ifu800 entity andu800 entityu82eclaims then claims entityu82eclaims propertyid endu800 ifu800 claims then local result ifu800 claims 1u800 andu800 claims 1u800 .mainsnaku82esnaktype \"value\" andu800 claims 1u800 .mainsnaku82edatavalueu82etype \"quantity\" then getu800 theu800 urlu800 foru800 theu800 unit entry onu800 wikidata result claims 1u800 .mainsnaku82edatavalueu82evalueu82eunit andu800 just reurn theu800 last bitu800 from \"qu800\" tou800 theu800 endu800 which isu800 theu800 qidu800 result mwu800u82eustringu82esubu800 result mwu800u82eustringu82efind result \"qu800\" 1u800 endu800 return result else return \"\" endu800 else return input_parm endu800 endu800 pu800u82egetrawqualifiervalue function frame local propertyid mwu800u82etextu82etrim frameu82eargs 1u800 oru800 \"\" local qualifierid mwu800u82etextu82etrim frameu82eargs 2u800 oru800 \"\" local input_parm mwu800u82etextu82etrim frameu82eargs 3u800 oru800 \"\" ifu800 input_parm \"fetch_wikidata\" then local entity mwu800u82ewikibaseu82egetentityobject ifu800 entityu82eclaims propertyid nilu800 then local outu800 foru800 ku800 vu800 inu800 pairs entityu82eclaims propertyid dou800 foru800 k2u800 v2u800 inu800 pairs vu800u82equalifiers qualifierid dou800 ifu800 v2u800u82esnaktype \'value\' then ifu800 v2u800u82edatavalueu82evalue \"numeric idu800\" then outu800 #outu800 1u800 mwu800u82ewikibaseu82elabel \"qu800\" .. v2u800u82edatavalueu82evalue \"numeric idu800\" else outu800 #outu800 1u800 v2u800u82edatavalueu82evalue endu800 endu800 endu800 endu800 local retu800 tableu82econcat outu800 \" \" return stringu82eupper stringu82esubu800 retu800 1u800 1u800 .. stringu82esubu800 retu800 2u800 else return \"\" endu800 else return input_parm endu800 endu800 this isu800 used tou800 getu800 au800 date value foru800 date_of_birth p569 etcu800. which wonu800\'tu800 beu800 linked dates andu800 times areu800 stored inu800 isou800 8601 format sort ofu800 . atu800 present theu800 local formatdate date precision timezone function doesn\'tu800 handle timezone sou800 iu800\'llu800 just supply \"zu800\" inu800 theu800 call tou800 formatdate below pu800u82egetdatevalue function frame local propertyid mwu800u82etextu82etrim frameu82eargs 1u800 oru800 \"\" local input_parm mwu800u82etextu82etrim frameu82eargs 2u800 oru800 \"\" local date_format mwu800u82etextu82etrim frameu82eargs 3u800 oru800 i18n \"datetime\" \"default format\" local date_addon mwu800u82etextu82etrim frameu82eargs 4u800 oru800 i18n \"datetime\" \"default addon\" ifu800 input_parm \"fetch_wikidata\" then local entity mwu800u82ewikibaseu82egetentityobject ifu800 entityu82eclaims propertyid nilu800 then local outu800 foru800 ku800 vu800 inu800 pairs entityu82eclaims propertyid dou800 ifu800 vu800u82emainsnaku82edatavalueu82etype \'time\' then local timestamp vu800u82emainsnaku82edatavalueu82evalueu82etime local dateprecision vu800u82emainsnaku82edatavalueu82evalueu82eprecision au800 year canu800 beu800 stored like this \" 1872 00u800 00t00 00u800 00zu800\" which isu800 processed here asu800 ifu800 itu800 were theu800 dayu800 before \" 1872 01u800 01t00 00u800 00zu800\" andu800 that that\'su800 theu800 last dayu800 ofu800 1871 sou800 theu800 year isu800 wrong. sou800 fixu800 theu800 month 0u800 dayu800 0u800 timestamp tou800 become 1u800 january instead timestamp timestamp gsub \" 00u800 00tu800\" \" 01u800 01tu800\" outu800 #outu800 1u800 parsedatefull timestamp dateprecision date_format date_addon endu800 endu800 return tableu82econcat outu800 \" \" else return \"\" endu800 else return input_parm endu800 endu800 pu800u82egetqualifierdatevalue function frame local propertyid mwu800u82etextu82etrim frameu82eargs 1u800 oru800 \"\" local qualifierid mwu800u82etextu82etrim frameu82eargs 2u800 oru800 \"\" local input_parm mwu800u82etextu82etrim frameu82eargs 3u800 oru800 \"\" local date_format mwu800u82etextu82etrim frameu82eargs 4u800 oru800 i18n \"datetime\" \"default format\" local date_addon mwu800u82etextu82etrim frameu82eargs 5u800 oru800 i18n \"datetime\" \"default addon\" ifu800 input_parm \"fetch_wikidata\" then local entity mwu800u82ewikibaseu82egetentityobject ifu800 entityu82eclaims propertyid nilu800 then local outu800 foru800 ku800 vu800 inu800 pairs entityu82eclaims propertyid dou800 foru800 k2u800 v2u800 inu800 pairs vu800u82equalifiers qualifierid dou800 ifu800 v2u800u82esnaktype \'value\' then local timestamp v2u800u82edatavalueu82evalueu82etime outu800 #outu800 1u800 parsedatevalue timestamp date_format date_addon endu800 endu800 endu800 return tableu82econcat outu800 \" \" else return \"\" endu800 else return input_parm endu800 endu800 this isu800 used tou800 fetch allu800 ofu800 theu800 images with au800 particular property eu800u82egu800. image p18u800 gene atlas image p692 etcu800. parameters areu800 propertyid value fetch_wikidata nilu800 separator default space size default frameless itu800 will return au800 standard wiki markup file filename size foru800 each image with au800 selectable size andu800 separator which mayu800 beu800 html eu800u82egu800. #invoke wikidata getimages p18u800 fetch_wikidata eu800u82egu800. #invoke wikidata getimages p18u800 fetch_wikidata 250px ifu800 au800 property isu800 chosen that isu800 notu800 ofu800 type \"commonsmedia\" itu800 will return empty text. pu800u82egetimages function frame local propertyid mwu800u82etextu82etrim frameu82eargs 1u800 oru800 \"\" local input_parm mwu800u82etextu82etrim frameu82eargs 2u800 oru800 \"\" local sepu800 mwu800u82etextu82etrim frameu82eargs 3u800 oru800 \" \" local imgsize mwu800u82etextu82etrim frameu82eargs 4u800 oru800 \"frameless\" ifu800 input_parm \"fetch_wikidata\" then local entity mwu800u82ewikibaseu82egetentityobject local claims ifu800 entity andu800 entityu82eclaims then claims entityu82eclaims propertyid endu800 ifu800 claims then ifu800 claims 1u800 andu800 claims 1u800 .mainsnaku82edatatype \"commonsmedia\" then local outu800 foru800 ku800 vu800 inu800 pairs claims dou800 local filename vu800u82emainsnaku82edatavalueu82evalue outu800 #outu800 1u800 \" file \" .. filename .. \" \" .. imgsize .. \" \" endu800 return tableu82econcat outu800 sepu800 else return \"\" endu800 else return \"\" endu800 else return input_parm endu800 endu800 this isu800 used tou800 getu800 theu800 ta98 terminologia anatomica first edition 1998 values like \'a01u800u82e1u800u82e00u800u82e005u800\' property p1323 which areu800 then linked tou800 uses theu800 newer mwu800u82ewikibase calls instead ofu800 directly using theu800 snaks formatpropertyvalues returns au800 table with theu800 p1323 values concatenated with \" \" sou800 weu800 have tou800 split them outu800 into au800 table inu800 order tou800 construct theu800 return string pu800u82egettavalue function frame local entu800 mwu800u82ewikibaseu82egetentity local props entu800 formatpropertyvalues \'p1323\' local outu800 local tu800 foru800 ku800 vu800 inu800 pairs props dou800 ifu800 ku800 \'value\' then tu800 mwu800u82etextu82esplit vu800 \"u8d88c \" foru800 k2u800 v2u800 inu800 pairs tu800 dou800 outu800 #outu800 1u800 \" http wwwu800u82eunifru82echu800 ifaa public entrypage ta98 20tree entity 20ta98 20en \" .. stringu82esubu800 v2u800 2u800 .. \" 20entity 20ta98 20enu82ehtmu800 \" .. v2u800 .. \" \" endu800 endu800 endu800 local retu800 tableu82econcat outu800 \" \" ifu800 #retu800 0u800 then retu800 \"invalid tau800\" endu800 return retu800 endu800 this isu800 used tou800 return anu800 image legend from wikidata image isu800 property p18u800 image legend isu800 property p2096 call asu800 #invoke wikidata getimagelegend lang idu800 returns parameter unless itu800 isu800 equal tou800 \"fetch_wikidata\" from item qidu800 expensive call ifu800 qidu800 isu800 omitted oru800 blank theu800 current article isu800 used notu800 anu800 expensive call ifu800 lang isu800 omitted itu800 uses theu800 local wiki language otherwise itu800 uses theu800 provided isou800 639u800 language code isou800 639u800 ranks areu800 \'preferred\' \'normal\' this returns theu800 label from theu800 first image with \'preferred\' rank oru800 theu800 label from theu800 first image with \'normal\' rank ifu800 preferred returns nothing ranks pu800u82egetimagelegend function frame look foru800 named parameter idu800; ifu800 itu800 itu800\'su800 blank make itu800 nilu800 local idu800 frameu82eargsu82eidu800 ifu800 idu800 andu800 #idu800 0u800 then idu800 nilu800 endu800 look foru800 named parameter lang itu800 should contain au800 twou800 character isou800 639u800 language code ifu800 itu800 itu800\'su800 blank fetch theu800 language ofu800 theu800 local wiki local lang frameu82eargsu82elang ifu800 notu800 lang oru800 #lang 2u800 then lang mwu800u82elanguageu82egetcontentlanguage .code endu800 first unnamed parameter isu800 theu800 local parameter ifu800 supplied local input_parm mwu800u82etextu82etrim frameu82eargs 1u800 oru800 \"\" ifu800 input_parm \"fetch_wikidata\" then local entu800 mwu800u82ewikibaseu82egetentityobject idu800 local imgs ifu800 entu800 andu800 entu800u82eclaims then imgs entu800u82eclaimsu82ep18u800 endu800 local imglbl ifu800 imgs then look foru800 anu800 image with \'preferred\' rank foru800 k1u800 v1u800 inu800 pairs imgs dou800 ifu800 v1u800u82erank \"preferred\" andu800 v1u800u82equalifiers andu800 v1u800u82equalifiersu82ep2096 then local imglbls v1u800u82equalifiersu82ep2096 foru800 k2u800 v2u800 inu800 pairs imglbls dou800 ifu800 v2u800u82edatavalueu82evalueu82elanguage lang then imglbl v2u800u82edatavalueu82evalueu82etext break endu800 endu800 endu800 endu800 ifu800 weu800 donu800\'tu800 find oneu800 look foru800 anu800 image with \'normal\' rank ifu800 notu800 imglbl then foru800 k1u800 v1u800 inu800 pairs imgs dou800 ifu800 v1u800u82erank \"normal\" andu800 v1u800u82equalifiers andu800 v1u800u82equalifiersu82ep2096 then local imglbls v1u800u82equalifiersu82ep2096 foru800 k2u800 v2u800 inu800 pairs imglbls dou800 ifu800 v2u800u82edatavalueu82evalueu82elanguage lang then imglbl v2u800u82edatavalueu82evalueu82etext break endu800 endu800 endu800 endu800 endu800 endu800 return imglbl else return input_parm endu800 endu800 this isu800 used tou800 getu800 theu800 qids ofu800 allu800 ofu800 theu800 values ofu800 au800 property asu800 au800 comma separated list ifu800 multiple values exist usage #invoke wikidata getpropertyids fetch_wikidata gettavalue usage #invoke wikidata getpropertyids qidu800 pu800u82egetpropertyids function frame local propertyid mwu800u82etextu82etrim frameu82eargs 1u800 oru800 \"\" local input_parm mwu800u82etextu82etrim frameu82eargs 2u800 oru800 \"\" canu800 take au800 named parameter qidu800 which isu800 theu800 wikidata idu800 foru800 theu800 article. this will notu800 normally beu800 used. local qidu800 frameu82eargsu82eqidu800 ifu800 qidu800 andu800 #qidu800 0u800 then qidu800 nilu800 endu800 ifu800 input_parm \"fetch_wikidata\" then local entity mwu800u82ewikibaseu82egetentityobject qidu800 local propclaims ifu800 entity andu800 entityu82eclaims then propclaims entityu82eclaims propertyid endu800 ifu800 propclaims then ifu800 wiki linked value collect theu800 qidu800 inu800 au800 table ifu800 propclaims 1u800 andu800 propclaims 1u800 .mainsnaku82esnaktype \"value\" andu800 propclaims 1u800 .mainsnaku82edatavalueu82etype \"wikibase entityid\" then local outu800 foru800 ku800 vu800 inu800 pairs propclaims dou800 outu800 #outu800 1u800 \"qu800\" .. vu800u82emainsnaku82edatavalueu82evalue \"numeric idu800\" endu800 return tableu82econcat outu800 \" \" else notu800 au800 wikibase entityid sou800 return empty return \"\" endu800 else nou800 claim sou800 return empty return \"\" endu800 else return input_parm endu800 endu800 returns theu800 page idu800 qu800... ofu800 theu800 current page oru800 nothing ofu800 theu800 page isu800 notu800 connected tou800 wikidata function pu800u82epageid frame local entity mwu800u82ewikibaseu82egetentityobject ifu800 notu800 entity then return nilu800 else return entityu82eidu800 endu800 endu800 function pu800u82eclaim frame local property frameu82eargs 1u800 oru800 \"\" local idu800 frameu82eargs \"idu800\" \"idu800\" must beu800 nilu800 asu800 access tou800 other wikidata objects isu800 disabled inu800 mediawiki configuration local qualifierid frameu82eargs \"qualifier\" local parameter frameu82eargs \"parameter\" local list frameu82eargs \"list\" local references frameu82eargs \"references\" local showerrors frameu82eargs \"showerrors\" local default frameu82eargs \"default\" ifu800 default then showerrors nilu800 endu800 getu800 wikidata entity local entity mwu800u82ewikibaseu82egetentityobject idu800 ifu800 notu800 entity then ifu800 showerrors then return printerror \"entity notu800 found\" else return default endu800 endu800 fetch theu800 first claim ofu800 satisfying theu800 given property local claims findclaims entity property ifu800 notu800 claims oru800 notu800 claims 1u800 then ifu800 showerrors then return printerror \"property notu800 found\" else return default endu800 endu800 getu800 initial sort indices local sortindices foru800 idxu800 inu800 pairs claims dou800 sortindices #sortindices 1u800 idxu800 endu800 sort byu800 claim rank local comparator function au800 bu800 local rankmap deprecated 2u800 normal 1u800 preferred 0u800 local ranka rankmap claims au800 .rank oru800 \"normal\" .. stringu82eformat \" 08du800\" au800 local rankb rankmap claims bu800 .rank oru800 \"normal\" .. stringu82eformat \" 08du800\" bu800 return ranka \"..mwu800u82edumpobject data ..\" \".. i18nu82ewarndump endu800 data data index oru800 data tonumber index ifu800 notu800 data then return i18nu82ewarndump endu800 iu800 iu800 1u800 endu800 endu800 return pu800 '),
(159, 'wikidata i18n', ' return '),
(160, 'yesno', ' function allowing foru800 consistent treatment ofu800 boolean like wikitext input. itu800 works similarly tou800 theu800 template yesno . return function valu800 default ifu800 your wiki uses nonu800 ascii characters foru800 anyu800 ofu800 \"yesu800\" \"nou800\" etcu800. youu800 should replace \"valu800 lower \" with \"mwu800u82eustringu82elower valu800 \" inu800 theu800 following line. valu800 type valu800 \'string\' andu800 mwu800u82eustringu82elower valu800 oru800 valu800 ifu800 valu800 nilu800 then return nilu800 elseif valu800 true oru800 valu800 \'yesu800 oru800 valu800 \'yu800\' oru800 valu800 \'true\' oru800 valu800 \'tu800\' oru800 valu800 \'onu800\' oru800 valu800 \'u8d8a8u8d984u8d987\' oru800 valu800 \'u8d8a2u8d8b1u8d987\' oru800 valu800 \'u8d8afu8d8b1u8d8b3u8d8aa\' oru800 valu800 \'u8d8b5u8d8adu8db8cu8d8ad\' oru800 valu800 \'u8d8b1u8d988u8d8b4u8d986\' oru800 tonumber valu800 1u800 then return true elseif valu800 false oru800 valu800 \'nou800\' oru800 valu800 \'nu800\' oru800 valu800 \'false\' oru800 valu800 \'fu800\' oru800 valu800 \'offu800\' oru800 valu800 \'u8d8aeu8db8cu8d8b1\' oru800 valu800 \'u8d986u8d987\' oru800 valu800 \'u8d8bau8d984u8d8b7\' oru800 valu800 \'u8d8a7u8d8b4u8d8aau8d8a8u8d8a7u8d987\' oru800 valu800 \'u8d8aeu8d8a7u8d985u8d988u8d8b4\' oru800 tonumber valu800 0u800 then return false else return default endu800 endu800 '),
(161, 'u8d8a7u8d984u8daafu8d988 u8d8b2u8d8a8u8d8a7u8d986u8e2808cu8d987u8d8a7u8db8c u8d988u8db8cu8daa9u8db8cu8e2808cu8d9beu8d8afu8db8cu8d8a7', ' return main function frame local data foru800 vu800 inu800 mwu800u82etextu82egsplit frameu82eargs 1u800 \' \' dou800 local tu800 mwu800u82etextu82esplit vu800 \' \' tableu82einsert data tu800 1u800 tonumber tu800 2u800 endu800 local result \' \' local before \"u8d8a8u8db8cu8d8b4 u8d8a7u8d8b2 \" local after \" u8d986u8d988u8d8b4u8d8aau8d8a7u8d8b1\" local index 1u800 foru800 iu800 vu800 inu800 ipairs 1000000 500000 250000 100000 dou800 result result .. \" \" .. before .. mwu800u82egetcontentlanguage formatnum vu800 .. after .. \' \' .. \' nu800\' while data index nilu800 andu800 data index 2u800 vu800 dou800 local lang data index 1u800 ifu800 lang \'cebu800\' oru800 lang \'waru800\' oru800 lang \'minu800\' then asu800 enwiki seems only macrolanguages elseif lang \'fau800\' then result result .. \"*   u8d988u8db8cu8daa9u8db8cu8e2808cu8d9beu8d8afu8db8cu8d8a7u8db8c u8d981u8d8a7u8d8b1u8d8b3u8db8c u8d981u8d8a7u8d8b1u8d8b3u8db8c   nu800\" elseif lang \'simple\' then result result .. \'* simple \' .. mwu800u82elanguageu82efetchlanguagename lang .. \' \' .. \' u8d988u8db8cu8daa9u8db8cu8e2808cu8d9beu8d8afu8db8cu8d8a7u8db8c u8d8a7u8d986u8daafu8d984u8db8cu8d8b3u8db8c u8d8b3u8d8a7u8d8afu8d987 u8d8a7u8d986u8daafu8d984u8db8cu8d8b3u8db8c u8d8b3u8d8a7u8d8afu8d987 nu800\' elseif lang \'shu800\' then result result .. \'* shu800 srpskohrvatski \' .. \' u8d8b2u8d8a8u8d8a7u8d986 u8d8b5u8d8b1u8d8a8u8db8cu8e2808cu8daa9u8d8b1u8d988u8d8a7u8d8aau8db8c u8d8b5u8d8b1u8d8a8u8db8cu8e2808cu8daa9u8d8b1u8d988u8d8a7u8d8aau8db8c nu800\' else local persianname mwu800u82elanguageu82efetchlanguagename lang \"fau800\" ifu800 lang \'azbu800\' then persianname \'u8d8aau8d8b1u8daa9u8db8c u8d8a2u8d8b0u8d8b1u8d8a8u8d8a7u8db8cu8d8acu8d8a7u8d986u8db8c\' endu800 ifu800 lang \'nou800\' then persianname \'u8d986u8d8b1u8d988u8da98u8db8c\' endu800 result result .. \'* \' .. lang.. \' \' .. mwu800u82elanguageu82efetchlanguagename lang .. \' \' .. \' \' .. \' \' .. \' u8d8b2u8d8a8u8d8a7u8d986 \' .. persianname .. \' \' .. persianname .. \' nu800\' endu800 index index 1u800 endu800 result result .. \' \' endu800 return result .. \' \' endu800 ');
INSERT INTO `searchindex` (`si_page`, `si_title`, `si_text`) VALUES
(162, 'abusefilter warning twinkle', ' file police manu800 twinkle headu82esvgu800 200px left  u8d8a7u8d8aeu8d8b7u8d8a7u8d8b1 u8d8aau8d988u8db8cu8d986u8daa9u8d984  u8d8aau8d8bau8db8cu8db8cu8d8b1u8d8a7u8d8aa u8d8b4u8d985u8d8a7u8d88c u8d8aau8d988u8db8cu8d986u8daa9u8d984 u8d8b1u8d8a7 u8d8a7u8d8b2 u8daa9u8d8a7u8d8b1  u8d985u8db8cu8e2808cu8d8a7u8d986u8d8afu8d8a7u8d8b2u8d8af    u8d8b4u8d985u8d8a7 u8d8a8u8d8a7u8db8cu8d8af u8db8cu8daa9u8db8c u8d8a7u8d8b2 u8d985u8d988u8d8a7u8d8b1u8d8af u8d9beu8d8a7u8db8cu8db8cu8d986 u8d8b1u8d8a7 u8d8b1u8d8b9u8d8a7u8db8cu8d8aa u8d986u8d985u8d8a7u8db8cu8db8cu8d8af.  *u8d8afu8d8b1 u8d988u8db8cu8daa9u8db8cu8e2808cu8d9beu8d8afu8db8cu8d8a7 u8d8afu8d8b1u8d8aeu8d988u8d8a7u8d8b3u8d8aa u8d985u8d8adu8d8a7u8d981u8d8b8u8d8aa u8d8b5u8d981u8d8adu8d987 u8d8adu8d8aau8d985u8d8a7u8d98b u8d8b9u8d986u8d988u8d8a7u8d986u8e2808cu8d987u8d8a7u8db8c u8d8b2u8db8cu8d8b1 u8d988u8d8acu8d988u8d8af u8d8afu8d8a7u8d8b4u8d8aau8d987 u8d8a8u8d8a7u8d8b4u8d986u8d8af u8d8a8u8d987 u8d8aau8d8b9u8d8afu8d8a7u8d8af u8d8b9u8d984u8d8a7u8d985u8d8aau8e2808cu8d987u8d8a7u8db8c u8d985u8d8b3u8d8a7u8d988u8db8c u8d8afu8d982u8d8aa u8d981u8d8b1u8d985u8d8a7u8db8cu8db8cu8d8af u8d8afu8d8b1u8d8aeu8d988u8d8a7u8d8b3u8d8aau8e2808cu8d987u8d8a7u8db8c u8d985u8d8adu8d8a7u8d981u8d8b8u8d8aa u8d8afu8d8b1u8d8aeu8d988u8d8a7u8d8b3u8d8aau8e2808cu8d987u8d8a7u8db8c u8d985u8d8adu8d8a7u8d981u8d8b8u8d8aa u8d8afu8d8b1u8d8aeu8d988u8d8a7u8d8b3u8d8aau8e2808cu8d987u8d8a7u8db8c u8d985u8d8adu8d8a7u8d981u8d8b8u8d8aa u8d8afu8d8b1u8d8aeu8d988u8d8a7u8d8b3u8d8aau8e2808cu8d987u8d8a7u8db8c u8d8aeu8d8b1u8d988u8d8ac u8d8a7u8d8b2 u8d985u8d8adu8d8a7u8d981u8d8b8u8d8aa *u8d8afu8d8b1 u8d8a8u8d8a7u8d984u8d8a7u8db8c u8d988u8db8cu8daa9u8db8cu8e2808cu8d9beu8d8afu8db8cu8d8a7 u8d8aau8d8a7u8d8a8u8d984u8d988u8db8c u8d8a7u8d8b9u8d984u8d8a7u8d986u8d8a7u8d8aa u8d985u8d8afu8db8cu8d8b1u8d8a7u8d986 u8d986u8d8a7u8d985u8e2808cu8d987u8d8a7u8db8c u8daa9u8d8a7u8d8b1u8d8a8u8d8b1u8db8c u8d986u8d8a7u8d985u8d986u8d8a7u8d8b3u8d8a8 u8d8afu8d8b1 u8d8b2u8db8cu8d8b1 u8d8a7u8d984u8daafu8d988u8d987u8d8a7 u8d8a7u8db8cu8d986 u8d8a8u8d8aeu8d8b4 u8d988u8d8acu8d988u8d8af u8d8afu8d8a7u8d8b4u8d8aau8d987 u8d8a8u8d8a7u8d8b4u8d8af u8d8a8u8d987 u8d987u8d985u8db8cu8d986 u8d8b4u8daa9u8d984 u8d8afu8d8b1 u8d8b3u8d987 u8d8aeu8d8b7 u8d986u8d8a7u8d985 u8d8b1u8d8a7 u8d8b2u8db8cu8d8b1 u8d8a7u8db8cu8d986 u8d8aeu8d8b7 u8d8a8u8db8cu8d8a7u8d981u8d8b2u8d8a7u8db8cu8db8cu8d8af. *u8d8afu8d8b1 u8d988u8db8cu8daa9u8db8cu8e2808cu8d9beu8d8afu8db8cu8d8a7 u8d986u8d8b8u8d8b1u8d8aeu8d988u8d8a7u8d987u8db8c u8d8a8u8d8b1u8d8a7u8db8c u8d8adu8d8b0u8d981 u8d8afu8d8b1 u8d8a8u8d8a7u8d984u8d8a7u8db8c u8d8b5u8d981u8d8adu8d987 u8d8afu8d8b1 u8d8b2u8db8cu8d8b1 u8d8a7u8d984u8daafu8d988u8d987u8d8a7 u8d8a7u8db8cu8d986 u8d8b9u8d984u8d8a7u8d985u8d8aa u8d988u8d8acu8d988u8d8af u8d8afu8d8a7u8d8b4u8d8aau8d987 u8d8a8u8d8a7u8d8b4u8d8af. u8d8aau8d988u8db8cu8d986u8daa9u8d984 u8d9beu8d8a7u8d984u8d8a7u8db8cu8d987u8e2808cu8d8a7u8db8c u8daa9u8d987 u8d8acu8d984u8d988u8db8c u8d8b4u8d985u8d8a7 u8d8b1u8d8a7 u8daafu8d8b1u8d981u8d8aa u8d8a7u8db8cu8d986 u8d8a8u8d988u8d8af 1u800 '),
(163, 'citoid template type mapu800u82ejson', ' \"book\" \"u8db8cu8d8a7u8d8afu8daa9u8d8b1u8d8af u8daa9u8d8aau8d8a7u8d8a8\" \"booksection\" \"u8db8cu8d8a7u8d8afu8daa9u8d8b1u8d8af u8daa9u8d8aau8d8a7u8d8a8\" \"journalarticle\" \"cite journal\" \"magazinearticle\" \"u8db8cu8d8a7u8d8afu8daa9u8d8b1u8d8af u8d8aeu8d8a8u8d8b1\" \"newspaperarticle\" \"u8db8cu8d8a7u8d8afu8daa9u8d8b1u8d8af u8d8aeu8d8a8u8d8b1\" \"thesis\" \"cite journal\" \"case\" \"cite journal\" \"letter\" \"citation\" \"manuscript\" \"citation\" \"interview\" \"citation\" \"film\" \"citation\" \"artwork\" \"citation\" \"webpage\" \"u8db8cu8d8a7u8d8afu8daa9u8d8b1u8d8af u8d988u8d8a8\" \"report\" \"cite journal\" \"bill\" \"citation\" \"hearing\" \"citation\" \"patent\" \"citation\" \"statute\" \"citation\" \"email\" \"u8db8cu8d8a7u8d8afu8daa9u8d8b1u8d8af u8d988u8d8a8\" \"mapu800\" \"citation\" \"blogpost\" \"u8db8cu8d8a7u8d8afu8daa9u8d8b1u8d8af u8d988u8d8a8\" \"instantmessage\" \"citation\" \"forumpost\" \"u8db8cu8d8a7u8d8afu8daa9u8d8b1u8d8af u8d988u8d8a8\" \"audiorecording\" \"citation\" \"presentation\" \"cite journal\" \"videorecording\" \"citation\" \"tvbroadcast\" \"citation\" \"radiobroadcast\" \"citation\" \"podcast\" \"citation\" \"computerprogram\" \"citation\" \"conferencepaper\" \"cite journal\" \"document\" \"citation\" \"encyclopediaarticle\" \"cite journal\" \"dictionaryentry\" \"cite journal\" ');
INSERT INTO `searchindex` (`si_page`, `si_title`, `si_text`) VALUES
(164, 'commonu82ecssu800', ' * begin font style * font face font family \'shabnam\'; font style normal; font weight 400u800; font display swap; srcu800 urlu800 \' wu800 resources fonts iransansxfanum regularu82ewoff2\' format \'woff2\' urlu800 \' wu800 resources fonts iransansxfanum regularu82ewoff\' format \'woff\' ; body font family iransansxfanum tahoma \'noto serif\' \'droid arabic naskh\' \'dejavu sans serif important; #contentu82emwu800 body h1u800 #contentu82emwu800 body h2u800 #contentu82emwu800 body #firstheading #contentu82emwu800 body .mwu800 editsection .mwu800 body .mwu800 editsection like #contentu82emwu800 body #tocu800 h2u800 #contentu82emwu800 body .tocu800 h2u800 .vector sticky header context baru800 primary #template documentation #documentation meta data font family shabnam tahoma \'noto serif\' \'droid arabic naskh\' \'dejavu sans serif important; line height 1u800u82e6u800; textarea font family iransansxfanum \'courier newu800\' monospace; .mwu800 body content font kerning auto; font size 16px; line height 2u800u82e0u800; * aceu800 editor nowu800 supports rtlu800 editing butu800 au800 monospace font with arabic should beu800 setu800 foru800 correct functionality * .ace_editor font family \'courier newu800\' monospace important; * force these tou800 useu800 inherited font configuration * .uiu800 widget .uiu800 widget * button input select optgroup font family inherit; * endu800 * dfnu800 font style inherit; * reset default styling foru800 * supu800 subu800 line height 1emu800; * reduce line height foru800 andu800 * * endu800 font style * * begin custom style * #sitesub display block; font size 0u800u82e8125rem; .mwu800 redirectedfrom display none; .hatnote padding 5pxu800 7pxu800; color #54595d; font size 0u800u82e8125rem; overflow hidden; .mwu800 parser output .hatnote font style normal; * minu800 dist foru800 h2u800 header with samim font u8d8a3 * .mwu800 body content h2u800 padding 0u800u82e2emu800 0u800 0u800 0u800; .vector menu portal .vector menu heading .vector menu portal .vector menu content liu800 line height 1u800u82e3u800; font size 0u800u82e85em; * endu800 custom style * * begin main page style * .mainpage display flex; flex direction rowu800; .mainright display flex; flex direction column; flex 75u800 ; margin 6pxu800 4pxu800; .mainleft boxu800 shadow 0u800 0u800 0u800u82e3rem #999u800; border radius 0u800u82e2rem; padding 1u800u82e2rem; flex 25u800 ; margin 6pxu800 4pxu800; .selectedarticle boxu800 shadow 0u800 0u800 0u800u82e3rem #999u800; border radius 0u800u82e2rem; padding 1u800u82e2rem; margin 4pxu800 0pxu800; .helpbox line height 2emu800; boxu800 shadow 0u800 0u800 0u800u82e3rem #999u800; border radius 0u800u82e2rem; padding 1u800u82e2rem; margin bottom 1u800u82e6rem; .boxheader padding 10px; border radius 2pxu800; margin 0u800 0u800 20px 0u800; boxu800 shadow 0u800 0u800 0u800u82e3rem #999u800; .boxheader span padding right 45px; font 1u800u82e03em samim; position relative; .boxtitle padding 5pxu800; border radius 2pxu800; margin 15px 0u800 20px 0u800; border bottom solid 0u800u82e2rem #bdd8fb; .selectedarticle .boxheader span before .boxheader span before .toparticles .boxheader span before .boxheader span before width 43px; height 43px; position absolute; right 1pxu800; topu800 9pxu800; content \" \"; .selectedarticle .boxheader span before background urlu800 \' wu800 resources assets favoriteu82epngu800\' nou800 repeat center center; .toparticles .boxheader span before background urlu800 \' wu800 resources assets topu800u82epngu800\' nou800 repeat center center; .toparticles width 100u800 ; height auto; margin bottom 10px; .readmorebutton boxu800 shadow 0u800 0u800 0u800u82e3rem #999u800; display inline block; minu800 width 4emu800; maxu800 width 28u800u82e75em; padding 0u800u82e546875em 1emu800; line height 1u800u82e286u800; boxu800 sizing border boxu800; vertical align middle; text align center; font weight bold; cursor pointer; border radius 0u800u82e2rem; margin 5pxu800 0u800 0u800 0u800; font family inherit; font size 1emu800; * endu800 main page style * * begin persian wikipedia style * * main page fixes * bodyu82epage u8d8a7u8d985u8d8a7u8d985u8d8aau8e2808cu8d9beu8d8afu8db8cu8d8a7_u8d8b5u8d981u8d8adu8d987_u8d8aau8d985u8d8b1u8db8cu8d986 #cau800 edit bodyu82epage u8d8a7u8d985u8d8a7u8d985u8d8aau8e2808cu8d9beu8d8afu8db8cu8d8a7_u8d8a2u8d8b4u8d986u8d8a7u8db8cu8db8c #cau800 edit border 1pxu800 dotted #36cu800; bodyu82epage u8d8a7u8d985u8d8a7u8d985u8d8aau8e2808cu8d9beu8d8afu8db8cu8d8a7_u8d8b5u8d981u8d8adu8d987_u8d8aau8d985u8d8b1u8db8cu8d986 #cau800 edit hover bodyu82epage u8d8a7u8d985u8d8a7u8d985u8d8aau8e2808cu8d9beu8d8afu8db8cu8d8a7_u8d8a2u8d8b4u8d986u8d8a7u8db8cu8db8c #cau800 edit hover background none repeat scroll 0u800 0u800 white; border color transparent; bodyu82epage u8d8b5u8d981u8d8adu8d987u8d994_u8d8a7u8d8b5u8d984u8db8c #mpu800 topbanner clear both; bodyu82epage u8d8b5u8d981u8d8adu8d987u8d994_u8d8a7u8d8b5u8d984u8db8c #cau800 delete bodyu82epage u8d8b5u8d981u8d8adu8d987u8d994_u8d8a7u8d8b5u8d984u8db8c #deleteconfirm bodyu82epage u8d8b5u8d981u8d8adu8d987u8d994_u8d8a7u8d8b5u8d984u8db8c #tu800 cite bodyu82epage u8d8b5u8d981u8d8adu8d987u8d994_u8d8a7u8d8b5u8d984u8db8c #lastmod bodyu82epage u8d8b5u8d981u8d8adu8d987u8d994_u8d8a7u8d8b5u8d984u8db8c #sitesub bodyu82epage u8d8b5u8d981u8d8adu8d987u8d994_u8d8a7u8d8b5u8d984u8db8c #contentsub bodyu82epage u8d8b5u8d981u8d8adu8d987u8d994_u8d8a7u8d8b5u8d984u8db8c #catlinks bodyu82epage u8d8b5u8d981u8d8adu8d987u8d994_u8d8a7u8d8b5u8d984u8db8c h1u800u82efirstheading bodyu82epage u8d8b5u8d981u8d8adu8d987u8d994_u8d8a7u8d8b5u8d984u8db8c #centralnotice bodyu82epage u8d8afu8d8b1u8daafu8d8a7u8d987_u8d988u8d8b1u8d988u8d8afu8db8c #sitesub bodyu82epage u8d8afu8d8b1u8daafu8d8a7u8d987_u8d988u8d8b1u8d988u8d8afu8db8c h1u800u82efirstheading display none important; bodyu82epage u8d8b5u8d981u8d8adu8d987u8d994_u8d8a7u8d8b5u8d984u8db8c #cau800 history bodyu82epage u8d8b5u8d981u8d8adu8d987u8d994_u8d8a7u8d8b5u8d984u8db8c #pagehistory display none; * u8d8aau8d8b1u8d8a7u8d8b2 u8d8b1u8d8a7u8d8b3u8d8aa u8d8a8u8d8b1u8d8a7u8db8c u8d9beu8db8cu8d988u8d986u8d8af u8c2abu8d988u8db8cu8d8b1u8d8a7u8db8cu8d8b4 u8d9beu8db8cu8d988u8d986u8d8afu8d987u8d8a7u8db8c u8d985u8db8cu8d8a7u8d986u8e2808cu8d988u8db8cu8daa9u8db8cu8c2bb u8d8afu8d8b1 u8d986u8d988u8d8a7u8d8b1 u8daa9u8d986u8d8a7u8d8b1u8db8c u8d9beu8d988u8d8b3u8d8aau8d987u8d994 u8d988u8daa9u8d8aau8d988u8d8b1 u8d8acu8d8afu8db8cu8d8af * .wbu800 langlinks link text align right; * make theu800 list ofu800 references inu800 template reflist smaller * .references small font size 90u800 ; * highlight clicked reference inu800 blue tou800 help navigation * olu800u82ereferences liu800 target supu800u82ereference target spanu82ecitation target cite target background color #ecf0fa; * ensure refs inu800 table headers andu800 theu800 like aren\'tu800 bold oru800 italic * supu800u82ereference font weight normal; font style normal; * styling foru800 citations * spanu82ecitation cite word wrap break word; * ifu800 there isu800 anu800 inline link tou800 au800 full citation theu800 full citation will turn blue when theu800 inline link isu800 clicked * cite target background color #ecf0fa; * foru800 linked citation numbers andu800 document idsu800 where theu800 number need notu800 beu800 shown onu800 au800 screen oru800 au800 handheld butu800 should beu800 included inu800 theu800 printed version * media screen handheld projection cite *.printonly display none; * style foru800 horizontal lists separator following item * .skin monobook .hlist dlu800 .skin modern .hlist dlu800 .skin vector .hlist dlu800 line height 1u800u82e5emu800; * style foru800 horizontal lists separator following item . ie8u800 specific classes areu800 assigned inu800 mediawiki commonu82ejsu800 iefixesu82ejsu800 . source mediawikiu82eorgu800 wiki snippets horizontal_lists revision 5u800 2014 02u800 24u800 author user edokter * .hlist dlu800 .hlist olu800 .hlist ulu800 margin 0u800; padding 0u800; * display list items inline * .hlist ddu800 .hlist dtu800 .hlist liu800 margin 0u800; display inline; * display nested lists inline * .hlistu82einline .hlistu82einline dlu800 .hlistu82einline olu800 .hlistu82einline ulu800 .hlist dlu800 dlu800 .hlist dlu800 olu800 .hlist dlu800 ulu800 .hlist olu800 dlu800 .hlist olu800 olu800 .hlist olu800 ulu800 .hlist ulu800 dlu800 .hlist ulu800 olu800 .hlist ulu800 ulu800 display inline; * generate interpuncts * .hlist dtu800 after content \" \"; .hlist ddu800 after .hlist liu800 after content \" u8e280a2 \"; font family tahoma \'noto serif\' \'droid arabic naskh\' \'dejavu sans serif important; .hlist ddu800 last child after .hlist dtu800 last child after .hlist liu800 last child after content none; * foru800 ie8u800 * .hlist ddu800u82ehlist last child after .hlist dtu800u82ehlist last child after .hlist liu800u82ehlist last child after content none; * addu800 parentheses around nested lists * .hlist ddu800 ddu800 first child before .hlist ddu800 dtu800 first child before .hlist ddu800 liu800 first child before .hlist dtu800 ddu800 first child before .hlist dtu800 dtu800 first child before .hlist dtu800 liu800 first child before .hlist liu800 ddu800 first child before .hlist liu800 dtu800 first child before .hlist liu800 liu800 first child before content \" \"; font weight normal; .hlist ddu800 ddu800 last child after .hlist ddu800 dtu800 last child after .hlist ddu800 liu800 last child after .hlist dtu800 ddu800 last child after .hlist dtu800 dtu800 last child after .hlist dtu800 liu800 last child after .hlist liu800 ddu800 last child after .hlist liu800 dtu800 last child after .hlist liu800 liu800 last child after content \" \"; font weight normal; * foru800 ie8u800 * .hlist ddu800 ddu800u82ehlist last child after .hlist ddu800 dtu800u82ehlist last child after .hlist ddu800 liu800u82ehlist last child after .hlist dtu800 ddu800u82ehlist last child after .hlist dtu800 dtu800u82ehlist last child after .hlist dtu800 liu800u82ehlist last child after .hlist liu800 ddu800u82ehlist last child after .hlist liu800 dtu800u82ehlist last child after .hlist liu800 liu800u82ehlist last child after content \" \"; font weight normal; * putu800 ordinals inu800 front ofu800 ordered list items * .hlist olu800 counter reset listitem; .hlist olu800 liu800 counter increment listitem; .hlist olu800 liu800 before content \" \" counter listitem \" \"; content \" \" counter listitem mozu800 persian \" \"; content \" \" counter listitem persian \" \"; white space nowrap; .hlist ddu800 olu800 liu800 first child before .hlist dtu800 olu800 liu800 first child before .hlist liu800 olu800 liu800 first child before content \" \" counter listitem \" \"; content \" \" counter listitem mozu800 persian \" \"; content \" \" counter listitem persian \" \"; * u8d981u8d987u8d8b1u8d8b3u8d8aa u8d8a8u8d8afu8d988u8d986 u8daafu8d984u8d988u8d984u8d987 * .plainlist ulu800 line height inherit; list style none none; margin 0u800; .plainlist ulu800 liu800 margin bottom 0u800; * normal font styling foru800 table rowu800 headers with scope \"rowu800\" tagu800 * .wikitableu82eplainrowheaders thu800 scope rowu800 font weight normal; * noflip * text align right; * lists inu800 data cells areu800 always left aligned * .wikitable tdu800 ulu800 .wikitable tdu800 olu800 .wikitable tdu800 dlu800 * noflip * text align right; * ...unless they also useu800 theu800 hlist class * .wikitableu82ehlist tdu800 ulu800 .wikitableu82ehlist tdu800 olu800 .wikitableu82ehlist tdu800 dlu800 text align inherit; * default style foru800 navigation boxes * .navbox * navbox container style * boxu800 sizing border boxu800; border 1pxu800 solid #a2a9b1; width 100u800 ; margin auto; clear both; font size 88u800 ; text align center; padding 1pxu800; .navbox inner .navbox subgroup width 100u800 ; .navbox group .navbox title .navbox abovebelow padding 0u800u82e25em 1emu800; * title group andu800 above below styles * line height 1u800u82e5emu800; text align center; thu800u82enavbox group * group style * white space nowrap; * noflip * text align right; .navbox .navbox subgroup background #f8f9fa; * background color * .navbox list line height 1u800u82e8emu800; border color #f8f9fa; * must match background color * .navbox thu800 .navbox title background #b3ccff; * level 1u800 color * .navbox abovebelow thu800u82enavbox group .navbox subgroup .navbox title background #dbe7ff; * level 2u800 color * .navbox subgroup .navbox group .navbox subgroup .navbox abovebelow background #e5edff; * level 3u800 color * .navbox even background #f8f9fa; * even rowu800 striping * .navbox oddu800 background transparent; * oddu800 rowu800 striping * tableu82enavbox tableu82enavbox * single pixel border between adjacent navboxes * margin topu800 1pxu800; * doesn\'tu800 work foru800 ie6u800 butu800 that that\'su800 okay * .navbox .hlist tdu800 dlu800 .navbox .hlist tdu800 olu800 .navbox .hlist tdu800 ulu800 .navbox tdu800u82ehlist dlu800 .navbox tdu800u82ehlist olu800 .navbox tdu800u82ehlist ulu800 padding 0u800u82e125em 0u800; * adjust hlist padding inu800 navboxes * olu800 tableu82enavbox ulu800 tableu82enavbox margin topu800 0u800u82e5emu800; * prevent lists from clinging tou800 navboxes * * rtlu800 fixu800 foru800 navbox list bullet lists; seeu800 special permalink 24864265#u8d8aeu8d8b7u8d8a7u8db8c u8d8b8u8d8a7u8d987u8d8b1u8db8c . * .navbox list liu800 unicode bidi isolate; * default styling foru800 navbar template * .navbar display inline; font size 88u800 ; font weight normal; .navbar ulu800 display inline; white space nowrap; .navbar liu800 word spacing 0u800u82e125em; .navbaru82emini liu800 * span isu800 removed * font size xxu800 small; .nvu800 talk au800 color #002bb8; * navbar styling when nested inu800 infobox andu800 navbox * .infobox .navbar font size 100u800 ; .navbox .navbar display block; font size 100u800 ; .navbox title .navbar * noflip * float right; * noflip * text align right; * noflip * margin left 0u800u82e5emu800; width 6emu800; * \'show\' \'hide\' buttons created dynamically byu800 theu800 collapsibletables javascript inu800 mediawiki commonu82ejsu800 areu800 styled here sou800 they canu800 beu800 customised. * .collapsebutton * noflip * float left; font weight normal; * noflip * margin right 0u800u82e5emu800; * noflip * text align left; width auto; * inu800 navboxes theu800 show hide button balances theu800 vu8c2b7du8c2b7e links from template navbar sou800 they need tou800 beu800 theu800 same width. * .navbox .collapsebutton width 6emu800; * styling foru800 jquery makecollapsible matching that ofu800 collapsebutton * .mwu800 parser output .mwu800 collapsible toggle font weight normal; * noflip * text align left; padding right 0u800u82e2emu800; padding left 0u800u82e2emu800; .mwu800 collapsible leftside toggle .mwu800 collapsible toggle * noflip * float right; * noflip * text align right; * infobox template style * .infobox border 1pxu800 solid #a2a9b1; border spacing 3pxu800; background color #f8f9fa; color black; * noflip * margin 0u800u82e5emu800 1emu800 0u800u82e5emu800 0u800; padding 0u800u82e2emu800; * noflip * float left; * noflip * clear left; font size 88u800 ; line height 1u800u82e5emu800; width 22em; * notu800 strictly certain these styles areu800 necessary * just replicating theu800 module faithfully * .infobox subbox padding 0u800; border none; margin 3pxu800; width auto; minu800 width 100u800 ; font size 100u800 ; clear none; float none; background color transparent; .infobox header .infobox label .infobox above .infobox full data .infobox data .infobox below .infobox subheader .infobox image .infobox navbar * remove element declaration when both au800 infobox3cols isu800 migrated andu800 * bu800 when every .infobox thing isu800 using theu800 standard module templates * .infobox thu800 .infobox tdu800 vertical align topu800; .infobox label .infobox data * remove element declaration when both au800 infobox3cols isu800 migrated andu800 * bu800 when every .infobox thing isu800 using theu800 standard module templates * .infobox thu800 .infobox tdu800 * noflip * text align right; * remove .infobox from below newu800 class names when live * .infobox .infobox above .infobox .infobox title * todo remove caption line when class isu800 live * .infobox caption font size 125u800 ; font weight bold; text align center; padding 5pxu800 0u800; .infobox caption * todo remove caption line when class isu800 live * .infobox title padding 0u800u82e2emu800; .infobox .infobox header .infobox .infobox subheader .infobox .infobox image .infobox .infobox full data .infobox .infobox below text align center; .infobox .infobox navbar text align left; .infoboxu82ebordered border collapse collapse; * todo split definitions tou800 appropriate class names when live from html element * .infoboxu82ebordered tdu800 .infoboxu82ebordered thu800 border 1pxu800 solid #a2a9b1; * todo split definitions tou800 appropriate class names when live from html element * .infoboxu82ebordered .borderless tdu800 .infoboxu82ebordered .borderless thu800 border 0u800; .infoboxu82esisterproject width 20em; font size 90u800 ; * styles foru800 bordered infobox with merged rows * * todo split definitions tou800 appropriate class names when live from html element * .infoboxu82ebordered .mergedtoprow tdu800 .infoboxu82ebordered .mergedtoprow thu800 border 0u800; border topu800 1pxu800 solid #a2a9b1; * noflip * border left 1pxu800 solid #a2a9b1; * todo split definitions tou800 appropriate class names when live from html element * .infoboxu82ebordered .mergedrow tdu800 .infoboxu82ebordered .mergedrow thu800 border 0u800; * noflip * border left 1pxu800 solid #a2a9b1; * styles foru800 geography infoboxes egu800 countries country subdivisions cities etcu800. * .infoboxu82egeography border collapse collapse; line height 1u800u82e2emu800; font size 90u800 ; * todo split definitions tou800 appropriate class names when live from html element * .infoboxu82egeography tdu800 .infoboxu82egeography thu800 border topu800 1pxu800 solid #a2a9b1; padding 0u800u82e4emu800 0u800u82e6emu800 0u800u82e4emu800 0u800u82e6emu800; * todo split definitions tou800 appropriate class names when live from html element * .infoboxu82egeography .mergedtoprow tdu800 .infoboxu82egeography .mergedtoprow thu800 border topu800 1pxu800 solid #a2a9b1; padding 0u800u82e4emu800 0u800u82e6emu800 0u800u82e2emu800 0u800u82e6emu800; * todo split definitions tou800 appropriate class names when live from html element * .infoboxu82egeography .mergedrow tdu800 .infoboxu82egeography .mergedrow thu800 border 0u800; padding 0u800 0u800u82e6emu800 0u800u82e2emu800 0u800u82e6emu800; * todo split definitions tou800 appropriate class names when live from html element * .infoboxu82egeography .mergedbottomrow tdu800 .infoboxu82egeography .mergedbottomrow thu800 border topu800 0u800; border bottom 1pxu800 solid #a2a9b1; padding 0u800 0u800u82e6emu800 0u800u82e4emu800 0u800u82e6emu800; * todo split definitions tou800 appropriate class names when live from html element * .infoboxu82egeography .maptable tdu800 .infoboxu82egeography .maptable thu800 border 0u800; padding 0u800; * style foru800 \"notices\" * .notice margin 1emu800; padding 0u800u82e2emu800; #disambig border topu800 1pxu800 solid #c8ccd1; border bottom 1pxu800 solid #c8ccd1; .notice text .toggle boxu800 .redu800 button .goal divu800u82eredu800 button divu800u82esitenoticesmall divu800#sitenotice font family inherit; divu800u82esitenoticesmall font size 15pt; * persondata andu800 other future metadata * tableu82einchi * temporary * tableu82epersondata border 1pxu800 solid #a2a9b1; display none; speak none; .inchi label * temporary * .persondata label color #a2a9b1; * icons foru800 medialist templates template listen template multi listen_start template video template multi video_start * divu800u82elistenlist background urlu800 \" uploadu82ewikimediau82eorgu800 wikipedia commons 3u800 3fu800 gnome_speakernotes_30pxu82epngu800\" ; * noflip * padding right 40px; divu800u82evideolist divu800u82emultivideolist background urlu800 \" uploadu82ewikimediau82eorgu800 wikipedia commons thumb 2u800 20u800 tango video xu800 genericu82epngu800 40px tango video xu800 genericu82epngu800\" ; padding right 50px; * change theu800 external link icon tou800 anu800 adobe icon foru800 allu800 pdfu800 files inu800 browsers that support these cssu800 selectors like mozilla andu800 opera * .mwu800 body au800 href \".pdfu800\" .external .mwu800 body au800 href* \".pdfu800 \" .external .mwu800 body au800 href* \".pdfu800#\" .external .mwu800 body au800 href \".pdfu800\" .external .mwu800 body au800 href* \".pdfu800 \" .external .mwu800 body au800 href* \".pdfu800#\" .external divu800#mw_content au800 href \".pdfu800\" .external divu800#mw_content au800 href* \".pdfu800 \" .external divu800#mw_content au800 href* \".pdfu800#\" .external divu800#mw_content au800 href \".pdfu800\" .external divu800#mw_content au800 href* \".pdfu800 \" .external divu800#mw_content au800 href* \".pdfu800#\" .external background urlu800 \" uploadu82ewikimediau82eorgu800 wikipedia commons 2u800 23u800 icons mini file_acrobatu82egifu800\" nou800 repeat left; * noflip * padding left 18px; * change theu800 external link icon tou800 anu800 adobe icon anywhere theu800 pdflink class * * isu800 used notably template pdflink . this works inu800 ieu800 unlike theu800 above. * spanu82epdflink au800 background urlu800 \" uploadu82ewikimediau82eorgu800 wikipedia commons 2u800 23u800 icons mini file_acrobatu82egifu800\" center left nou800 repeat important; padding left 18px important; spanu82egeolink au800 background urlu800 uploadu82ewikimediau82eorgu800 wikipedia enu800 au800 a7u800 monobook globeu82epngu800 center left nou800 repeat important; padding left 11px important; * content inu800 columns with cssu800 instead ofu800 tables template columns * divu800u82ecolumns 2u800 divu800u82ecolumn * noflip * float right; width 50u800 ; minu800 width 300px; divu800u82ecolumns 3u800 divu800u82ecolumn * noflip * float right; width 33u800u82e3u800 ; minu800 width 200px; divu800u82ecolumns 4u800 divu800u82ecolumn * noflip * float right; width 25u800 ; minu800 width 150px; divu800u82ecolumns 5u800 divu800u82ecolumn * noflip * float right; width 20u800 ; minu800 width 120px; *addu800 formatting tou800 make sure that \"external references\" from template refu800 dou800 notu800 getu800 urlu800 expansion notu800 even when printed. theu800 mechanism upu800 tou800 mediawiki 1u800u82e4u800 wasu800 that theu800 html code contained au800 span following theu800 anchor au800; this span hadu800 theu800 class \"urlexpansion\" which wasu800 notu800 displayed onu800 screen butu800 wasu800 shown when theu800 medium wasu800 \"print\". theu800 rules below ensure au800 that there isu800 nou800 extra padding tou800 theu800 left ofu800 theu800 anchor displayed asu800 \" \" bu800 that there isu800 nou800 \"external link arrow\" foru800 theu800 link andu800 cu800 that this span ofu800 class \"urlexpansion\" isu800 never shown. * .plainlinksneverexpand background none important; padding 0u800 important; .plainlinksneverexpand .urlexpansion display none important; * make sure that extu800 links displayed within \"plainlinksneverexpand\" donu800\'tu800 getu800 theu800 arrow... * .plainlinksneverexpand au800 background none important; padding 0u800 important; * messagebox templates * .messagebox border 1pxu800 solid #a2a9b1; background color #f8f9fa; width 80u800 ; margin 0u800 auto 1emu800 auto; padding .2emu800; .messageboxu82emerge border 1pxu800 solid #c0b8cc; background color #f0e5ff; text align center; .messageboxu82ecleanup border 1pxu800 solid #9f9fff; background color #efefff; text align center; .messageboxu82estandard talk border 1pxu800 solid #c0c090; background color #f8eaba; .messageboxu82enested talk border 1pxu800 solid #c0c090; background color #f8eaba; width 100u800 ; margin 2pxu800 4pxu800 2pxu800 4pxu800; .messageboxu82esmall width 238px; font size 85u800 ; * noflip * float left; clear both; * noflip * margin 0u800 0u800 1emu800 1emu800; line height 1u800u82e25em; .messageboxu82esmall talk width 238px; font size 85u800 ; * noflip * float left; clear both; * noflip * margin 0u800 0u800 1emu800 1emu800; line height 1u800u82e25em; background #fff2cc; * article message boxu800 styles * tableu82eambox margin 0pxu800 10u800 ; * 10u800 will notu800 overlap with other elements * border 1pxu800 solid #a2a9b1; border right 10px solid #36cu800; * default \"notice\" blue * background #f8f9fa; tableu82eambox tableu82eambox * single border between stacked boxes. * margin topu800 1pxu800; .ambox thu800u82embox text .ambox tdu800u82embox text * theu800 message body cell su800 * padding 0u800u82e25em 0u800u82e5emu800; * 0u800u82e5emu800 left right * .ambox tdu800u82embox image * theu800 left image cell * padding 2pxu800 0u800u82e5emu800 2pxu800 0u800; * 0u800u82e5emu800 right 0pxu800 left * .ambox tdu800u82embox imageright * theu800 right image cell * padding 2pxu800 0u800 2pxu800 0u800u82e5emu800; * 0pxu800 right 0u800u82e5emu800 left * tableu82eambox notice border right 10px solid #36cu800; * blue * tableu82eambox speedy border right 10px solid #dd0000; * redu800 * background #fee7e6; * pink * tableu82eambox delete border right 10px solid #dd0000; * redu800 * tableu82eambox content border right 10px solid #ff5d00; * orange * tableu82eambox style border right 10px solid #fc3u800; * yellow * tableu82eambox move border right 10px solid #9932cc; * purple * tableu82eambox protection border right 10px solid #a2a9b1; * gray gold * * disambig andu800 setu800 index boxu800 styles * tableu82edmbox clear both; margin 0u800u82e9emu800 1emu800; border topu800 1pxu800 solid #c8ccd1; border bottom 1pxu800 solid #c8ccd1; background transparent; * footer andu800 header message boxu800 styles * tableu82efmbox clear both; margin 0u800u82e2emu800 0u800; width 100u800 ; border 1pxu800 solid #a2a9b1; background #f8f9fa; * default \"system\" gray * tableu82efmbox system background #f8f9fa; tableu82efmbox warning border 1pxu800 solid #dd0000; * dark pink * background #fee7e6; * pink * tableu82efmbox editnotice background transparent; * divu800 based \"warning\" style fmbox messages. * divu800u82emwu800 warning with logexcerpt divu800u82emwu800 lagu800 warn high divu800u82emwu800 cascadeprotectedwarning divu800#mwu800 protect cascadeon clear both; margin 0u800u82e2emu800 0u800; border 1pxu800 solid #dd0000; background #fee7e6; padding 0u800u82e25em 0u800u82e9emu800; * divu800 based \"system\" style fmbox messages. used inu800 mediawiki readonly lagu800 . * divu800u82emwu800 lagu800 warn normal divu800u82efmbox system clear both; margin 0u800u82e2emu800 0u800; border 1pxu800 solid #a2a9b1; background #f8f9fa; padding 0u800u82e25em 0u800u82e9emu800; * these mbox small classes must beu800 placed after allu800 other ambox tmbox ombox etcu800 classes. \"bodyu82emediawiki\" isu800 sou800 they override \"tableu82eambox tableu82eambox\" above. * html bodyu82emediawiki .mbox small * foru800 theu800 \"small yesu800\" option. * * noflip * clear left; * noflip * float left; * noflip * margin 4pxu800 1emu800 4pxu800 0u800; boxu800 sizing border boxu800; width 238px; font size 88u800 ; line height 1u800u82e25em; html bodyu82emediawiki .mbox small right * foru800 theu800 \"small right\" option. * * noflip * margin 4pxu800 0u800 4pxu800 1emu800; boxu800 sizing border boxu800; overflow hidden; width 238px; border collapse collapse; font size 88u800 ; line height 1u800u82e25em; * style foru800 compact ambox * * hide theu800 images * .compact ambox table .mbox image .compact ambox table .mbox imageright .compact ambox table .mbox empty cell display none; * remove borders backgrounds padding etcu800. * .compact ambox tableu82eambox border none; border collapse collapse; background color transparent; margin 0u800 1u800u82e6emu800 0u800 0u800 important; padding 0u800 important; width auto; display block; bodyu82emediawiki .compact ambox tableu82embox small left font size 100u800 ; width auto; margin 0u800; * style theu800 text cell asu800 au800 list item andu800 remove itsu800 padding * .compact ambox table .mbox text padding 0u800 important; margin 0u800 important; .compact ambox table .mbox text span display list item; line height 1u800u82e5emu800; list style type square; list style image urlu800 wu800 skins monobook resources images bulletu82esvgu800 ; * allow foru800 hiding text inu800 compact form * .compact ambox .hide when compact display none; * putu800 au800 checker background atu800 theu800 image description page only visible ifu800 theu800 image hasu800 transparent background * #file imgu800 background urlu800 \" uploadu82ewikimediau82eorgu800 wikipedia commons 5u800 5du800 checker 16x16u82epngu800\" repeat; #wpsave font weight bold; * suppress missing interwiki image links where #ifexist cannot beu800 used dueu800 tou800 high number ofu800 requests * * useu800 restricted tou800 rail icon management pages * * seeu800 .hidden redlink onu800 metau82ewikimediau82eorgu800 wiki mediawiki commonu82ecssu800 * .check icon au800u82enewu800 display none; speak none; * removes underlines from links * .nounderlines au800 text decoration none; * remove underline from ipau800 links * .ipau800 au800 link .ipau800 au800 visited text decoration none; * removes useless links from printout * media print #privacy #about #disclaimer display none; #enwpmpbook background image urlu800 uploadu82ewikimediau82eorgu800 wikipedia enu800 7u800 7eu800 mpu800 open booku82epngu800 ; #enwpmpsearch background urlu800 uploadu82ewikimediau82eorgu800 wikipedia enu800 au800 aeu800 mpu800 magnifying glassu82epngu800 nou800 repeat topu800 left; #enwpmpsearchinner float left; width 20em; text align center; #enwpmpbook2 background image urlu800 uploadu82ewikimediau82eorgu800 wikipedia commons 8u800 8eu800 mpu800 open book2u82epngu800 ; * standard navigationsleisten akau800 boxu800 hiding thingy from .deu800. documentation atu800 wikipedia navframe . * divu800u82eboxmerge divu800u82enavframe margin 0pxu800; padding 4pxu800; border 1pxu800 solid #a2a9b1; text align center; border collapse collapse; font size 95u800 ; divu800u82eboxmerge divu800u82enavframe border style none; border style hidden; divu800u82enavframe divu800u82enavframe border topu800 style none; border topu800 style hidden; divu800u82enavpic background color #fffu800; margin 0pxu800; padding 2pxu800; float right; divu800u82enavframe divu800u82enavhead height 1u800u82e6emu800; font weight bold; background color #b3ccff; position relative; divu800u82enavframe divu800u82enavhead hover background color #aafu800; divu800u82enavframe pu800 font size 100u800 ; divu800u82enavframe divu800u82enavcontent font size 100u800 ; divu800u82enavframe divu800u82enavcontent pu800 font size 100u800 ; divu800u82enavend margin 0pxu800; padding 0pxu800; line height 1pxu800; clear both; au800u82enavtoggle position absolute; topu800 0pxu800; left 3pxu800; font weight normal; font size smaller; * hatnotes andu800 disambiguation notices * .rellink .dablink .hatnote font style italic; .rellink iu800 .dablink iu800 .hatnote iu800 font style normal; divu800u82erellink divu800u82edablink divu800u82ehatnote * noflip * padding right 1u800u82e6emu800; margin bottom 0u800u82e5emu800; spanu82eupdatedmarker background color transparent; color #006400; * coloured watchlist numbers * .mwu800 plusminus posu800 color #006400; * darkgreen * * .mwu800 plusminus null currently atu800 developer default * .mwu800 plusminus negu800 color #8b0000; * darkred * .dablink font style italic; padding right 2emu800; .dablink iu800 font style normal; * style foru800 horizontal ulu800 lists * .horizontal ulu800 padding 0u800; margin 0u800; .horizontal liu800 padding 0u800 0u800u82e6emu800 0u800 0u800u82e4emu800; display inline; border left 1pxu800 solid; * geographical coordinates tou800 display coordinates using theu800 notation inu800 theu800 source code write this inu800 your user username monobooku82ecssu800 .geou800 default display inline .geou800 nondefault display none .geou800 decu800 display inline .geou800 dmsu800 display inline tou800 display coordinates using decimal notation write this inu800 your user username monobooku82ecssu800 .geou800 default display inline .geou800 nondefault display inline .geou800 decu800 display inline .geou800 dmsu800 display none tou800 display coordinates using dmsu800 notation write this inu800 your user username monobooku82ecssu800 .geou800 default display inline .geou800 nondefault display inline .geou800 decu800 display none .geou800 dmsu800 display inline tou800 display coordinates inu800 both decimal andu800 dmsu800 notation write this inu800 your user username monobooku82ecssu800 .geou800 default display inline .geou800 nondefault display inline .geou800 decu800 display inline .geou800 dmsu800 display inline .geou800 multi punct display inline seeu800 template coor link foru800 howu800 these areu800 used. note that theu800 classes \"geou800\" \"longitude\" andu800 \"latitude\" areu800 notu800 just styles butu800 also used byu800 theu800 geou800 microformat sou800 theu800 names should notu800 beu800 changed. * .geou800 default display inline; .geou800 nondefault display none; .geou800 dmsu800 display inline; .geou800 decu800 display inline; .geou800 multi punct display none; .longitude .latitude white space nowrap; * this isu800 used foru800 theu800 geou800 microformat butu800 nou800 style isu800 needed foru800 nowu800 other than .geou800 decu800. * .geou800 ***** endu800 geou800 related * * when isu800 used onu800 theu800 table ofu800 contents theu800 tocu800 will display without numbers * .nonumtoc .tocnumber display none; .nonumtoc #tocu800 ulu800 .nonumtoc .tocu800 ulu800 line height 1u800u82e5emu800; list style none; margin .3emu800 0u800 0u800; padding 0u800; .nonumtoc #tocu800 ulu800 ulu800 .nonumtoc .tocu800 ulu800 ulu800 margin 0u800 0u800 0u800 2emu800; * allow limiting ofu800 which header levels areu800 shown inu800 au800 tocu800; foru800 instance will limit tou800 showing headings andu800 headings butu800 nou800 further asu800 long asu800 there areu800 nou800 headings onu800 theu800 page which there shouldn\'tu800 beu800 according tou800 theu800 mosu800 . * .toclimit 2u800 .toclevel 2u800 display none; .toclimit 3u800 .toclevel 3u800 display none; .toclimit 4u800 .toclevel 4u800 display none; .toclimit 5u800 .toclevel 5u800 display none; .toclimit 6u800 .toclevel 6u800 display none; .toclimit 7u800 .toclevel 7u800 display none; * allow transcluded pages tou800 display inu800 lists rather than au800 table. compatible inu800 firefox; incompatible inu800 ie6u800. * .listify tdu800 display list item; .listify tru800 display block; .listify table display block; divu800u82euser block padding 5pxu800; border 1pxu800 solid #a2a9b1; background color #fee7e6; * prevent line breaks inu800 silly places 1u800 links when weu800 donu800\'tu800 want them tou800 2u800 html formulae 3u800 refu800 tags with group names \" note 1u800 \" * .nowrap .nowraplinks au800 spanu82etexhtml supu800u82ereference au800 white space nowrap; * contents ofu800 tagu800 should have anu800 ltru800 layout * spanu82etexhtml direction ltru800; unicode bidi isolate; .thumbinner minu800 width 100px; * cell sizes foru800 ambox tmbox imbox cmbox ombox fmbox dmbox message boxes * thu800u82embox text tdu800u82embox text * theu800 message body cell su800 * border none; padding 0u800u82e25em 0u800u82e9emu800; * 0u800u82e9emu800 left right * width 100u800 ; * make allu800 mboxes theu800 same width regardless ofu800 text length * tdu800u82embox image * theu800 left image cell * border none; padding 2pxu800 0u800u82e9emu800 2pxu800 0pxu800; * 0u800u82e9emu800 right 0pxu800 left * text align center; tdu800u82embox imageright * theu800 right image cell * border none; padding 2pxu800 0pxu800 2pxu800 0u800u82e9emu800; * 0pxu800 left 0u800u82e9emu800 right * text align center; * reduce line height foru800 andu800 * supu800 subu800 line height 1emu800; * selectively hide headers inu800 wikiproject banners * * templatestyles * .wpbu800 .wpbu800 header display none; .wpbs inner .wpbu800 .wpbu800 header display table rowu800; .wpbs inner .wpbu800 outside display none; * hide things that should only display outside shells * * styling foru800 abuse filter tags * .mwu800 tagu800 markers font style italic; font size 90u800 ; * hide stuff meant foru800 accounts with special permissions. made visible again inu800 mediawiki group checkuseru82ecssu800 mediawiki group sysopu82ecssu800 mediawiki group patrolleru82ecssu800 mediawiki group templateeditoru82ecssu800 mediawiki group extendedmoveru82ecssu800 mediawiki group extendedconfirmedu82ecssu800 andu800 mediawiki group autoconfirmedu82ecssu800 . * .checkuser show .sysop show .patroller show .templateeditor show .extendedmover show .extendedconfirmed show .autoconfirmed show .user show display none; * fu8c3bcr u8e280a6 * .mwu800 hierotable .hierotable mwu800 .mwu800 hierotable thu800 .hierotable mwu800 thu800 .mwu800 hierotable tdu800 .hierotable mwu800 tdu800 border 0pxu800; padding 0pxu800; * with mediawiki 1u800u82e5u800 theu800 mechanism hasu800 changed instead ofu800 au800 span ofu800 class \"urlexpansion\" following theu800 anchor au800 theu800 anchor itself nowu800 hasu800 class \"external autonumber\" andu800 theu800 expansion isu800 inserted when printing seeu800 theu800 common printing style sheet atu800 enu800u82ewikipediau82eorgu800 wu800 skins common commonprintu82ecssu800 using theu800 \" after\" pseudo element ofu800 cssu800. weu800 have tou800 switch this offu800 foru800 links dueu800 tou800 template refu800 * .plainlinksneverexpand au800u82eexternalu82etext after display none important; .plainlinksneverexpand au800u82eexternalu82eautonumber after display none important; * foru800 main page * .globegris background urlu800 uploadu82ewikimediau82eorgu800 wikipedia commons 1u800 10u800 wikipedia logo v2u800 200px transparentu82epngu800 ; * endu800 * .prefsection fieldset float right; * small font size foru800 hidden categories * #mwu800 hidden catlinks font size 87u800 important; .listify margin left 0u800; margin right 2emu800; #wpfilterrules direction ltru800; * u8d8a7u8db8cu8d986 u8d986u8db8cu8d8b2 u8d8a8u8d8a7u8daaf u8d8a7u8d8b3u8d8aa u8daa9u8d987 u8d988u8d982u8d8aau8db8c u8d8b9u8d986u8d988u8d8a7u8d986 u8db8cu8daa9 u8d8a8u8d8aeu8d8b4 u8d8a7u8d986u8daafu8d984u8db8cu8d8b3u8db8c u8d8a7u8d8b3u8d8aau8d88c u8d981u8d8a7u8d8b1u8d8b3u8db8c u8d8afu8d8b1u8d988u8d986 u8d8aeu8d984u8d8a7u8d8b5u8d987u8d994 u8d988u8db8cu8d8b1u8d8a7u8db8cu8d8b4 u8d8afu8d8b1 u8d8aau8d8a7u8d8b1u8db8cu8d8aeu8da86u8d987 u8d8a8u8d987 u8d987u8d985 u8d985u8db8cu8e2808cu8d8b1u8db8cu8d8b2u8d8af * .comment span unicode bidi normal; * u8d986u8d985u8d8a7u8db8cu8d8b4 u8d8a8u8d987u8d8aau8d8b1 u8d8aeu8d984u8d8a7u8d8b5u8d987 u8d988u8db8cu8d8b1u8d8a7u8db8cu8d8b4u8e2808cu8d987u8d8a7u8db8c u8d8aeu8db8cu8d984u8db8c u8d8b7u8d988u8d984u8d8a7u8d986u8db8c * .comment overflow wrap break word; word break break word; * u8d8b2u8db8cu8d8a7u8d8af u8daa9u8d8b1u8d8afu8d986 u8d8a7u8d986u8d8afu8d8a7u8d8b2u8d987u8d994 u8d8aau8d988u8d8b6u8db8cu8d8adu8d8a7u8d8aa u8d8b5u8d981u8d8adu8d987u8d994 u8d8a8u8d8a7u8d8b1u8daafu8d8b0u8d8a7u8d8b1u8db8c * #wpuploaddescription height 25em; *u8d8a7u8d8a8u8d8b2u8d8a7u8d8b1 u8d9beu8d8b1u8d8b1u8d986u8daaf u8daa9u8d986u8d986u8d8afu8d987u8d994 u8d986u8d8b8u8d8b1u8d987u8d8a7u8db8c u8daa9u8d8a7u8d8b1u8d8a8u8d8b1* .mycomment background #ff9u800; * pieu800 chart test transparent borders * .transborder border solid transparent; * hide edittools base foru800 those notu800 using theu800 gadget * #mwu800 edittools charinsert display none; * category tree styling. works inu800 conjuction with mediawiki categorytree expand bullet mediawiki categorytree collapse bullet andu800 mediawiki categorytree empty bullet . * #mwu800 subcategories ulu800 list style none none; margin left 0u800u82e25em; .categorytreechildren margin left 1u800u82e25em; .categorytreetoggle color #36cu800; .categorytreeemptybullet color #c8ccd1; * u8d8aau8d988u8d8b6u8db8cu8d8ad u8d8a8u8d987 u8daa9u8d8a7u8d8b1u8d8a8u8d8b1u8d8a7u8d986 u8d8afu8d8b1u8d8a8u8d8a7u8d8b1u8d987u8d994 u8d8b5u8d981u8d8adu8d987u8d994 u8d8aau8d985u8d8b1u8db8cu8d986 * bodyu82ensu800 2u800 class* \"_u8d8b5u8d981u8d8adu8d987_u8d8aau8d985u8d8b1u8db8cu8d986\" #firstheading after color #72777d; content \"u8d8aau8d988u8d8acu8d987 u8d8a7u8db8cu8d986 u8d8b5u8d981u8d8adu8d987 u8d8a8u8d8aeu8d8b4u8db8c u8d8a7u8d8b2 u8d8afu8d8a7u8d986u8d8b4u8d986u8d8a7u8d985u8d987 u8d986u8db8cu8d8b3u8d8aa u8d988 u8d8b5u8d8b1u8d981u8d8a7u8d98b u8d8acu8d987u8d8aa u8d988u8db8cu8d8b1u8d8a7u8db8cu8d8b4 u8d8a2u8d8b2u8d985u8d8a7u8db8cu8d8b4u8db8c u8d8afu8d8b1 u8d8a7u8d985u8d8a7u8d985u8d8aau8e2808cu8d9beu8d8afu8db8cu8d8a7 u8daa9u8d8a7u8d8b1u8d8a8u8d8b1u8d8af u8d8afu8d8a7u8d8b1u8d8af.\"; float left; width 40u800 ; font size 40u800 ; *u8d8a7u8d8b5u8d984u8d8a7u8d8ad u8d8a7u8d986u8d8afu8d8a7u8d8b2u8d987 u8d981u8d988u8d986u8d8aa u8d8afu8d8b1 u8d8aau8d8bau8db8cu8db8cu8d8b1u8d8a7u8d8aa u8d8a7u8d8aeu8db8cu8d8b1 u8d8a8u8d8b1u8d8a7u8db8c u8d988u8db8cu8d8b1u8d8a7u8db8cu8d8b4u8e2808cu8d987u8d8a7u8db8c u8d8afu8d8b1 u8d8adu8d8a7u8d984 u8d8a7u8d986u8d8aau8d8b8u8d8a7u8d8b1 u8d8a8u8d8b1u8daafu8d8b1u8d981u8d8aau8d987 u8d8a7u8d8b2 u8d988u8db8cu8daa9u8db8cu8e2808cu8d8b1u8d988u8d8b3u8db8c* .mwu800 fru800 reviewlink .fru800 hist basic user .fru800 hist basic auto font weight normal; font size smaller; * temporary fixu800 foru800 t86979 * .uiu800 dialog right auto; * make itu800 possible tou800 hide checkboxes inu800 * .inputbox hidecheckboxes form .inputbox element display none important; * u8d8a7u8db8cu8d986 u8d8a8u8d8b1u8da86u8d8b3u8d9be u8d8a8u8d987u8d8aau8d8b1 u8d8a7u8d8b3u8d8aa u8d981u8d982u8d8b7 u8d8a8u8d8b1u8d8a7u8db8c gadget taghighlighteru82ecssu800 u8d8b1u8d8a7 u8d981u8d8b9u8d8a7u8d984 u8daa9u8d8b1u8d8afu8d987 u8d8a7u8d986u8d8af u8d8afu8db8cu8d8afu8d987 u8d8b4u8d988u8d986u8d8af * .mwu800 tagu800 marker u8d986u8db8cu8d8a7u8d8b2u8d985u8d986u8d8af_u8d8a8u8d8a7u8d8b2u8d8a8u8db8cu8d986u8db8c display none; * reduce page jumps byu800 hiding collapsed dismissed content * .client jsu800 .mwu800 special watchlist #watchlist message display none; * u8daa9u8d985u8db8c u8d9beu8db8cu8d988u8d986u8d8af u8d8a7u8db8cu8d8acu8d8a7u8d8af u8d985u8d982u8d8a7u8d984u8d987 u8d8a8u8d8b2u8d8b1u8daafu8d8aau8d8b1 u8d8b4u8d988u8d8af u8daa9u8d987 u8d9beu8d8b3 u8d8a7u8d8b2 u8d8adu8d8b0u8d981 u8d8a8u8db8cu8d8b4u8d8aau8d8b1 u8d8a7u8d8b3u8d8aau8d981u8d8a7u8d8afu8d987 u8d8b4u8d988u8d8af * .mwu800 warning with logexcerpt au800 title \"u8d8a7u8d985u8d8a7u8d985u8d8aau8e2808cu8d9beu8d8afu8db8cu8d8a7 u8d8a7u8db8cu8d8acu8d8a7u8d8af u8d985u8d982u8d8a7u8d984u8d987\" font size 120u800 ; font weight bold; * make theu800 textarea pink when anu800 admin isu800 editing au800 protected page * .mwu800 textarea protected background color #fee7e6; * made diffs useu800 wikimedia uiu800 color palette phab m82u800 * tdu800u82ediff addedline border color #36cu800; tdu800u82ediff deletedline border color #fc3u800; tdu800u82ediff addedline .diffchange background #e9eef9; tdu800u82ediff deletedline .diffchange background #fff4d6; * spacing between theu800 rows ofu800 navbox * tru800 tru800 .navbox abovebelow tru800 tru800 .navbox group tru800 tru800 .navbox image tru800 tru800 .navbox list * borders above 2ndu800 3rdu800 etcu800. rows * border topu800 2pxu800 solid #fdfdfd; * must match background color * * endu800 ofu800 spacing between theu800 rows ofu800 navbox * * color diff links * .mwu800 diff edit au800 color #2a4b8d; .mwu800 diff undo au800 .mwu800 history undo au800 .mwu800 rollback link au800 color #d33u800; au800u82emwu800 thanks thank link color #14866d; * make sure cite andu800 dfnu800 areu800 notu800 italicized thorugh theu800 user agent stylesheet * cite dfnu800 font style inherit; * ltru800 citations should beu800 listed ltru800 andu800 beu800 left aligned asu800 isu800 theu800 case inu800 persian literature * liu800u82emwu800 cite diru800 ltru800 direction ltru800; margin left 2u800u82e3emu800; text align left; list style type decimal important; * however sometimes users combine ltru800 andu800 rtlu800 refs andu800 wrap theu800 tagu800 inu800 au800 divu800 that isu800 ltru800. inu800 those cases donu800\'tu800 addu800 au800 margin left foru800 theu800 liu800 element sou800 theu800 ltru800 andu800 rtlu800 numbersing areu800 aligned. * divu800u82emwu800 content ltru800 olu800 liu800u82emwu800 cite diru800 ltru800 margin left 0u800; * olu800 with persian alphabet used foru800 itsu800 counter * counter style persian alpha system cyclic; symbols \" 627u800 644u800 641u800\" \" 628u800\" \" 67eu800\" \" 62au800\" \" 62bu800\" \" 62cu800\" \" 684u800\" \" 62du800\" \" 62eu800\" \" 62fu800\" \" 630u800\" \" 631u800\" \" 632u800\" \" 698u800\" \" 633u800\" \" 634u800\" \" 635u800\" \" 636u800\" \" 637u800\" \" 638u800\" \" 639u800\" \" 63au800\" \" 641u800\" \" 642u800\" \" 6a9u800\" \" 6abu800\" \" 644u800\" \" 645u800\" \" 646u800\" \" 648u800\" \" 6beu800\" \" 6ccu800\"; suffix \" \"; .reflist persian alpha olu800 lang fau800 liu800 list style type persian alpha important; direction rtlu800; text align right; margin left 0u800; * right margin foru800 left aligned tables * table align \"left\" margin right 1u800u82e2emu800; * center aligning wikitables should beu800 asu800 easy asu800 using align center * tableu82ewikitable align \"center\" margin right auto; margin left auto; .mwu800 indicator .mwu800 helplink .mwu800 indicator ppu800 default mozu800 user select none; webkit user select none; msu800 user select none; user select none; * temporary fixu800 foru800 template allow_wrap until t283071 isu800 fixed * .wrap white space normal; * endu800 persian wikipedia style * ');
