GraphemeSplit - Split a string without breaking graphemes

Post your working scripts, libraries and tools.
ntepa
Posts: 427
Joined: 19 Oct 2022, 20:52

GraphemeSplit - Split a string without breaking graphemes

Post by ntepa » 30 Jan 2023, 04:37

A grapheme is a single character represented by multiple code points.
StrSplit breaks graphemes into individual code points. The function GraphemeSplit returns an array of without breaking graphemes.
The function is based on this probject: https://github.com/flmnt/graphemer.
Language specific rules are from https://github.com/nota/split-graphemes.

Test code:

Code: Select all

a := graphemesplit("💩🤦🏼‍♂️👨‍👨‍👧‍👦")   ; => [💩, 🤦🏼‍♂️, 👨‍👨‍👧‍👦]
b := StrSplit("💩🤦🏼‍♂️👨‍👨‍👧‍👦")        ; => [�, �, �, �, �, �, ‍, ♂, ️, �, �, ‍, �, �, ‍, �, �, ‍, �, �]
test(a, b)

a := GraphemeSplit("नमस्ते")       ; => [न, म, स्ते]
b := StrSplit("नमस्ते")            ; => [न, म, स, ्, त, े]
test(a, b)

a := GraphemeSplit("斎󠄁葛󠄁真󠄁")      ; => [斎󠄁, 葛󠄁, 真󠄁]
b := StrSplit("斎󠄁葛󠄁真󠄁")           ; => [斎, �, �, 葛, �, �, 真, �, �]
test(a, b)

a := GraphemeSplit("కృష్ణస్త్రీఙ్ఞష్ణ")  ; => [కృ, ష్ణ, స్త్రీ, ఙ్ఞ, ష్ణ]
b := StrSplit("కృష్ణస్త్రీఙ్ఞష్ణ")       ; => [క, ృ, ష, ్, ణ, స, ్, త, ్, ర, ీ, ఙ, ్, ఞ, ష, ్, ణ]
test(a, b)

test(arr1, arr2) {
	s := ""
	loop 2 {
		if A_Index = 1
			s .= "GraphemeSplit: "
		else
			s .= "StrSplit: "
		currentArr := arr%A_Index%
		s .= "["
		for v in currentArr {
			s .= v
			if (A_Index < currentArr.Length)
				s .= ", "
			else
				s .= "]"
		}
		s .= "`n"
	}
	msgbox s
}
The function:

Code: Select all

GraphemeSplit(str) {

	static 	_OTHER := 0
		  , _CR := 1
		  , _LF := 2
		  , _CONTROL := 3
		  , _EXTEND := 4
		  , _REGIONAL_INDICATOR := 5
		  , _SPACINGMARK := 6
		  , _L := 7
		  , _V := 8
		  , _T := 9
		  , _LV := 10
		  , _LVT := 11
		  , _PREPEND := 12
		  , _ZWJ := 13
		  , _EXTENDED_PICTOGRAPHIC := 14
		  , _EOT := 15

	static RElanguages := languageRegEx()
	start := pos := 1
	arr := []
	Len := StrLen(str)
	while start <= Len {
		while RegExMatch(str, "Ss)(?<prev>" RElanguages "[\x{1F1E6}-\x{1F1FF}]{2}|.)(?<next>.)?", &out, pos) {
			prev := next ?? getGraphemeBreakProperty(Ord(out.prev))
			next := out.next ? getGraphemeBreakProperty(Ord(out.next)) : _EOT
			pos += StrLen(out.prev)
			if shouldBreak(prev, next) {
				break
			}
		}
		length := pos - start
		arr.Push(SubStr(str, start, length))
		start += length
	}
	return arr

	shouldbreak(prev, next) {
		static ExtPic := 0
		if (prev = _CR && next = _LF) { ; GB3
			return 0
		}
		else if (prev = _CR || prev = _LF || prev = _CONTROL) ; GB4
			|| (next = _CR || next = _LF || next = _CONTROL) { ; GB5
			return 1
		}
		else if !ExtPic && (prev = _EXTENDED_PICTOGRAPHIC && (next = _EXTEND || next = _ZWJ)) { ; start of Extended Pictograph sequence
			ExtPic := 1
			return 0
		}
		else if ExtPic && ((prev = _EXTEND && next = _ZWJ)
			|| (prev = _EXTEND && next = _EXTEND)
			|| prev = _ZWJ && next = _EXTENDED_PICTOGRAPHIC) ; GB11
			|| (next = _EXTEND || next = _ZWJ) ; GB9
			|| (next = _SPACINGMARK) ; GB9.a
			|| (prev = _PREPEND) ; GB9.b
			|| (prev = _L && (next = _L || next = _V || next = _LV || next = _LVT)) ; GB6
			|| ((prev = _LV || prev = _V) && (next = _V || next = _T)) ; GB7
			|| ((prev = _LVT || prev = _T) && next = _T) { ; GB8
			return 0
		}
		else {
			ExtPic := 0
			return 1
		}
	}

	getGraphemeBreakProperty(code) => ((code<48764)?((code<43569)?((code<4190)?((code<2880)?((code<2364)?((code<1757)?((code<1425)?((code<127)?((code<11)?((code<10)?((0<=code&&code<=9)&&_Control):((10=code)&&_LF)):((code<13)?((11<=code&&code<=12)&&_Control):((code<14)?((13=code)&&_CR):((14<=code&&code<=31)&&_Control)))):((code<174)?((code<169)?((127<=code&&code<=159)&&_Control):((169=code)&&_Extended_Pictographic||(173=code)&&_Control)):((code<768)?((174=code)&&_Extended_Pictographic):((code<1155)?((768<=code&&code<=879)&&_Extend):((1155<=code&&code<=1161)&&_Extend))))):((code<1536)?((code<1473)?((code<1471)?((1425<=code&&code<=1469)&&_Extend):((1471=code)&&_Extend)):((code<1476)?((1473<=code&&code<=1474)&&_Extend):((code<1479)?((1476<=code&&code<=1477)&&_Extend):((1479=code)&&_Extend)))):((code<1611)?((code<1552)?((1536<=code&&code<=1541)&&_Prepend):((code<1564)?((1552<=code&&code<=1562)&&_Extend):((1564=code)&&_Control))):((code<1648)?((1611<=code&&code<=1631)&&_Extend):((code<1750)?((1648=code)&&_Extend):((1750<=code&&code<=1756)&&_Extend)))))):((code<2075)?((code<1809)?((code<1767)?((code<1759)?((1757=code)&&_Prepend):((1759<=code&&code<=1764)&&_Extend)):((code<1770)?((1767<=code&&code<=1768)&&_Extend):((code<1807)?((1770<=code&&code<=1773)&&_Extend):((1807=code)&&_Prepend)))):((code<2027)?((code<1840)?((1809=code)&&_Extend):((code<1958)?((1840<=code&&code<=1866)&&_Extend):((1958<=code&&code<=1968)&&_Extend))):((code<2045)?((2027<=code&&code<=2035)&&_Extend):((code<2070)?((2045=code)&&_Extend):((2070<=code&&code<=2073)&&_Extend))))):((code<2250)?((code<2137)?((code<2085)?((2075<=code&&code<=2083)&&_Extend):((code<2089)?((2085<=code&&code<=2087)&&_Extend):((2089<=code&&code<=2093)&&_Extend))):((code<2192)?((2137<=code&&code<=2139)&&_Extend):((code<2200)?((2192<=code&&code<=2193)&&_Prepend):((2200<=code&&code<=2207)&&_Extend)))):((code<2307)?((code<2274)?((2250<=code&&code<=2273)&&_Extend):((code<2275)?((2274=code)&&_Prepend):((2275<=code&&code<=2306)&&_Extend))):((code<2362)?((2307=code)&&_SpacingMark):((2362=code)&&_Extend||(2363=code)&&_SpacingMark)))))):((code<2620)?((code<2494)?((code<2382)?((code<2369)?((code<2366)?((2364=code)&&_Extend):((2366<=code&&code<=2368)&&_SpacingMark)):((code<2377)?((2369<=code&&code<=2376)&&_Extend):((code<2381)?((2377<=code&&code<=2380)&&_SpacingMark):((2381=code)&&_Extend)))):((code<2433)?((code<2385)?((2382<=code&&code<=2383)&&_SpacingMark):((code<2402)?((2385<=code&&code<=2391)&&_Extend):((2402<=code&&code<=2403)&&_Extend))):((code<2434)?((2433=code)&&_Extend):((code<2492)?((2434<=code&&code<=2435)&&_SpacingMark):((2492=code)&&_Extend))))):((code<2509)?((code<2497)?((code<2495)?((2494=code)&&_Extend):((2495<=code&&code<=2496)&&_SpacingMark)):((code<2503)?((2497<=code&&code<=2500)&&_Extend):((code<2507)?((2503<=code&&code<=2504)&&_SpacingMark):((2507<=code&&code<=2508)&&_SpacingMark)))):((code<2558)?((code<2519)?((2509=code)&&_Extend):((code<2530)?((2519=code)&&_Extend):((2530<=code&&code<=2531)&&_Extend))):((code<2561)?((2558=code)&&_Extend):((code<2563)?((2561<=code&&code<=2562)&&_Extend):((2563=code)&&_SpacingMark)))))):((code<2750)?((code<2641)?((code<2625)?((code<2622)?((2620=code)&&_Extend):((2622<=code&&code<=2624)&&_SpacingMark)):((code<2631)?((2625<=code&&code<=2626)&&_Extend):((code<2635)?((2631<=code&&code<=2632)&&_Extend):((2635<=code&&code<=2637)&&_Extend)))):((code<2689)?((code<2672)?((2641=code)&&_Extend):((code<2677)?((2672<=code&&code<=2673)&&_Extend):((2677=code)&&_Extend))):((code<2691)?((2689<=code&&code<=2690)&&_Extend):((2691=code)&&_SpacingMark||(2748=code)&&_Extend)))):((code<2786)?((code<2761)?((code<2753)?((2750<=code&&code<=2752)&&_SpacingMark):((code<2759)?((2753<=code&&code<=2757)&&_Extend):((2759<=code&&code<=2760)&&_Extend))):((code<2763)?((2761=code)&&_SpacingMark):((code<2765)?((2763<=code&&code<=2764)&&_SpacingMark):((2765=code)&&_Extend)))):((code<2818)?((code<2810)?((2786<=code&&code<=2787)&&_Extend):((code<2817)?((2810<=code&&code<=2815)&&_Extend):((2817=code)&&_Extend))):((code<2876)?((2818<=code&&code<=2819)&&_SpacingMark):((code<2878)?((2876=code)&&_Extend):((2878<=code&&code<=2879)&&_Extend)))))))):((code<3391)?((code<3142)?((code<3009)?((code<2901)?((code<2887)?((code<2881)?((2880=code)&&_SpacingMark):((2881<=code&&code<=2884)&&_Extend)):((code<2891)?((2887<=code&&code<=2888)&&_SpacingMark):((code<2893)?((2891<=code&&code<=2892)&&_SpacingMark):((2893=code)&&_Extend)))):((code<3006)?((code<2914)?((2901<=code&&code<=2903)&&_Extend):((code<2946)?((2914<=code&&code<=2915)&&_Extend):((2946=code)&&_Extend))):((code<3007)?((3006=code)&&_Extend):((3007=code)&&_SpacingMark||(3008=code)&&_Extend)))):((code<3072)?((code<3018)?((code<3014)?((3009<=code&&code<=3010)&&_SpacingMark):((3014<=code&&code<=3016)&&_SpacingMark)):((code<3021)?((3018<=code&&code<=3020)&&_SpacingMark):((3021=code)&&_Extend||(3031=code)&&_Extend))):((code<3132)?((code<3073)?((3072=code)&&_Extend):((code<3076)?((3073<=code&&code<=3075)&&_SpacingMark):((3076=code)&&_Extend))):((code<3134)?((3132=code)&&_Extend):((code<3137)?((3134<=code&&code<=3136)&&_Extend):((3137<=code&&code<=3140)&&_SpacingMark)))))):((code<3267)?((code<3202)?((code<3157)?((code<3146)?((3142<=code&&code<=3144)&&_Extend):((3146<=code&&code<=3149)&&_Extend)):((code<3170)?((3157<=code&&code<=3158)&&_Extend):((code<3201)?((3170<=code&&code<=3171)&&_Extend):((3201=code)&&_Extend)))):((code<3263)?((code<3260)?((3202<=code&&code<=3203)&&_SpacingMark):((3260=code)&&_Extend||(3262=code)&&_SpacingMark)):((code<3264)?((3263=code)&&_Extend):((code<3266)?((3264<=code&&code<=3265)&&_SpacingMark):((3266=code)&&_Extend))))):((code<3298)?((code<3274)?((code<3270)?((3267<=code&&code<=3268)&&_SpacingMark):((code<3271)?((3270=code)&&_Extend):((3271<=code&&code<=3272)&&_SpacingMark))):((code<3276)?((3274<=code&&code<=3275)&&_SpacingMark):((code<3285)?((3276<=code&&code<=3277)&&_Extend):((3285<=code&&code<=3286)&&_Extend)))):((code<3330)?((code<3315)?((3298<=code&&code<=3299)&&_Extend):((code<3328)?((3315=code)&&_SpacingMark):((3328<=code&&code<=3329)&&_Extend))):((code<3387)?((3330<=code&&code<=3331)&&_SpacingMark):((code<3390)?((3387<=code&&code<=3388)&&_Extend):((3390=code)&&_Extend))))))):((code<3763)?((code<3535)?((code<3406)?((code<3398)?((code<3393)?((3391<=code&&code<=3392)&&_SpacingMark):((3393<=code&&code<=3396)&&_Extend)):((code<3402)?((3398<=code&&code<=3400)&&_SpacingMark):((code<3405)?((3402<=code&&code<=3404)&&_SpacingMark):((3405=code)&&_Extend)))):((code<3457)?((code<3415)?((3406=code)&&_Prepend):((code<3426)?((3415=code)&&_Extend):((3426<=code&&code<=3427)&&_Extend))):((code<3458)?((3457=code)&&_Extend):((code<3530)?((3458<=code&&code<=3459)&&_SpacingMark):((3530=code)&&_Extend))))):((code<3570)?((code<3542)?((code<3536)?((3535=code)&&_Extend):((code<3538)?((3536<=code&&code<=3537)&&_SpacingMark):((3538<=code&&code<=3540)&&_Extend))):((code<3544)?((3542=code)&&_Extend):((code<3551)?((3544<=code&&code<=3550)&&_SpacingMark):((3551=code)&&_Extend)))):((code<3636)?((code<3633)?((3570<=code&&code<=3571)&&_SpacingMark):((3633=code)&&_Extend||(3635=code)&&_SpacingMark)):((code<3655)?((3636<=code&&code<=3642)&&_Extend):((code<3761)?((3655<=code&&code<=3662)&&_Extend):((3761=code)&&_Extend)))))):((code<3974)?((code<3895)?((code<3784)?((code<3764)?((3763=code)&&_SpacingMark):((3764<=code&&code<=3772)&&_Extend)):((code<3864)?((3784<=code&&code<=3790)&&_Extend):((code<3893)?((3864<=code&&code<=3865)&&_Extend):((3893=code)&&_Extend)))):((code<3953)?((code<3897)?((3895=code)&&_Extend):((code<3902)?((3897=code)&&_Extend):((3902<=code&&code<=3903)&&_SpacingMark))):((code<3967)?((3953<=code&&code<=3966)&&_Extend):((code<3968)?((3967=code)&&_SpacingMark):((3968<=code&&code<=3972)&&_Extend))))):((code<4146)?((code<4038)?((code<3981)?((3974<=code&&code<=3975)&&_Extend):((code<3993)?((3981<=code&&code<=3991)&&_Extend):((3993<=code&&code<=4028)&&_Extend))):((code<4141)?((4038=code)&&_Extend):((code<4145)?((4141<=code&&code<=4144)&&_Extend):((4145=code)&&_SpacingMark)))):((code<4157)?((code<4153)?((4146<=code&&code<=4151)&&_Extend):((code<4155)?((4153<=code&&code<=4154)&&_Extend):((4155<=code&&code<=4156)&&_SpacingMark))):((code<4182)?((4157<=code&&code<=4158)&&_Extend):((code<4184)?((4182<=code&&code<=4183)&&_SpacingMark):((4184<=code&&code<=4185)&&_Extend))))))))):((code<8203)?((code<6752)?((code<6087)?((code<5906)?((code<4237)?((code<4226)?((code<4209)?((4190<=code&&code<=4192)&&_Extend):((4209<=code&&code<=4212)&&_Extend)):((code<4228)?((4226=code)&&_Extend):((code<4229)?((4228=code)&&_SpacingMark):((4229<=code&&code<=4230)&&_Extend)))):((code<4448)?((code<4253)?((4237=code)&&_Extend):((code<4352)?((4253=code)&&_Extend):((4352<=code&&code<=4447)&&_L))):((code<4520)?((4448<=code&&code<=4519)&&_V):((code<4957)?((4520<=code&&code<=4607)&&_T):((4957<=code&&code<=4959)&&_Extend))))):((code<6002)?((code<5938)?((code<5909)?((5906<=code&&code<=5908)&&_Extend):((5909=code)&&_SpacingMark)):((code<5940)?((5938<=code&&code<=5939)&&_Extend):((code<5970)?((5940=code)&&_SpacingMark):((5970<=code&&code<=5971)&&_Extend)))):((code<6071)?((code<6068)?((6002<=code&&code<=6003)&&_Extend):((code<6070)?((6068<=code&&code<=6069)&&_Extend):((6070=code)&&_SpacingMark))):((code<6078)?((6071<=code&&code<=6077)&&_Extend):((code<6086)?((6078<=code&&code<=6085)&&_SpacingMark):((6086=code)&&_Extend)))))):((code<6441)?((code<6159)?((code<6109)?((code<6089)?((6087<=code&&code<=6088)&&_SpacingMark):((6089<=code&&code<=6099)&&_Extend)):((code<6155)?((6109=code)&&_Extend):((code<6158)?((6155<=code&&code<=6157)&&_Extend):((6158=code)&&_Control)))):((code<6432)?((code<6277)?((6159=code)&&_Extend):((code<6313)?((6277<=code&&code<=6278)&&_Extend):((6313=code)&&_Extend))):((code<6435)?((6432<=code&&code<=6434)&&_Extend):((code<6439)?((6435<=code&&code<=6438)&&_SpacingMark):((6439<=code&&code<=6440)&&_Extend))))):((code<6681)?((code<6451)?((code<6448)?((6441<=code&&code<=6443)&&_SpacingMark):((code<6450)?((6448<=code&&code<=6449)&&_SpacingMark):((6450=code)&&_Extend))):((code<6457)?((6451<=code&&code<=6456)&&_SpacingMark):((code<6679)?((6457<=code&&code<=6459)&&_Extend):((6679<=code&&code<=6680)&&_Extend)))):((code<6742)?((code<6683)?((6681<=code&&code<=6682)&&_SpacingMark):((6683=code)&&_Extend||(6741=code)&&_SpacingMark)):((code<6743)?((6742=code)&&_Extend):((code<6744)?((6743=code)&&_SpacingMark):((6744<=code&&code<=6750)&&_Extend))))))):((code<7082)?((code<6972)?((code<6783)?((code<6757)?((6752=code)&&_Extend||(6754=code)&&_Extend):((code<6765)?((6757<=code&&code<=6764)&&_Extend):((code<6771)?((6765<=code&&code<=6770)&&_SpacingMark):((6771<=code&&code<=6780)&&_Extend)))):((code<6916)?((code<6832)?((6783=code)&&_Extend):((code<6912)?((6832<=code&&code<=6862)&&_Extend):((6912<=code&&code<=6915)&&_Extend))):((code<6964)?((6916=code)&&_SpacingMark):((code<6971)?((6964<=code&&code<=6970)&&_Extend):((6971=code)&&_SpacingMark))))):((code<7040)?((code<6978)?((code<6973)?((6972=code)&&_Extend):((6973<=code&&code<=6977)&&_SpacingMark)):((code<6979)?((6978=code)&&_Extend):((code<7019)?((6979<=code&&code<=6980)&&_SpacingMark):((7019<=code&&code<=7027)&&_Extend)))):((code<7074)?((code<7042)?((7040<=code&&code<=7041)&&_Extend):((7042=code)&&_SpacingMark||(7073=code)&&_SpacingMark)):((code<7078)?((7074<=code&&code<=7077)&&_Extend):((code<7080)?((7078<=code&&code<=7079)&&_SpacingMark):((7080<=code&&code<=7081)&&_Extend)))))):((code<7212)?((code<7146)?((code<7142)?((code<7083)?((7082=code)&&_SpacingMark):((7083<=code&&code<=7085)&&_Extend)):((code<7143)?((7142=code)&&_Extend):((code<7144)?((7143=code)&&_SpacingMark):((7144<=code&&code<=7145)&&_Extend)))):((code<7151)?((code<7149)?((7146<=code&&code<=7148)&&_SpacingMark):((7149=code)&&_Extend||(7150=code)&&_SpacingMark)):((code<7154)?((7151<=code&&code<=7153)&&_Extend):((code<7204)?((7154<=code&&code<=7155)&&_SpacingMark):((7204<=code&&code<=7211)&&_SpacingMark))))):((code<7394)?((code<7376)?((code<7220)?((7212<=code&&code<=7219)&&_Extend):((code<7222)?((7220<=code&&code<=7221)&&_SpacingMark):((7222<=code&&code<=7223)&&_Extend))):((code<7380)?((7376<=code&&code<=7378)&&_Extend):((code<7393)?((7380<=code&&code<=7392)&&_Extend):((7393=code)&&_SpacingMark)))):((code<7415)?((code<7405)?((7394<=code&&code<=7400)&&_Extend):((7405=code)&&_Extend||(7412=code)&&_Extend)):((code<7416)?((7415=code)&&_SpacingMark):((code<7616)?((7416<=code&&code<=7417)&&_Extend):((7616<=code&&code<=7679)&&_Extend)))))))):((code<10175)?((code<9664)?((code<8596)?((code<8252)?((code<8205)?((8203=code)&&_Control||(8204=code)&&_Extend):((code<8206)?((8205=code)&&_ZWJ):((code<8232)?((8206<=code&&code<=8207)&&_Control):((8232<=code&&code<=8238)&&_Control)))):((code<8400)?((code<8265)?((8252=code)&&_Extended_Pictographic):((code<8288)?((8265=code)&&_Extended_Pictographic):((8288<=code&&code<=8303)&&_Control))):((code<8482)?((8400<=code&&code<=8432)&&_Extend):((8482=code)&&_Extended_Pictographic||(8505=code)&&_Extended_Pictographic)))):((code<9167)?((code<8986)?((code<8617)?((8596<=code&&code<=8601)&&_Extended_Pictographic):((8617<=code&&code<=8618)&&_Extended_Pictographic)):((code<9000)?((8986<=code&&code<=8987)&&_Extended_Pictographic):((9000=code)&&_Extended_Pictographic||(9096=code)&&_Extended_Pictographic))):((code<9410)?((code<9193)?((9167=code)&&_Extended_Pictographic):((code<9208)?((9193<=code&&code<=9203)&&_Extended_Pictographic):((9208<=code&&code<=9210)&&_Extended_Pictographic))):((code<9642)?((9410=code)&&_Extended_Pictographic):((code<9654)?((9642<=code&&code<=9643)&&_Extended_Pictographic):((9654=code)&&_Extended_Pictographic)))))):((code<10024)?((code<9872)?((code<9728)?((code<9723)?((9664=code)&&_Extended_Pictographic):((9723<=code&&code<=9726)&&_Extended_Pictographic)):((code<9735)?((9728<=code&&code<=9733)&&_Extended_Pictographic):((code<9748)?((9735<=code&&code<=9746)&&_Extended_Pictographic):((9748<=code&&code<=9861)&&_Extended_Pictographic)))):((code<10006)?((code<9992)?((9872<=code&&code<=9989)&&_Extended_Pictographic):((code<10004)?((9992<=code&&code<=10002)&&_Extended_Pictographic):((10004=code)&&_Extended_Pictographic))):((code<10013)?((10006=code)&&_Extended_Pictographic):((10013=code)&&_Extended_Pictographic||(10017=code)&&_Extended_Pictographic)))):((code<10067)?((code<10055)?((code<10035)?((10024=code)&&_Extended_Pictographic):((code<10052)?((10035<=code&&code<=10036)&&_Extended_Pictographic):((10052=code)&&_Extended_Pictographic))):((code<10060)?((10055=code)&&_Extended_Pictographic):((10060=code)&&_Extended_Pictographic||(10062=code)&&_Extended_Pictographic))):((code<10133)?((code<10071)?((10067<=code&&code<=10069)&&_Extended_Pictographic):((code<10083)?((10071=code)&&_Extended_Pictographic):((10083<=code&&code<=10087)&&_Extended_Pictographic))):((code<10145)?((10133<=code&&code<=10135)&&_Extended_Pictographic):((10145=code)&&_Extended_Pictographic||(10160=code)&&_Extended_Pictographic)))))):((code<43045)?((code<12349)?((code<11093)?((code<11013)?((code<10548)?((10175=code)&&_Extended_Pictographic):((10548<=code&&code<=10549)&&_Extended_Pictographic)):((code<11035)?((11013<=code&&code<=11015)&&_Extended_Pictographic):((code<11088)?((11035<=code&&code<=11036)&&_Extended_Pictographic):((11088=code)&&_Extended_Pictographic)))):((code<11744)?((code<11503)?((11093=code)&&_Extended_Pictographic):((code<11647)?((11503<=code&&code<=11505)&&_Extend):((11647=code)&&_Extend))):((code<12330)?((11744<=code&&code<=11775)&&_Extend):((code<12336)?((12330<=code&&code<=12335)&&_Extend):((12336=code)&&_Extended_Pictographic))))):((code<42654)?((code<12953)?((code<12441)?((12349=code)&&_Extended_Pictographic):((code<12951)?((12441<=code&&code<=12442)&&_Extend):((12951=code)&&_Extended_Pictographic))):((code<42607)?((12953=code)&&_Extended_Pictographic):((code<42612)?((42607<=code&&code<=42610)&&_Extend):((42612<=code&&code<=42621)&&_Extend)))):((code<43014)?((code<42736)?((42654<=code&&code<=42655)&&_Extend):((code<43010)?((42736<=code&&code<=42737)&&_Extend):((43010=code)&&_Extend))):((code<43019)?((43014=code)&&_Extend):((code<43043)?((43019=code)&&_Extend):((43043<=code&&code<=43044)&&_SpacingMark)))))):((code<43360)?((code<43204)?((code<43052)?((code<43047)?((43045<=code&&code<=43046)&&_Extend):((43047=code)&&_SpacingMark)):((code<43136)?((43052=code)&&_Extend):((code<43188)?((43136<=code&&code<=43137)&&_SpacingMark):((43188<=code&&code<=43203)&&_SpacingMark)))):((code<43302)?((code<43232)?((43204<=code&&code<=43205)&&_Extend):((code<43263)?((43232<=code&&code<=43249)&&_Extend):((43263=code)&&_Extend))):((code<43335)?((43302<=code&&code<=43309)&&_Extend):((code<43346)?((43335<=code&&code<=43345)&&_Extend):((43346<=code&&code<=43347)&&_SpacingMark))))):((code<43450)?((code<43443)?((code<43392)?((43360<=code&&code<=43388)&&_L):((code<43395)?((43392<=code&&code<=43394)&&_Extend):((43395=code)&&_SpacingMark))):((code<43444)?((43443=code)&&_Extend):((code<43446)?((43444<=code&&code<=43445)&&_SpacingMark):((43446<=code&&code<=43449)&&_Extend)))):((code<43493)?((code<43452)?((43450<=code&&code<=43451)&&_SpacingMark):((code<43454)?((43452<=code&&code<=43453)&&_Extend):((43454<=code&&code<=43456)&&_SpacingMark))):((code<43561)?((43493=code)&&_Extend):((code<43567)?((43561<=code&&code<=43566)&&_Extend):((43567<=code&&code<=43568)&&_SpacingMark)))))))))):((code<46217)?((code<44956)?((code<44313)?((code<44012)?((code<43713)?((code<43597)?((code<43573)?((code<43571)?((43569<=code&&code<=43570)&&_Extend):((43571<=code&&code<=43572)&&_SpacingMark)):((code<43587)?((43573<=code&&code<=43574)&&_Extend):((43587=code)&&_Extend||(43596=code)&&_Extend))):((code<43698)?((code<43644)?((43597=code)&&_SpacingMark):((43644=code)&&_Extend||(43696=code)&&_Extend)):((code<43703)?((43698<=code&&code<=43700)&&_Extend):((code<43710)?((43703<=code&&code<=43704)&&_Extend):((43710<=code&&code<=43711)&&_Extend))))):((code<43766)?((code<43756)?((43713=code)&&_Extend||(43755=code)&&_SpacingMark):((code<43758)?((43756<=code&&code<=43757)&&_Extend):((code<43765)?((43758<=code&&code<=43759)&&_SpacingMark):((43765=code)&&_SpacingMark)))):((code<44006)?((code<44003)?((43766=code)&&_Extend):((code<44005)?((44003<=code&&code<=44004)&&_SpacingMark):((44005=code)&&_Extend))):((code<44008)?((44006<=code&&code<=44007)&&_SpacingMark):((code<44009)?((44008=code)&&_Extend):((44009<=code&&code<=44010)&&_SpacingMark)))))):((code<44145)?((code<44061)?((code<44032)?((44012=code)&&_SpacingMark||(44013=code)&&_Extend):((code<44033)?((44032=code)&&_LV):((code<44060)?((44033<=code&&code<=44059)&&_LVT):((44060=code)&&_LV)))):((code<44116)?((code<44088)?((44061<=code&&code<=44087)&&_LVT):((code<44089)?((44088=code)&&_LV):((44089<=code&&code<=44115)&&_LVT))):((code<44117)?((44116=code)&&_LV):((code<44144)?((44117<=code&&code<=44143)&&_LVT):((44144=code)&&_LV))))):((code<44229)?((code<44200)?((code<44172)?((44145<=code&&code<=44171)&&_LVT):((code<44173)?((44172=code)&&_LV):((44173<=code&&code<=44199)&&_LVT))):((code<44201)?((44200=code)&&_LV):((code<44228)?((44201<=code&&code<=44227)&&_LVT):((44228=code)&&_LV)))):((code<44284)?((code<44256)?((44229<=code&&code<=44255)&&_LVT):((code<44257)?((44256=code)&&_LV):((44257<=code&&code<=44283)&&_LVT))):((code<44285)?((44284=code)&&_LV):((code<44312)?((44285<=code&&code<=44311)&&_LVT):((44312=code)&&_LV))))))):((code<44621)?((code<44480)?((code<44396)?((code<44341)?((code<44340)?((44313<=code&&code<=44339)&&_LVT):((44340=code)&&_LV)):((code<44368)?((44341<=code&&code<=44367)&&_LVT):((code<44369)?((44368=code)&&_LV):((44369<=code&&code<=44395)&&_LVT)))):((code<44425)?((code<44397)?((44396=code)&&_LV):((code<44424)?((44397<=code&&code<=44423)&&_LVT):((44424=code)&&_LV))):((code<44452)?((44425<=code&&code<=44451)&&_LVT):((code<44453)?((44452=code)&&_LV):((44453<=code&&code<=44479)&&_LVT))))):((code<44537)?((code<44508)?((code<44481)?((44480=code)&&_LV):((44481<=code&&code<=44507)&&_LVT)):((code<44509)?((44508=code)&&_LV):((code<44536)?((44509<=code&&code<=44535)&&_LVT):((44536=code)&&_LV)))):((code<44592)?((code<44564)?((44537<=code&&code<=44563)&&_LVT):((code<44565)?((44564=code)&&_LV):((44565<=code&&code<=44591)&&_LVT))):((code<44593)?((44592=code)&&_LV):((code<44620)?((44593<=code&&code<=44619)&&_LVT):((44620=code)&&_LV)))))):((code<44788)?((code<44704)?((code<44649)?((code<44648)?((44621<=code&&code<=44647)&&_LVT):((44648=code)&&_LV)):((code<44676)?((44649<=code&&code<=44675)&&_LVT):((code<44677)?((44676=code)&&_LV):((44677<=code&&code<=44703)&&_LVT)))):((code<44733)?((code<44705)?((44704=code)&&_LV):((code<44732)?((44705<=code&&code<=44731)&&_LVT):((44732=code)&&_LV))):((code<44760)?((44733<=code&&code<=44759)&&_LVT):((code<44761)?((44760=code)&&_LV):((44761<=code&&code<=44787)&&_LVT))))):((code<44872)?((code<44817)?((code<44789)?((44788=code)&&_LV):((code<44816)?((44789<=code&&code<=44815)&&_LVT):((44816=code)&&_LV))):((code<44844)?((44817<=code&&code<=44843)&&_LVT):((code<44845)?((44844=code)&&_LV):((44845<=code&&code<=44871)&&_LVT)))):((code<44901)?((code<44873)?((44872=code)&&_LV):((code<44900)?((44873<=code&&code<=44899)&&_LVT):((44900=code)&&_LV))):((code<44928)?((44901<=code&&code<=44927)&&_LVT):((code<44929)?((44928=code)&&_LV):((44929<=code&&code<=44955)&&_LVT)))))))):((code<45573)?((code<45264)?((code<45097)?((code<45013)?((code<44984)?((code<44957)?((44956=code)&&_LV):((44957<=code&&code<=44983)&&_LVT)):((code<44985)?((44984=code)&&_LV):((code<45012)?((44985<=code&&code<=45011)&&_LVT):((45012=code)&&_LV)))):((code<45068)?((code<45040)?((45013<=code&&code<=45039)&&_LVT):((code<45041)?((45040=code)&&_LV):((45041<=code&&code<=45067)&&_LVT))):((code<45069)?((45068=code)&&_LV):((code<45096)?((45069<=code&&code<=45095)&&_LVT):((45096=code)&&_LV))))):((code<45180)?((code<45125)?((code<45124)?((45097<=code&&code<=45123)&&_LVT):((45124=code)&&_LV)):((code<45152)?((45125<=code&&code<=45151)&&_LVT):((code<45153)?((45152=code)&&_LV):((45153<=code&&code<=45179)&&_LVT)))):((code<45209)?((code<45181)?((45180=code)&&_LV):((code<45208)?((45181<=code&&code<=45207)&&_LVT):((45208=code)&&_LV))):((code<45236)?((45209<=code&&code<=45235)&&_LVT):((code<45237)?((45236=code)&&_LV):((45237<=code&&code<=45263)&&_LVT)))))):((code<45405)?((code<45321)?((code<45292)?((code<45265)?((45264=code)&&_LV):((45265<=code&&code<=45291)&&_LVT)):((code<45293)?((45292=code)&&_LV):((code<45320)?((45293<=code&&code<=45319)&&_LVT):((45320=code)&&_LV)))):((code<45376)?((code<45348)?((45321<=code&&code<=45347)&&_LVT):((code<45349)?((45348=code)&&_LV):((45349<=code&&code<=45375)&&_LVT))):((code<45377)?((45376=code)&&_LV):((code<45404)?((45377<=code&&code<=45403)&&_LVT):((45404=code)&&_LV))))):((code<45489)?((code<45460)?((code<45432)?((45405<=code&&code<=45431)&&_LVT):((code<45433)?((45432=code)&&_LV):((45433<=code&&code<=45459)&&_LVT))):((code<45461)?((45460=code)&&_LV):((code<45488)?((45461<=code&&code<=45487)&&_LVT):((45488=code)&&_LV)))):((code<45544)?((code<45516)?((45489<=code&&code<=45515)&&_LVT):((code<45517)?((45516=code)&&_LV):((45517<=code&&code<=45543)&&_LVT))):((code<45545)?((45544=code)&&_LV):((code<45572)?((45545<=code&&code<=45571)&&_LVT):((45572=code)&&_LV))))))):((code<45908)?((code<45740)?((code<45656)?((code<45601)?((code<45600)?((45573<=code&&code<=45599)&&_LVT):((45600=code)&&_LV)):((code<45628)?((45601<=code&&code<=45627)&&_LVT):((code<45629)?((45628=code)&&_LV):((45629<=code&&code<=45655)&&_LVT)))):((code<45685)?((code<45657)?((45656=code)&&_LV):((code<45684)?((45657<=code&&code<=45683)&&_LVT):((45684=code)&&_LV))):((code<45712)?((45685<=code&&code<=45711)&&_LVT):((code<45713)?((45712=code)&&_LV):((45713<=code&&code<=45739)&&_LVT))))):((code<45824)?((code<45769)?((code<45741)?((45740=code)&&_LV):((code<45768)?((45741<=code&&code<=45767)&&_LVT):((45768=code)&&_LV))):((code<45796)?((45769<=code&&code<=45795)&&_LVT):((code<45797)?((45796=code)&&_LV):((45797<=code&&code<=45823)&&_LVT)))):((code<45853)?((code<45825)?((45824=code)&&_LV):((code<45852)?((45825<=code&&code<=45851)&&_LVT):((45852=code)&&_LV))):((code<45880)?((45853<=code&&code<=45879)&&_LVT):((code<45881)?((45880=code)&&_LV):((45881<=code&&code<=45907)&&_LVT)))))):((code<46049)?((code<45965)?((code<45936)?((code<45909)?((45908=code)&&_LV):((45909<=code&&code<=45935)&&_LVT)):((code<45937)?((45936=code)&&_LV):((code<45964)?((45937<=code&&code<=45963)&&_LVT):((45964=code)&&_LV)))):((code<46020)?((code<45992)?((45965<=code&&code<=45991)&&_LVT):((code<45993)?((45992=code)&&_LV):((45993<=code&&code<=46019)&&_LVT))):((code<46021)?((46020=code)&&_LV):((code<46048)?((46021<=code&&code<=46047)&&_LVT):((46048=code)&&_LV))))):((code<46133)?((code<46104)?((code<46076)?((46049<=code&&code<=46075)&&_LVT):((code<46077)?((46076=code)&&_LV):((46077<=code&&code<=46103)&&_LVT))):((code<46105)?((46104=code)&&_LV):((code<46132)?((46105<=code&&code<=46131)&&_LVT):((46132=code)&&_LV)))):((code<46188)?((code<46160)?((46133<=code&&code<=46159)&&_LVT):((code<46161)?((46160=code)&&_LV):((46161<=code&&code<=46187)&&_LVT))):((code<46189)?((46188=code)&&_LV):((code<46216)?((46189<=code&&code<=46215)&&_LVT):((46216=code)&&_LV))))))))):((code<47477)?((code<46860)?((code<46525)?((code<46384)?((code<46300)?((code<46245)?((code<46244)?((46217<=code&&code<=46243)&&_LVT):((46244=code)&&_LV)):((code<46272)?((46245<=code&&code<=46271)&&_LVT):((code<46273)?((46272=code)&&_LV):((46273<=code&&code<=46299)&&_LVT)))):((code<46329)?((code<46301)?((46300=code)&&_LV):((code<46328)?((46301<=code&&code<=46327)&&_LVT):((46328=code)&&_LV))):((code<46356)?((46329<=code&&code<=46355)&&_LVT):((code<46357)?((46356=code)&&_LV):((46357<=code&&code<=46383)&&_LVT))))):((code<46441)?((code<46412)?((code<46385)?((46384=code)&&_LV):((46385<=code&&code<=46411)&&_LVT)):((code<46413)?((46412=code)&&_LV):((code<46440)?((46413<=code&&code<=46439)&&_LVT):((46440=code)&&_LV)))):((code<46496)?((code<46468)?((46441<=code&&code<=46467)&&_LVT):((code<46469)?((46468=code)&&_LV):((46469<=code&&code<=46495)&&_LVT))):((code<46497)?((46496=code)&&_LV):((code<46524)?((46497<=code&&code<=46523)&&_LVT):((46524=code)&&_LV)))))):((code<46692)?((code<46608)?((code<46553)?((code<46552)?((46525<=code&&code<=46551)&&_LVT):((46552=code)&&_LV)):((code<46580)?((46553<=code&&code<=46579)&&_LVT):((code<46581)?((46580=code)&&_LV):((46581<=code&&code<=46607)&&_LVT)))):((code<46637)?((code<46609)?((46608=code)&&_LV):((code<46636)?((46609<=code&&code<=46635)&&_LVT):((46636=code)&&_LV))):((code<46664)?((46637<=code&&code<=46663)&&_LVT):((code<46665)?((46664=code)&&_LV):((46665<=code&&code<=46691)&&_LVT))))):((code<46776)?((code<46721)?((code<46693)?((46692=code)&&_LV):((code<46720)?((46693<=code&&code<=46719)&&_LVT):((46720=code)&&_LV))):((code<46748)?((46721<=code&&code<=46747)&&_LVT):((code<46749)?((46748=code)&&_LV):((46749<=code&&code<=46775)&&_LVT)))):((code<46805)?((code<46777)?((46776=code)&&_LV):((code<46804)?((46777<=code&&code<=46803)&&_LVT):((46804=code)&&_LV))):((code<46832)?((46805<=code&&code<=46831)&&_LVT):((code<46833)?((46832=code)&&_LV):((46833<=code&&code<=46859)&&_LVT))))))):((code<47168)?((code<47001)?((code<46917)?((code<46888)?((code<46861)?((46860=code)&&_LV):((46861<=code&&code<=46887)&&_LVT)):((code<46889)?((46888=code)&&_LV):((code<46916)?((46889<=code&&code<=46915)&&_LVT):((46916=code)&&_LV)))):((code<46972)?((code<46944)?((46917<=code&&code<=46943)&&_LVT):((code<46945)?((46944=code)&&_LV):((46945<=code&&code<=46971)&&_LVT))):((code<46973)?((46972=code)&&_LV):((code<47000)?((46973<=code&&code<=46999)&&_LVT):((47000=code)&&_LV))))):((code<47084)?((code<47029)?((code<47028)?((47001<=code&&code<=47027)&&_LVT):((47028=code)&&_LV)):((code<47056)?((47029<=code&&code<=47055)&&_LVT):((code<47057)?((47056=code)&&_LV):((47057<=code&&code<=47083)&&_LVT)))):((code<47113)?((code<47085)?((47084=code)&&_LV):((code<47112)?((47085<=code&&code<=47111)&&_LVT):((47112=code)&&_LV))):((code<47140)?((47113<=code&&code<=47139)&&_LVT):((code<47141)?((47140=code)&&_LV):((47141<=code&&code<=47167)&&_LVT)))))):((code<47309)?((code<47225)?((code<47196)?((code<47169)?((47168=code)&&_LV):((47169<=code&&code<=47195)&&_LVT)):((code<47197)?((47196=code)&&_LV):((code<47224)?((47197<=code&&code<=47223)&&_LVT):((47224=code)&&_LV)))):((code<47280)?((code<47252)?((47225<=code&&code<=47251)&&_LVT):((code<47253)?((47252=code)&&_LV):((47253<=code&&code<=47279)&&_LVT))):((code<47281)?((47280=code)&&_LV):((code<47308)?((47281<=code&&code<=47307)&&_LVT):((47308=code)&&_LV))))):((code<47393)?((code<47364)?((code<47336)?((47309<=code&&code<=47335)&&_LVT):((code<47337)?((47336=code)&&_LV):((47337<=code&&code<=47363)&&_LVT))):((code<47365)?((47364=code)&&_LV):((code<47392)?((47365<=code&&code<=47391)&&_LVT):((47392=code)&&_LV)))):((code<47448)?((code<47420)?((47393<=code&&code<=47419)&&_LVT):((code<47421)?((47420=code)&&_LV):((47421<=code&&code<=47447)&&_LVT))):((code<47449)?((47448=code)&&_LV):((code<47476)?((47449<=code&&code<=47475)&&_LVT):((47476=code)&&_LV)))))))):((code<48120)?((code<47785)?((code<47644)?((code<47560)?((code<47505)?((code<47504)?((47477<=code&&code<=47503)&&_LVT):((47504=code)&&_LV)):((code<47532)?((47505<=code&&code<=47531)&&_LVT):((code<47533)?((47532=code)&&_LV):((47533<=code&&code<=47559)&&_LVT)))):((code<47589)?((code<47561)?((47560=code)&&_LV):((code<47588)?((47561<=code&&code<=47587)&&_LVT):((47588=code)&&_LV))):((code<47616)?((47589<=code&&code<=47615)&&_LVT):((code<47617)?((47616=code)&&_LV):((47617<=code&&code<=47643)&&_LVT))))):((code<47701)?((code<47672)?((code<47645)?((47644=code)&&_LV):((47645<=code&&code<=47671)&&_LVT)):((code<47673)?((47672=code)&&_LV):((code<47700)?((47673<=code&&code<=47699)&&_LVT):((47700=code)&&_LV)))):((code<47756)?((code<47728)?((47701<=code&&code<=47727)&&_LVT):((code<47729)?((47728=code)&&_LV):((47729<=code&&code<=47755)&&_LVT))):((code<47757)?((47756=code)&&_LV):((code<47784)?((47757<=code&&code<=47783)&&_LVT):((47784=code)&&_LV)))))):((code<47952)?((code<47868)?((code<47813)?((code<47812)?((47785<=code&&code<=47811)&&_LVT):((47812=code)&&_LV)):((code<47840)?((47813<=code&&code<=47839)&&_LVT):((code<47841)?((47840=code)&&_LV):((47841<=code&&code<=47867)&&_LVT)))):((code<47897)?((code<47869)?((47868=code)&&_LV):((code<47896)?((47869<=code&&code<=47895)&&_LVT):((47896=code)&&_LV))):((code<47924)?((47897<=code&&code<=47923)&&_LVT):((code<47925)?((47924=code)&&_LV):((47925<=code&&code<=47951)&&_LVT))))):((code<48036)?((code<47981)?((code<47953)?((47952=code)&&_LV):((code<47980)?((47953<=code&&code<=47979)&&_LVT):((47980=code)&&_LV))):((code<48008)?((47981<=code&&code<=48007)&&_LVT):((code<48009)?((48008=code)&&_LV):((48009<=code&&code<=48035)&&_LVT)))):((code<48065)?((code<48037)?((48036=code)&&_LV):((code<48064)?((48037<=code&&code<=48063)&&_LVT):((48064=code)&&_LV))):((code<48092)?((48065<=code&&code<=48091)&&_LVT):((code<48093)?((48092=code)&&_LV):((48093<=code&&code<=48119)&&_LVT))))))):((code<48429)?((code<48261)?((code<48177)?((code<48148)?((code<48121)?((48120=code)&&_LV):((48121<=code&&code<=48147)&&_LVT)):((code<48149)?((48148=code)&&_LV):((code<48176)?((48149<=code&&code<=48175)&&_LVT):((48176=code)&&_LV)))):((code<48232)?((code<48204)?((48177<=code&&code<=48203)&&_LVT):((code<48205)?((48204=code)&&_LV):((48205<=code&&code<=48231)&&_LVT))):((code<48233)?((48232=code)&&_LV):((code<48260)?((48233<=code&&code<=48259)&&_LVT):((48260=code)&&_LV))))):((code<48345)?((code<48316)?((code<48288)?((48261<=code&&code<=48287)&&_LVT):((code<48289)?((48288=code)&&_LV):((48289<=code&&code<=48315)&&_LVT))):((code<48317)?((48316=code)&&_LV):((code<48344)?((48317<=code&&code<=48343)&&_LVT):((48344=code)&&_LV)))):((code<48400)?((code<48372)?((48345<=code&&code<=48371)&&_LVT):((code<48373)?((48372=code)&&_LV):((48373<=code&&code<=48399)&&_LVT))):((code<48401)?((48400=code)&&_LV):((code<48428)?((48401<=code&&code<=48427)&&_LVT):((48428=code)&&_LV)))))):((code<48596)?((code<48512)?((code<48457)?((code<48456)?((48429<=code&&code<=48455)&&_LVT):((48456=code)&&_LV)):((code<48484)?((48457<=code&&code<=48483)&&_LVT):((code<48485)?((48484=code)&&_LV):((48485<=code&&code<=48511)&&_LVT)))):((code<48541)?((code<48513)?((48512=code)&&_LV):((code<48540)?((48513<=code&&code<=48539)&&_LVT):((48540=code)&&_LV))):((code<48568)?((48541<=code&&code<=48567)&&_LVT):((code<48569)?((48568=code)&&_LV):((48569<=code&&code<=48595)&&_LVT))))):((code<48680)?((code<48625)?((code<48597)?((48596=code)&&_LV):((code<48624)?((48597<=code&&code<=48623)&&_LVT):((48624=code)&&_LV))):((code<48652)?((48625<=code&&code<=48651)&&_LVT):((code<48653)?((48652=code)&&_LV):((48653<=code&&code<=48679)&&_LVT)))):((code<48709)?((code<48681)?((48680=code)&&_LV):((code<48708)?((48681<=code&&code<=48707)&&_LVT):((48708=code)&&_LV))):((code<48736)?((48709<=code&&code<=48735)&&_LVT):((code<48737)?((48736=code)&&_LV):((48737<=code&&code<=48763)&&_LVT))))))))))):((code<53832)?((code<51285)?((code<50024)?((code<49381)?((code<49072)?((code<48905)?((code<48821)?((code<48792)?((code<48765)?((48764=code)&&_LV):((48765<=code&&code<=48791)&&_LVT)):((code<48793)?((48792=code)&&_LV):((code<48820)?((48793<=code&&code<=48819)&&_LVT):((48820=code)&&_LV)))):((code<48876)?((code<48848)?((48821<=code&&code<=48847)&&_LVT):((code<48849)?((48848=code)&&_LV):((48849<=code&&code<=48875)&&_LVT))):((code<48877)?((48876=code)&&_LV):((code<48904)?((48877<=code&&code<=48903)&&_LVT):((48904=code)&&_LV))))):((code<48988)?((code<48933)?((code<48932)?((48905<=code&&code<=48931)&&_LVT):((48932=code)&&_LV)):((code<48960)?((48933<=code&&code<=48959)&&_LVT):((code<48961)?((48960=code)&&_LV):((48961<=code&&code<=48987)&&_LVT)))):((code<49017)?((code<48989)?((48988=code)&&_LV):((code<49016)?((48989<=code&&code<=49015)&&_LVT):((49016=code)&&_LV))):((code<49044)?((49017<=code&&code<=49043)&&_LVT):((code<49045)?((49044=code)&&_LV):((49045<=code&&code<=49071)&&_LVT)))))):((code<49213)?((code<49129)?((code<49100)?((code<49073)?((49072=code)&&_LV):((49073<=code&&code<=49099)&&_LVT)):((code<49101)?((49100=code)&&_LV):((code<49128)?((49101<=code&&code<=49127)&&_LVT):((49128=code)&&_LV)))):((code<49184)?((code<49156)?((49129<=code&&code<=49155)&&_LVT):((code<49157)?((49156=code)&&_LV):((49157<=code&&code<=49183)&&_LVT))):((code<49185)?((49184=code)&&_LV):((code<49212)?((49185<=code&&code<=49211)&&_LVT):((49212=code)&&_LV))))):((code<49297)?((code<49268)?((code<49240)?((49213<=code&&code<=49239)&&_LVT):((code<49241)?((49240=code)&&_LV):((49241<=code&&code<=49267)&&_LVT))):((code<49269)?((49268=code)&&_LV):((code<49296)?((49269<=code&&code<=49295)&&_LVT):((49296=code)&&_LV)))):((code<49352)?((code<49324)?((49297<=code&&code<=49323)&&_LVT):((code<49325)?((49324=code)&&_LV):((49325<=code&&code<=49351)&&_LVT))):((code<49353)?((49352=code)&&_LV):((code<49380)?((49353<=code&&code<=49379)&&_LVT):((49380=code)&&_LV))))))):((code<49689)?((code<49548)?((code<49464)?((code<49409)?((code<49408)?((49381<=code&&code<=49407)&&_LVT):((49408=code)&&_LV)):((code<49436)?((49409<=code&&code<=49435)&&_LVT):((code<49437)?((49436=code)&&_LV):((49437<=code&&code<=49463)&&_LVT)))):((code<49493)?((code<49465)?((49464=code)&&_LV):((code<49492)?((49465<=code&&code<=49491)&&_LVT):((49492=code)&&_LV))):((code<49520)?((49493<=code&&code<=49519)&&_LVT):((code<49521)?((49520=code)&&_LV):((49521<=code&&code<=49547)&&_LVT))))):((code<49605)?((code<49576)?((code<49549)?((49548=code)&&_LV):((49549<=code&&code<=49575)&&_LVT)):((code<49577)?((49576=code)&&_LV):((code<49604)?((49577<=code&&code<=49603)&&_LVT):((49604=code)&&_LV)))):((code<49660)?((code<49632)?((49605<=code&&code<=49631)&&_LVT):((code<49633)?((49632=code)&&_LV):((49633<=code&&code<=49659)&&_LVT))):((code<49661)?((49660=code)&&_LV):((code<49688)?((49661<=code&&code<=49687)&&_LVT):((49688=code)&&_LV)))))):((code<49856)?((code<49772)?((code<49717)?((code<49716)?((49689<=code&&code<=49715)&&_LVT):((49716=code)&&_LV)):((code<49744)?((49717<=code&&code<=49743)&&_LVT):((code<49745)?((49744=code)&&_LV):((49745<=code&&code<=49771)&&_LVT)))):((code<49801)?((code<49773)?((49772=code)&&_LV):((code<49800)?((49773<=code&&code<=49799)&&_LVT):((49800=code)&&_LV))):((code<49828)?((49801<=code&&code<=49827)&&_LVT):((code<49829)?((49828=code)&&_LV):((49829<=code&&code<=49855)&&_LVT))))):((code<49940)?((code<49885)?((code<49857)?((49856=code)&&_LV):((code<49884)?((49857<=code&&code<=49883)&&_LVT):((49884=code)&&_LV))):((code<49912)?((49885<=code&&code<=49911)&&_LVT):((code<49913)?((49912=code)&&_LV):((49913<=code&&code<=49939)&&_LVT)))):((code<49969)?((code<49941)?((49940=code)&&_LV):((code<49968)?((49941<=code&&code<=49967)&&_LVT):((49968=code)&&_LV))):((code<49996)?((49969<=code&&code<=49995)&&_LVT):((code<49997)?((49996=code)&&_LV):((49997<=code&&code<=50023)&&_LVT)))))))):((code<50641)?((code<50332)?((code<50165)?((code<50081)?((code<50052)?((code<50025)?((50024=code)&&_LV):((50025<=code&&code<=50051)&&_LVT)):((code<50053)?((50052=code)&&_LV):((code<50080)?((50053<=code&&code<=50079)&&_LVT):((50080=code)&&_LV)))):((code<50136)?((code<50108)?((50081<=code&&code<=50107)&&_LVT):((code<50109)?((50108=code)&&_LV):((50109<=code&&code<=50135)&&_LVT))):((code<50137)?((50136=code)&&_LV):((code<50164)?((50137<=code&&code<=50163)&&_LVT):((50164=code)&&_LV))))):((code<50248)?((code<50193)?((code<50192)?((50165<=code&&code<=50191)&&_LVT):((50192=code)&&_LV)):((code<50220)?((50193<=code&&code<=50219)&&_LVT):((code<50221)?((50220=code)&&_LV):((50221<=code&&code<=50247)&&_LVT)))):((code<50277)?((code<50249)?((50248=code)&&_LV):((code<50276)?((50249<=code&&code<=50275)&&_LVT):((50276=code)&&_LV))):((code<50304)?((50277<=code&&code<=50303)&&_LVT):((code<50305)?((50304=code)&&_LV):((50305<=code&&code<=50331)&&_LVT)))))):((code<50473)?((code<50389)?((code<50360)?((code<50333)?((50332=code)&&_LV):((50333<=code&&code<=50359)&&_LVT)):((code<50361)?((50360=code)&&_LV):((code<50388)?((50361<=code&&code<=50387)&&_LVT):((50388=code)&&_LV)))):((code<50444)?((code<50416)?((50389<=code&&code<=50415)&&_LVT):((code<50417)?((50416=code)&&_LV):((50417<=code&&code<=50443)&&_LVT))):((code<50445)?((50444=code)&&_LV):((code<50472)?((50445<=code&&code<=50471)&&_LVT):((50472=code)&&_LV))))):((code<50557)?((code<50528)?((code<50500)?((50473<=code&&code<=50499)&&_LVT):((code<50501)?((50500=code)&&_LV):((50501<=code&&code<=50527)&&_LVT))):((code<50529)?((50528=code)&&_LV):((code<50556)?((50529<=code&&code<=50555)&&_LVT):((50556=code)&&_LV)))):((code<50612)?((code<50584)?((50557<=code&&code<=50583)&&_LVT):((code<50585)?((50584=code)&&_LV):((50585<=code&&code<=50611)&&_LVT))):((code<50613)?((50612=code)&&_LV):((code<50640)?((50613<=code&&code<=50639)&&_LVT):((50640=code)&&_LV))))))):((code<50976)?((code<50808)?((code<50724)?((code<50669)?((code<50668)?((50641<=code&&code<=50667)&&_LVT):((50668=code)&&_LV)):((code<50696)?((50669<=code&&code<=50695)&&_LVT):((code<50697)?((50696=code)&&_LV):((50697<=code&&code<=50723)&&_LVT)))):((code<50753)?((code<50725)?((50724=code)&&_LV):((code<50752)?((50725<=code&&code<=50751)&&_LVT):((50752=code)&&_LV))):((code<50780)?((50753<=code&&code<=50779)&&_LVT):((code<50781)?((50780=code)&&_LV):((50781<=code&&code<=50807)&&_LVT))))):((code<50892)?((code<50837)?((code<50809)?((50808=code)&&_LV):((code<50836)?((50809<=code&&code<=50835)&&_LVT):((50836=code)&&_LV))):((code<50864)?((50837<=code&&code<=50863)&&_LVT):((code<50865)?((50864=code)&&_LV):((50865<=code&&code<=50891)&&_LVT)))):((code<50921)?((code<50893)?((50892=code)&&_LV):((code<50920)?((50893<=code&&code<=50919)&&_LVT):((50920=code)&&_LV))):((code<50948)?((50921<=code&&code<=50947)&&_LVT):((code<50949)?((50948=code)&&_LV):((50949<=code&&code<=50975)&&_LVT)))))):((code<51117)?((code<51033)?((code<51004)?((code<50977)?((50976=code)&&_LV):((50977<=code&&code<=51003)&&_LVT)):((code<51005)?((51004=code)&&_LV):((code<51032)?((51005<=code&&code<=51031)&&_LVT):((51032=code)&&_LV)))):((code<51088)?((code<51060)?((51033<=code&&code<=51059)&&_LVT):((code<51061)?((51060=code)&&_LV):((51061<=code&&code<=51087)&&_LVT))):((code<51089)?((51088=code)&&_LV):((code<51116)?((51089<=code&&code<=51115)&&_LVT):((51116=code)&&_LV))))):((code<51201)?((code<51172)?((code<51144)?((51117<=code&&code<=51143)&&_LVT):((code<51145)?((51144=code)&&_LV):((51145<=code&&code<=51171)&&_LVT))):((code<51173)?((51172=code)&&_LV):((code<51200)?((51173<=code&&code<=51199)&&_LVT):((51200=code)&&_LV)))):((code<51256)?((code<51228)?((51201<=code&&code<=51227)&&_LVT):((code<51229)?((51228=code)&&_LV):((51229<=code&&code<=51255)&&_LVT))):((code<51257)?((51256=code)&&_LV):((code<51284)?((51257<=code&&code<=51283)&&_LVT):((51284=code)&&_LV))))))))):((code<52545)?((code<51928)?((code<51593)?((code<51452)?((code<51368)?((code<51313)?((code<51312)?((51285<=code&&code<=51311)&&_LVT):((51312=code)&&_LV)):((code<51340)?((51313<=code&&code<=51339)&&_LVT):((code<51341)?((51340=code)&&_LV):((51341<=code&&code<=51367)&&_LVT)))):((code<51397)?((code<51369)?((51368=code)&&_LV):((code<51396)?((51369<=code&&code<=51395)&&_LVT):((51396=code)&&_LV))):((code<51424)?((51397<=code&&code<=51423)&&_LVT):((code<51425)?((51424=code)&&_LV):((51425<=code&&code<=51451)&&_LVT))))):((code<51509)?((code<51480)?((code<51453)?((51452=code)&&_LV):((51453<=code&&code<=51479)&&_LVT)):((code<51481)?((51480=code)&&_LV):((code<51508)?((51481<=code&&code<=51507)&&_LVT):((51508=code)&&_LV)))):((code<51564)?((code<51536)?((51509<=code&&code<=51535)&&_LVT):((code<51537)?((51536=code)&&_LV):((51537<=code&&code<=51563)&&_LVT))):((code<51565)?((51564=code)&&_LV):((code<51592)?((51565<=code&&code<=51591)&&_LVT):((51592=code)&&_LV)))))):((code<51760)?((code<51676)?((code<51621)?((code<51620)?((51593<=code&&code<=51619)&&_LVT):((51620=code)&&_LV)):((code<51648)?((51621<=code&&code<=51647)&&_LVT):((code<51649)?((51648=code)&&_LV):((51649<=code&&code<=51675)&&_LVT)))):((code<51705)?((code<51677)?((51676=code)&&_LV):((code<51704)?((51677<=code&&code<=51703)&&_LVT):((51704=code)&&_LV))):((code<51732)?((51705<=code&&code<=51731)&&_LVT):((code<51733)?((51732=code)&&_LV):((51733<=code&&code<=51759)&&_LVT))))):((code<51844)?((code<51789)?((code<51761)?((51760=code)&&_LV):((code<51788)?((51761<=code&&code<=51787)&&_LVT):((51788=code)&&_LV))):((code<51816)?((51789<=code&&code<=51815)&&_LVT):((code<51817)?((51816=code)&&_LV):((51817<=code&&code<=51843)&&_LVT)))):((code<51873)?((code<51845)?((51844=code)&&_LV):((code<51872)?((51845<=code&&code<=51871)&&_LVT):((51872=code)&&_LV))):((code<51900)?((51873<=code&&code<=51899)&&_LVT):((code<51901)?((51900=code)&&_LV):((51901<=code&&code<=51927)&&_LVT))))))):((code<52236)?((code<52069)?((code<51985)?((code<51956)?((code<51929)?((51928=code)&&_LV):((51929<=code&&code<=51955)&&_LVT)):((code<51957)?((51956=code)&&_LV):((code<51984)?((51957<=code&&code<=51983)&&_LVT):((51984=code)&&_LV)))):((code<52040)?((code<52012)?((51985<=code&&code<=52011)&&_LVT):((code<52013)?((52012=code)&&_LV):((52013<=code&&code<=52039)&&_LVT))):((code<52041)?((52040=code)&&_LV):((code<52068)?((52041<=code&&code<=52067)&&_LVT):((52068=code)&&_LV))))):((code<52152)?((code<52097)?((code<52096)?((52069<=code&&code<=52095)&&_LVT):((52096=code)&&_LV)):((code<52124)?((52097<=code&&code<=52123)&&_LVT):((code<52125)?((52124=code)&&_LV):((52125<=code&&code<=52151)&&_LVT)))):((code<52181)?((code<52153)?((52152=code)&&_LV):((code<52180)?((52153<=code&&code<=52179)&&_LVT):((52180=code)&&_LV))):((code<52208)?((52181<=code&&code<=52207)&&_LVT):((code<52209)?((52208=code)&&_LV):((52209<=code&&code<=52235)&&_LVT)))))):((code<52377)?((code<52293)?((code<52264)?((code<52237)?((52236=code)&&_LV):((52237<=code&&code<=52263)&&_LVT)):((code<52265)?((52264=code)&&_LV):((code<52292)?((52265<=code&&code<=52291)&&_LVT):((52292=code)&&_LV)))):((code<52348)?((code<52320)?((52293<=code&&code<=52319)&&_LVT):((code<52321)?((52320=code)&&_LV):((52321<=code&&code<=52347)&&_LVT))):((code<52349)?((52348=code)&&_LV):((code<52376)?((52349<=code&&code<=52375)&&_LVT):((52376=code)&&_LV))))):((code<52461)?((code<52432)?((code<52404)?((52377<=code&&code<=52403)&&_LVT):((code<52405)?((52404=code)&&_LV):((52405<=code&&code<=52431)&&_LVT))):((code<52433)?((52432=code)&&_LV):((code<52460)?((52433<=code&&code<=52459)&&_LVT):((52460=code)&&_LV)))):((code<52516)?((code<52488)?((52461<=code&&code<=52487)&&_LVT):((code<52489)?((52488=code)&&_LV):((52489<=code&&code<=52515)&&_LVT))):((code<52517)?((52516=code)&&_LV):((code<52544)?((52517<=code&&code<=52543)&&_LVT):((52544=code)&&_LV)))))))):((code<53188)?((code<52853)?((code<52712)?((code<52628)?((code<52573)?((code<52572)?((52545<=code&&code<=52571)&&_LVT):((52572=code)&&_LV)):((code<52600)?((52573<=code&&code<=52599)&&_LVT):((code<52601)?((52600=code)&&_LV):((52601<=code&&code<=52627)&&_LVT)))):((code<52657)?((code<52629)?((52628=code)&&_LV):((code<52656)?((52629<=code&&code<=52655)&&_LVT):((52656=code)&&_LV))):((code<52684)?((52657<=code&&code<=52683)&&_LVT):((code<52685)?((52684=code)&&_LV):((52685<=code&&code<=52711)&&_LVT))))):((code<52769)?((code<52740)?((code<52713)?((52712=code)&&_LV):((52713<=code&&code<=52739)&&_LVT)):((code<52741)?((52740=code)&&_LV):((code<52768)?((52741<=code&&code<=52767)&&_LVT):((52768=code)&&_LV)))):((code<52824)?((code<52796)?((52769<=code&&code<=52795)&&_LVT):((code<52797)?((52796=code)&&_LV):((52797<=code&&code<=52823)&&_LVT))):((code<52825)?((52824=code)&&_LV):((code<52852)?((52825<=code&&code<=52851)&&_LVT):((52852=code)&&_LV)))))):((code<53020)?((code<52936)?((code<52881)?((code<52880)?((52853<=code&&code<=52879)&&_LVT):((52880=code)&&_LV)):((code<52908)?((52881<=code&&code<=52907)&&_LVT):((code<52909)?((52908=code)&&_LV):((52909<=code&&code<=52935)&&_LVT)))):((code<52965)?((code<52937)?((52936=code)&&_LV):((code<52964)?((52937<=code&&code<=52963)&&_LVT):((52964=code)&&_LV))):((code<52992)?((52965<=code&&code<=52991)&&_LVT):((code<52993)?((52992=code)&&_LV):((52993<=code&&code<=53019)&&_LVT))))):((code<53104)?((code<53049)?((code<53021)?((53020=code)&&_LV):((code<53048)?((53021<=code&&code<=53047)&&_LVT):((53048=code)&&_LV))):((code<53076)?((53049<=code&&code<=53075)&&_LVT):((code<53077)?((53076=code)&&_LV):((53077<=code&&code<=53103)&&_LVT)))):((code<53133)?((code<53105)?((53104=code)&&_LV):((code<53132)?((53105<=code&&code<=53131)&&_LVT):((53132=code)&&_LV))):((code<53160)?((53133<=code&&code<=53159)&&_LVT):((code<53161)?((53160=code)&&_LV):((53161<=code&&code<=53187)&&_LVT))))))):((code<53497)?((code<53329)?((code<53245)?((code<53216)?((code<53189)?((53188=code)&&_LV):((53189<=code&&code<=53215)&&_LVT)):((code<53217)?((53216=code)&&_LV):((code<53244)?((53217<=code&&code<=53243)&&_LVT):((53244=code)&&_LV)))):((code<53300)?((code<53272)?((53245<=code&&code<=53271)&&_LVT):((code<53273)?((53272=code)&&_LV):((53273<=code&&code<=53299)&&_LVT))):((code<53301)?((53300=code)&&_LV):((code<53328)?((53301<=code&&code<=53327)&&_LVT):((53328=code)&&_LV))))):((code<53413)?((code<53384)?((code<53356)?((53329<=code&&code<=53355)&&_LVT):((code<53357)?((53356=code)&&_LV):((53357<=code&&code<=53383)&&_LVT))):((code<53385)?((53384=code)&&_LV):((code<53412)?((53385<=code&&code<=53411)&&_LVT):((53412=code)&&_LV)))):((code<53468)?((code<53440)?((53413<=code&&code<=53439)&&_LVT):((code<53441)?((53440=code)&&_LV):((53441<=code&&code<=53467)&&_LVT))):((code<53469)?((53468=code)&&_LV):((code<53496)?((53469<=code&&code<=53495)&&_LVT):((53496=code)&&_LV)))))):((code<53664)?((code<53580)?((code<53525)?((code<53524)?((53497<=code&&code<=53523)&&_LVT):((53524=code)&&_LV)):((code<53552)?((53525<=code&&code<=53551)&&_LVT):((code<53553)?((53552=code)&&_LV):((53553<=code&&code<=53579)&&_LVT)))):((code<53609)?((code<53581)?((53580=code)&&_LV):((code<53608)?((53581<=code&&code<=53607)&&_LVT):((53608=code)&&_LV))):((code<53636)?((53609<=code&&code<=53635)&&_LVT):((code<53637)?((53636=code)&&_LV):((53637<=code&&code<=53663)&&_LVT))))):((code<53748)?((code<53693)?((code<53665)?((53664=code)&&_LV):((code<53692)?((53665<=code&&code<=53691)&&_LVT):((53692=code)&&_LV))):((code<53720)?((53693<=code&&code<=53719)&&_LVT):((code<53721)?((53720=code)&&_LV):((53721<=code&&code<=53747)&&_LVT)))):((code<53777)?((code<53749)?((53748=code)&&_LV):((code<53776)?((53749<=code&&code<=53775)&&_LVT):((53776=code)&&_LV))):((code<53804)?((53777<=code&&code<=53803)&&_LVT):((code<53805)?((53804=code)&&_LV):((53805<=code&&code<=53831)&&_LVT)))))))))):((code<70832)?((code<55092)?((code<54449)?((code<54140)?((code<53973)?((code<53889)?((code<53860)?((code<53833)?((53832=code)&&_LV):((53833<=code&&code<=53859)&&_LVT)):((code<53861)?((53860=code)&&_LV):((code<53888)?((53861<=code&&code<=53887)&&_LVT):((53888=code)&&_LV)))):((code<53944)?((code<53916)?((53889<=code&&code<=53915)&&_LVT):((code<53917)?((53916=code)&&_LV):((53917<=code&&code<=53943)&&_LVT))):((code<53945)?((53944=code)&&_LV):((code<53972)?((53945<=code&&code<=53971)&&_LVT):((53972=code)&&_LV))))):((code<54056)?((code<54001)?((code<54000)?((53973<=code&&code<=53999)&&_LVT):((54000=code)&&_LV)):((code<54028)?((54001<=code&&code<=54027)&&_LVT):((code<54029)?((54028=code)&&_LV):((54029<=code&&code<=54055)&&_LVT)))):((code<54085)?((code<54057)?((54056=code)&&_LV):((code<54084)?((54057<=code&&code<=54083)&&_LVT):((54084=code)&&_LV))):((code<54112)?((54085<=code&&code<=54111)&&_LVT):((code<54113)?((54112=code)&&_LV):((54113<=code&&code<=54139)&&_LVT)))))):((code<54281)?((code<54197)?((code<54168)?((code<54141)?((54140=code)&&_LV):((54141<=code&&code<=54167)&&_LVT)):((code<54169)?((54168=code)&&_LV):((code<54196)?((54169<=code&&code<=54195)&&_LVT):((54196=code)&&_LV)))):((code<54252)?((code<54224)?((54197<=code&&code<=54223)&&_LVT):((code<54225)?((54224=code)&&_LV):((54225<=code&&code<=54251)&&_LVT))):((code<54253)?((54252=code)&&_LV):((code<54280)?((54253<=code&&code<=54279)&&_LVT):((54280=code)&&_LV))))):((code<54365)?((code<54336)?((code<54308)?((54281<=code&&code<=54307)&&_LVT):((code<54309)?((54308=code)&&_LV):((54309<=code&&code<=54335)&&_LVT))):((code<54337)?((54336=code)&&_LV):((code<54364)?((54337<=code&&code<=54363)&&_LVT):((54364=code)&&_LV)))):((code<54420)?((code<54392)?((54365<=code&&code<=54391)&&_LVT):((code<54393)?((54392=code)&&_LV):((54393<=code&&code<=54419)&&_LVT))):((code<54421)?((54420=code)&&_LV):((code<54448)?((54421<=code&&code<=54447)&&_LVT):((54448=code)&&_LV))))))):((code<54757)?((code<54616)?((code<54532)?((code<54477)?((code<54476)?((54449<=code&&code<=54475)&&_LVT):((54476=code)&&_LV)):((code<54504)?((54477<=code&&code<=54503)&&_LVT):((code<54505)?((54504=code)&&_LV):((54505<=code&&code<=54531)&&_LVT)))):((code<54561)?((code<54533)?((54532=code)&&_LV):((code<54560)?((54533<=code&&code<=54559)&&_LVT):((54560=code)&&_LV))):((code<54588)?((54561<=code&&code<=54587)&&_LVT):((code<54589)?((54588=code)&&_LV):((54589<=code&&code<=54615)&&_LVT))))):((code<54673)?((code<54644)?((code<54617)?((54616=code)&&_LV):((54617<=code&&code<=54643)&&_LVT)):((code<54645)?((54644=code)&&_LV):((code<54672)?((54645<=code&&code<=54671)&&_LVT):((54672=code)&&_LV)))):((code<54728)?((code<54700)?((54673<=code&&code<=54699)&&_LVT):((code<54701)?((54700=code)&&_LV):((54701<=code&&code<=54727)&&_LVT))):((code<54729)?((54728=code)&&_LV):((code<54756)?((54729<=code&&code<=54755)&&_LVT):((54756=code)&&_LV)))))):((code<54924)?((code<54840)?((code<54785)?((code<54784)?((54757<=code&&code<=54783)&&_LVT):((54784=code)&&_LV)):((code<54812)?((54785<=code&&code<=54811)&&_LVT):((code<54813)?((54812=code)&&_LV):((54813<=code&&code<=54839)&&_LVT)))):((code<54869)?((code<54841)?((54840=code)&&_LV):((code<54868)?((54841<=code&&code<=54867)&&_LVT):((54868=code)&&_LV))):((code<54896)?((54869<=code&&code<=54895)&&_LVT):((code<54897)?((54896=code)&&_LV):((54897<=code&&code<=54923)&&_LVT))))):((code<55008)?((code<54953)?((code<54925)?((54924=code)&&_LV):((code<54952)?((54925<=code&&code<=54951)&&_LVT):((54952=code)&&_LV))):((code<54980)?((54953<=code&&code<=54979)&&_LVT):((code<54981)?((54980=code)&&_LV):((54981<=code&&code<=55007)&&_LVT)))):((code<55037)?((code<55009)?((55008=code)&&_LV):((code<55036)?((55009<=code&&code<=55035)&&_LVT):((55036=code)&&_LV))):((code<55064)?((55037<=code&&code<=55063)&&_LVT):((code<55065)?((55064=code)&&_LV):((55065<=code&&code<=55091)&&_LVT)))))))):((code<69888)?((code<68152)?((code<65024)?((code<55149)?((code<55120)?((code<55093)?((55092=code)&&_LV):((55093<=code&&code<=55119)&&_LVT)):((code<55121)?((55120=code)&&_LV):((code<55148)?((55121<=code&&code<=55147)&&_LVT):((55148=code)&&_LV)))):((code<55216)?((code<55176)?((55149<=code&&code<=55175)&&_LVT):((code<55177)?((55176=code)&&_LV):((55177<=code&&code<=55203)&&_LVT))):((code<55243)?((55216<=code&&code<=55238)&&_V):((code<64286)?((55243<=code&&code<=55291)&&_T):((64286=code)&&_Extend))))):((code<66045)?((code<65279)?((code<65056)?((65024<=code&&code<=65039)&&_Extend):((65056<=code&&code<=65071)&&_Extend)):((code<65438)?((65279=code)&&_Control):((code<65520)?((65438<=code&&code<=65439)&&_Extend):((65520<=code&&code<=65531)&&_Control)))):((code<68097)?((code<66272)?((66045=code)&&_Extend):((code<66422)?((66272=code)&&_Extend):((66422<=code&&code<=66426)&&_Extend))):((code<68101)?((68097<=code&&code<=68099)&&_Extend):((code<68108)?((68101<=code&&code<=68102)&&_Extend):((68108<=code&&code<=68111)&&_Extend)))))):((code<69688)?((code<69373)?((code<68325)?((code<68159)?((68152<=code&&code<=68154)&&_Extend):((68159=code)&&_Extend)):((code<68900)?((68325<=code&&code<=68326)&&_Extend):((code<69291)?((68900<=code&&code<=68903)&&_Extend):((69291<=code&&code<=69292)&&_Extend)))):((code<69632)?((code<69446)?((69373<=code&&code<=69375)&&_Extend):((code<69506)?((69446<=code&&code<=69456)&&_Extend):((69506<=code&&code<=69509)&&_Extend))):((code<69633)?((69632=code)&&_SpacingMark):((69633=code)&&_Extend||(69634=code)&&_SpacingMark)))):((code<69811)?((code<69759)?((code<69744)?((69688<=code&&code<=69702)&&_Extend):((code<69747)?((69744=code)&&_Extend):((69747<=code&&code<=69748)&&_Extend))):((code<69762)?((69759<=code&&code<=69761)&&_Extend):((code<69808)?((69762=code)&&_SpacingMark):((69808<=code&&code<=69810)&&_SpacingMark)))):((code<69821)?((code<69815)?((69811<=code&&code<=69814)&&_Extend):((code<69817)?((69815<=code&&code<=69816)&&_SpacingMark):((69817<=code&&code<=69818)&&_Extend))):((code<69826)?((69821=code)&&_Prepend):((69826=code)&&_Extend||(69837=code)&&_Prepend)))))):((code<70367)?((code<70082)?((code<70003)?((code<69932)?((code<69927)?((69888<=code&&code<=69890)&&_Extend):((69927<=code&&code<=69931)&&_Extend)):((code<69933)?((69932=code)&&_SpacingMark):((code<69957)?((69933<=code&&code<=69940)&&_Extend):((69957<=code&&code<=69958)&&_SpacingMark)))):((code<70067)?((code<70016)?((70003=code)&&_Extend):((code<70018)?((70016<=code&&code<=70017)&&_Extend):((70018=code)&&_SpacingMark))):((code<70070)?((70067<=code&&code<=70069)&&_SpacingMark):((code<70079)?((70070<=code&&code<=70078)&&_Extend):((70079<=code&&code<=70080)&&_SpacingMark))))):((code<70194)?((code<70095)?((code<70089)?((70082<=code&&code<=70083)&&_Prepend):((code<70094)?((70089<=code&&code<=70092)&&_Extend):((70094=code)&&_SpacingMark))):((code<70188)?((70095=code)&&_Extend):((code<70191)?((70188<=code&&code<=70190)&&_SpacingMark):((70191<=code&&code<=70193)&&_Extend)))):((code<70198)?((code<70196)?((70194<=code&&code<=70195)&&_SpacingMark):((70196=code)&&_Extend||(70197=code)&&_SpacingMark)):((code<70206)?((70198<=code&&code<=70199)&&_Extend):((70206=code)&&_Extend||(70209=code)&&_Extend))))):((code<70475)?((code<70459)?((code<70371)?((code<70368)?((70367=code)&&_Extend):((70368<=code&&code<=70370)&&_SpacingMark)):((code<70400)?((70371<=code&&code<=70378)&&_Extend):((code<70402)?((70400<=code&&code<=70401)&&_Extend):((70402<=code&&code<=70403)&&_SpacingMark)))):((code<70464)?((code<70462)?((70459<=code&&code<=70460)&&_Extend):((70462=code)&&_Extend||(70463=code)&&_SpacingMark)):((code<70465)?((70464=code)&&_Extend):((code<70471)?((70465<=code&&code<=70468)&&_SpacingMark):((70471<=code&&code<=70472)&&_SpacingMark))))):((code<70712)?((code<70502)?((code<70487)?((70475<=code&&code<=70477)&&_SpacingMark):((code<70498)?((70487=code)&&_Extend):((70498<=code&&code<=70499)&&_SpacingMark))):((code<70512)?((70502<=code&&code<=70508)&&_Extend):((code<70709)?((70512<=code&&code<=70516)&&_Extend):((70709<=code&&code<=70711)&&_SpacingMark)))):((code<70725)?((code<70720)?((70712<=code&&code<=70719)&&_Extend):((code<70722)?((70720<=code&&code<=70721)&&_SpacingMark):((70722<=code&&code<=70724)&&_Extend))):((code<70726)?((70725=code)&&_SpacingMark):((70726=code)&&_Extend||(70750=code)&&_Extend)))))))):((code<73109)?((code<71998)?((code<71229)?((code<71087)?((code<70843)?((code<70835)?((code<70833)?((70832=code)&&_Extend):((70833<=code&&code<=70834)&&_SpacingMark)):((code<70841)?((70835<=code&&code<=70840)&&_Extend):((70841=code)&&_SpacingMark||(70842=code)&&_Extend))):((code<70847)?((code<70845)?((70843<=code&&code<=70844)&&_SpacingMark):((70845=code)&&_Extend||(70846=code)&&_SpacingMark)):((code<70849)?((70847<=code&&code<=70848)&&_Extend):((code<70850)?((70849=code)&&_SpacingMark):((70850<=code&&code<=70851)&&_Extend))))):((code<71102)?((code<71090)?((code<71088)?((71087=code)&&_Extend):((71088<=code&&code<=71089)&&_SpacingMark)):((code<71096)?((71090<=code&&code<=71093)&&_Extend):((code<71100)?((71096<=code&&code<=71099)&&_SpacingMark):((71100<=code&&code<=71101)&&_Extend)))):((code<71216)?((code<71103)?((71102=code)&&_SpacingMark):((code<71132)?((71103<=code&&code<=71104)&&_Extend):((71132<=code&&code<=71133)&&_Extend))):((code<71219)?((71216<=code&&code<=71218)&&_SpacingMark):((code<71227)?((71219<=code&&code<=71226)&&_Extend):((71227<=code&&code<=71228)&&_SpacingMark)))))):((code<71458)?((code<71341)?((code<71231)?((71229=code)&&_Extend||(71230=code)&&_SpacingMark):((code<71339)?((71231<=code&&code<=71232)&&_Extend):((71339=code)&&_Extend||(71340=code)&&_SpacingMark))):((code<71350)?((code<71342)?((71341=code)&&_Extend):((code<71344)?((71342<=code&&code<=71343)&&_SpacingMark):((71344<=code&&code<=71349)&&_Extend))):((code<71351)?((71350=code)&&_SpacingMark):((code<71453)?((71351=code)&&_Extend):((71453<=code&&code<=71455)&&_Extend))))):((code<71737)?((code<71724)?((code<71462)?((71458<=code&&code<=71461)&&_Extend):((code<71463)?((71462=code)&&_SpacingMark):((71463<=code&&code<=71467)&&_Extend))):((code<71727)?((71724<=code&&code<=71726)&&_SpacingMark):((code<71736)?((71727<=code&&code<=71735)&&_Extend):((71736=code)&&_SpacingMark)))):((code<71991)?((code<71984)?((71737<=code&&code<=71738)&&_Extend):((code<71985)?((71984=code)&&_Extend):((71985<=code&&code<=71989)&&_SpacingMark))):((code<71995)?((71991<=code&&code<=71992)&&_SpacingMark):((code<71997)?((71995<=code&&code<=71996)&&_Extend):((71997=code)&&_SpacingMark))))))):((code<72343)?((code<72164)?((code<72003)?((code<72000)?((71998=code)&&_Extend||(71999=code)&&_Prepend):((code<72001)?((72000=code)&&_SpacingMark):((72001=code)&&_Prepend||(72002=code)&&_SpacingMark))):((code<72154)?((code<72145)?((72003=code)&&_Extend):((code<72148)?((72145<=code&&code<=72147)&&_SpacingMark):((72148<=code&&code<=72151)&&_Extend))):((code<72156)?((72154<=code&&code<=72155)&&_Extend):((code<72160)?((72156<=code&&code<=72159)&&_SpacingMark):((72160=code)&&_Extend))))):((code<72263)?((code<72249)?((code<72193)?((72164=code)&&_SpacingMark):((code<72243)?((72193<=code&&code<=72202)&&_Extend):((72243<=code&&code<=72248)&&_Extend))):((code<72250)?((72249=code)&&_SpacingMark):((code<72251)?((72250=code)&&_Prepend):((72251<=code&&code<=72254)&&_Extend)))):((code<72281)?((code<72273)?((72263=code)&&_Extend):((code<72279)?((72273<=code&&code<=72278)&&_Extend):((72279<=code&&code<=72280)&&_SpacingMark))):((code<72324)?((72281<=code&&code<=72283)&&_Extend):((code<72330)?((72324<=code&&code<=72329)&&_Prepend):((72330<=code&&code<=72342)&&_Extend)))))):((code<72882)?((code<72766)?((code<72751)?((code<72344)?((72343=code)&&_SpacingMark):((72344<=code&&code<=72345)&&_Extend)):((code<72752)?((72751=code)&&_SpacingMark):((code<72760)?((72752<=code&&code<=72758)&&_Extend):((72760<=code&&code<=72765)&&_Extend)))):((code<72873)?((code<72767)?((72766=code)&&_SpacingMark):((code<72850)?((72767=code)&&_Extend):((72850<=code&&code<=72871)&&_Extend))):((code<72874)?((72873=code)&&_SpacingMark):((code<72881)?((72874<=code&&code<=72880)&&_Extend):((72881=code)&&_SpacingMark))))):((code<73023)?((code<73009)?((code<72884)?((72882<=code&&code<=72883)&&_Extend):((code<72885)?((72884=code)&&_SpacingMark):((72885<=code&&code<=72886)&&_Extend))):((code<73018)?((73009<=code&&code<=73014)&&_Extend):((code<73020)?((73018=code)&&_Extend):((73020<=code&&code<=73021)&&_Extend)))):((code<73098)?((code<73030)?((73023<=code&&code<=73029)&&_Extend):((73030=code)&&_Prepend||(73031=code)&&_Extend)):((code<73104)?((73098<=code&&code<=73102)&&_SpacingMark):((code<73107)?((73104<=code&&code<=73105)&&_Extend):((73107<=code&&code<=73108)&&_SpacingMark)))))))):((code<122888)?((code<94180)?((code<73536)?((code<73472)?((code<73111)?((73109=code)&&_Extend||(73110=code)&&_SpacingMark):((code<73459)?((73111=code)&&_Extend):((code<73461)?((73459<=code&&code<=73460)&&_Extend):((73461<=code&&code<=73462)&&_SpacingMark)))):((code<73524)?((code<73474)?((73472<=code&&code<=73473)&&_Extend):((73474=code)&&_Prepend||(73475=code)&&_SpacingMark)):((code<73526)?((73524<=code&&code<=73525)&&_SpacingMark):((code<73534)?((73526<=code&&code<=73530)&&_Extend):((73534<=code&&code<=73535)&&_SpacingMark))))):((code<78919)?((code<73538)?((73536=code)&&_Extend||(73537=code)&&_SpacingMark):((code<78896)?((73538=code)&&_Extend):((code<78912)?((78896<=code&&code<=78911)&&_Control):((78912=code)&&_Extend)))):((code<94031)?((code<92912)?((78919<=code&&code<=78933)&&_Extend):((code<92976)?((92912<=code&&code<=92916)&&_Extend):((92976<=code&&code<=92982)&&_Extend))):((code<94033)?((94031=code)&&_Extend):((code<94095)?((94033<=code&&code<=94087)&&_SpacingMark):((94095<=code&&code<=94098)&&_Extend)))))):((code<119155)?((code<118576)?((code<113821)?((code<94192)?((94180=code)&&_Extend):((94192<=code&&code<=94193)&&_SpacingMark)):((code<113824)?((113821<=code&&code<=113822)&&_Extend):((code<118528)?((113824<=code&&code<=113827)&&_Control):((118528<=code&&code<=118573)&&_Extend)))):((code<119143)?((code<119141)?((118576<=code&&code<=118598)&&_Extend):((119141=code)&&_Extend||(119142=code)&&_SpacingMark)):((code<119149)?((119143<=code&&code<=119145)&&_Extend):((code<119150)?((119149=code)&&_SpacingMark):((119150<=code&&code<=119154)&&_Extend))))):((code<121403)?((code<119210)?((code<119163)?((119155<=code&&code<=119162)&&_Control):((code<119173)?((119163<=code&&code<=119170)&&_Extend):((119173<=code&&code<=119179)&&_Extend))):((code<119362)?((119210<=code&&code<=119213)&&_Extend):((code<121344)?((119362<=code&&code<=119364)&&_Extend):((121344<=code&&code<=121398)&&_Extend)))):((code<121499)?((code<121461)?((121403<=code&&code<=121452)&&_Extend):((121461=code)&&_Extend||(121476=code)&&_Extend)):((code<121505)?((121499<=code&&code<=121503)&&_Extend):((code<122880)?((121505<=code&&code<=121519)&&_Extend):((122880<=code&&code<=122886)&&_Extend))))))):((code<127538)?((code<126976)?((code<123184)?((code<122915)?((code<122907)?((122888<=code&&code<=122904)&&_Extend):((122907<=code&&code<=122913)&&_Extend)):((code<122918)?((122915<=code&&code<=122916)&&_Extend):((code<123023)?((122918<=code&&code<=122922)&&_Extend):((123023=code)&&_Extend)))):((code<124140)?((code<123566)?((123184<=code&&code<=123190)&&_Extend):((code<123628)?((123566=code)&&_Extend):((123628<=code&&code<=123631)&&_Extend))):((code<125136)?((124140<=code&&code<=124143)&&_Extend):((code<125252)?((125136<=code&&code<=125142)&&_Extend):((125252<=code&&code<=125258)&&_Extend))))):((code<127377)?((code<127340)?((code<127245)?((126976<=code&&code<=127231)&&_Extended_Pictographic):((code<127279)?((127245<=code&&code<=127247)&&_Extended_Pictographic):((127279=code)&&_Extended_Pictographic))):((code<127358)?((127340<=code&&code<=127345)&&_Extended_Pictographic):((code<127374)?((127358<=code&&code<=127359)&&_Extended_Pictographic):((127374=code)&&_Extended_Pictographic)))):((code<127489)?((code<127405)?((127377<=code&&code<=127386)&&_Extended_Pictographic):((code<127462)?((127405<=code&&code<=127461)&&_Extended_Pictographic):((127462<=code&&code<=127487)&&_Regional_Indicator))):((code<127514)?((127489<=code&&code<=127503)&&_Extended_Pictographic):((127514=code)&&_Extended_Pictographic||(127535=code)&&_Extended_Pictographic))))):((code<129114)?((code<128326)?((code<127561)?((code<127548)?((127538<=code&&code<=127546)&&_Extended_Pictographic):((127548<=code&&code<=127551)&&_Extended_Pictographic)):((code<127995)?((127561<=code&&code<=127994)&&_Extended_Pictographic):((code<128000)?((127995<=code&&code<=127999)&&_Extend):((128000<=code&&code<=128317)&&_Extended_Pictographic)))):((code<128981)?((code<128640)?((128326<=code&&code<=128591)&&_Extended_Pictographic):((code<128884)?((128640<=code&&code<=128767)&&_Extended_Pictographic):((128884<=code&&code<=128895)&&_Extended_Pictographic))):((code<129036)?((128981<=code&&code<=129023)&&_Extended_Pictographic):((code<129096)?((129036<=code&&code<=129039)&&_Extended_Pictographic):((129096<=code&&code<=129103)&&_Extended_Pictographic))))):((code<130048)?((code<129292)?((code<129160)?((129114<=code&&code<=129119)&&_Extended_Pictographic):((code<129198)?((129160<=code&&code<=129167)&&_Extended_Pictographic):((129198<=code&&code<=129279)&&_Extended_Pictographic))):((code<129340)?((129292<=code&&code<=129338)&&_Extended_Pictographic):((code<129351)?((129340<=code&&code<=129349)&&_Extended_Pictographic):((129351<=code&&code<=129791)&&_Extended_Pictographic)))):((code<917632)?((code<917504)?((130048<=code&&code<=131069)&&_Extended_Pictographic):((code<917536)?((917504<=code&&code<=917535)&&_Control):((917536<=code&&code<=917631)&&_Extend))):((code<917760)?((917632<=code&&code<=917759)&&_Control):((code<918000)?((917760<=code&&code<=917999)&&_Extend):((918000<=code&&code<=921599)&&_Control))))))))))))||_Other

	languageRegEx() {
		languages := [
			(Join, C
			arabic := (letter := "\x{0620}-\x{064A}\x{066E}-\x{066F}\x{0671}-\x{06D5}\x{06EE}-\x{06EF}\x{06FA}-\x{06FF}", supplement := "\x{0750}-\x{077F}", letter := "[" letter supplement "]", combiningMark := "[\x{064B}-\x{065F}\x{0670}]", letter combiningMark "*")
			bengali := (letter := "[\x{0980}-\x{09FF}]", trailingLetter := "[\x{0980}-\x{0983}\x{09BC}-\x{09D7}\x{09E2}\x{09E3}\x{09FE}]", control := "\x{09CD}", letter "(?:" control letter "|" trailingLetter ")*")
			devanagari := (letter := "[\x{0900}-\x{097F}]", trailingLetter := "[\x{0900}-\x{0903}\x{093A}-\x{0957}\x{0962}\x{0963}]", control := "\x{094D}", letter "(?:" control letter "|" trailingLetter ")*")
			gujarati := (letter := "[\x{0A80}-\x{0AFF}]", trailingLetter := "[\x{0A81}-\x{0A83}\x{0ABC}\x{0ABE}-\x{0ACD}\x{0AE2}\x{0AE3}\x{0AFA}-\x{0AFF}]", control := "\x{0ACD}", letter "(?:" control  letter "|" trailingLetter ")*")
			hebrew := (letter := "[\x{05D0}-\x{05EA}]", combiningMark := "[\x{0591}-\x{05BD}\x{05BF}\x{05C1}\x{05C2}\x{05C4}\x{05C5}\x{05C7}]", letter combiningMark "*")
			japanesekana := (hiragana := "[\x{3041}-\x{3096}\x{309D}-\x{309F}]", katakana := "[\x{30A0}-\x{30FF}]", halfSizeSoundMark := "[\x{3099}-\x{309A}]", fullSizeSoundMark := "[\x{309B}-\x{309C}]", "(?:" katakana "|" hiragana ")" halfSizeSoundMark "?|" fullSizeSoundMark)
			kannada := (letter := "[\x{0C80}-\x{0CFF}]", trailingLetter := "[\x{0C81}-\x{0C83}\x{0CBC}\x{0CBE}-\x{0CCD}\x{0CD5}\x{0CD6}\x{0CE2}\x{0CE3}]", control := "\x{0CCD}", letter "(?:" control letter "|" trailingLetter ")*")
			khmer := (letter := "[\x{1780}-\x{17FF}]", trailingLetter := "[\x{17B6}-\x{17D1}\x{17D3}\x{17DD}]", control := "\x{17D2}", letter "(?:" control letter "|" trailingLetter ")*")
			lao := (letter := "[\x{0E80}-\x{0EFF}]", trailingLetter := "[\x{0EB1}\x{0EB4}-\x{0EBC}\x{0EC8}-\x{0ECD}]", letter trailingLetter "*")
			malayalam := (letter := "[\x{0D00}-\x{0D7F}]", trailingLetter := "[\x{0D00}-\x{0D03}\x{0D3B}\x{0D3C}\x{0D3E}-\x{0D4D}\x{0D57}\x{0D62}-\x{0D63}]", control := "\x{0D4D}", letter "(?:" control letter "|" trailingLetter ")*")
			myanmar := (letter := "[\x{1000}-\x{109F}]", trailingLetter := "[\x{102B}-\x{1038}\x{103A}-\x{103E}\x{1056}-\x{1059}\x{105E}-\x{1060}\x{1062}-\x{1064}\x{1067}-\x{106D}\x{1071}-\x{1074}\x{1082}-\x{108D}\x{108F}\x{109A}-\x{109D}]", control := "\x{1039}", letter "(?:" control letter "|" trailingLetter ")*")
			tamil := (letter := "[\x{0B80}-\x{0BFF}]", trailingLetter := "[\x{0B82}-\x{0B83}\x{0BBE}-\x{0BD7}\x{0962}\x{0963}]", letter trailingLetter "*")
			telugu := (letter := "[\x{0C00}-\x{0C7F}]", trailingLetter := "[\x{0C00}-\x{0C04}\x{0C3E}-\x{0C56}\x{0C62}\x{0C63}]", control := "\x{0C4D}", letter "(?:" control letter "|" trailingLetter ")*")
			thai := (letter := "[\x{0E00}-\x{0E7F}]", trailingLetter := "[\x{0E31}\x{0E33}-\x{0E3A}\x{0E47}-\x{0E4E}]", letter trailingLetter "*")
			tibetan := (letter := "[\x{0F00}-\x{0FFF}]", trailingLetter := "[\x{0F18}\x{0F19}\x{0F35}\x{0F37}\x{0F39}\x{0F3E}\x{0F3F}\x{0F71}-\x{0F87}\x{0F8D}-\x{0FBC}\x{0FC6}]", letter trailingLetter "*")
			)
		]

		regexJoin := ""
		for v in languages {
			regexJoin .= v "|"
		}
		return regexJoin
	}

}

iseahound
Posts: 1444
Joined: 13 Aug 2016, 21:04
Contact:

Re: GraphemeSplit - Split a string without breaking graphemes

Post by iseahound » 30 Jan 2023, 13:34

Great work! Looks like rules are dictated on a case by case basis.

Post Reply

Return to “Scripts and Functions (v2)”