Skip to content
体验新版
项目
组织
正在加载...
登录
切换导航
打开侧边栏
OpenHarmony
Third Party Harfbuzz
提交
21bb80eb
T
Third Party Harfbuzz
项目概览
OpenHarmony
/
Third Party Harfbuzz
1 年多 前同步成功
通知
0
Star
18
Fork
0
代码
文件
提交
分支
Tags
贡献者
分支图
Diff
Issue
0
列表
看板
标记
里程碑
合并请求
0
Wiki
0
Wiki
分析
仓库
DevOps
项目成员
Pages
T
Third Party Harfbuzz
项目概览
项目概览
详情
发布
仓库
仓库
文件
提交
分支
标签
贡献者
分支图
比较
Issue
0
Issue
0
列表
看板
标记
里程碑
合并请求
0
合并请求
0
Pages
分析
分析
仓库分析
DevOps
Wiki
0
Wiki
成员
成员
收起侧边栏
关闭侧边栏
动态
分支图
创建新Issue
提交
Issue看板
提交
21bb80eb
编写于
3月 28, 2019
作者:
B
Behdad Esfahbod
浏览文件
操作
浏览文件
下载
电子邮件补丁
差异文件
[indic] Add back medial-consonant to grammar
Fixes
https://github.com/harfbuzz/harfbuzz/issues/1592
上级
5ab6de7a
变更
6
显示空白变更内容
内联
并排
Showing
6 changed file
with
672 addition
and
587 deletion
+672
-587
src/hb-ot-shape-complex-indic-machine.hh
src/hb-ot-shape-complex-indic-machine.hh
+662
-582
src/hb-ot-shape-complex-indic-machine.rl
src/hb-ot-shape-complex-indic-machine.rl
+3
-2
src/hb-ot-shape-complex-indic.cc
src/hb-ot-shape-complex-indic.cc
+1
-1
src/hb-ot-shape-complex-indic.hh
src/hb-ot-shape-complex-indic.hh
+4
-2
test/shaping/data/in-house/fonts/f75c4b05a0a4d67c1a808081ae3d74a9c66509e8.ttf
...-house/fonts/f75c4b05a0a4d67c1a808081ae3d74a9c66509e8.ttf
+0
-0
test/shaping/data/in-house/tests/indic-syllable.tests
test/shaping/data/in-house/tests/indic-syllable.tests
+2
-0
未找到文件。
src/hb-ot-shape-complex-indic-machine.hh
浏览文件 @
21bb80eb
...
...
@@ -51,40 +51,40 @@ static const unsigned char _indic_syllable_machine_trans_keys[] = {
5u
,
7u
,
7u
,
7u
,
4u
,
8u
,
6u
,
6u
,
16u
,
16u
,
4u
,
8u
,
6u
,
6u
,
16u
,
16u
,
4u
,
8u
,
6u
,
6u
,
16u
,
16u
,
4u
,
8u
,
6u
,
6u
,
16u
,
16u
,
4u
,
13u
,
4u
,
8u
,
4u
,
13u
,
4u
,
8u
,
4u
,
13u
,
4u
,
8u
,
4u
,
13u
,
4u
,
8u
,
4u
,
13u
,
4u
,
13u
,
5u
,
8u
,
8u
,
8u
,
1u
,
19u
,
3u
,
1
3u
,
3u
,
10u
,
4u
,
10u
,
1u
,
16u
,
3u
,
13
u
,
3u
,
1
0u
,
4u
,
10u
,
1u
,
16u
,
3u
,
13u
,
3u
,
10u
,
4u
,
10u
,
1u
,
16u
,
3u
,
13
u
,
3u
,
1
0u
,
4u
,
10u
,
1u
,
16u
,
3u
,
13u
,
3u
,
10u
,
4u
,
10
u
,
5u
,
10u
,
5u
,
10u
,
5u
,
8u
,
8u
,
8u
,
1u
,
19u
,
3u
,
1
7u
,
3u
,
17u
,
4u
,
17u
,
1u
,
16u
,
3u
,
17
u
,
3u
,
1
7u
,
4u
,
17u
,
1u
,
16u
,
3u
,
17u
,
3u
,
17u
,
4u
,
17u
,
1u
,
16u
,
3u
,
17
u
,
3u
,
1
7u
,
4u
,
17u
,
1u
,
16u
,
3u
,
17u
,
3u
,
17u
,
4u
,
17
u
,
5u
,
10u
,
5u
,
10u
,
5u
,
10u
,
10u
,
10u
,
10u
,
10u
,
10u
,
10u
,
5u
,
10u
,
3u
,
10u
,
5u
,
10u
,
3u
,
10u
,
4u
,
10u
,
5u
,
10u
,
3u
,
10u
,
4u
,
10u
,
5u
,
10u
,
3u
,
10u
,
4u
,
10u
,
5u
,
10u
,
3u
,
10u
,
4u
,
10u
,
3u
,
10u
,
3u
,
13u
,
1u
,
16u
,
1u
,
16u
,
1u
,
16u
,
3u
,
10u
,
3u
,
13u
,
1u
,
16u
,
1u
,
16u
,
1u
,
16u
,
3u
,
10u
,
3u
,
13u
,
1u
,
16u
,
1u
,
16u
,
1u
,
16u
,
3u
,
10u
,
3u
,
13u
,
1u
,
16u
,
1u
,
16u
,
1u
,
16u
,
3u
,
10u
,
3u
,
13u
,
3u
,
13u
,
3u
,
10u
,
4u
,
10u
,
1u
,
16u
,
3u
,
13u
,
3u
,
10u
,
4u
,
10u
,
1u
,
16u
,
3u
,
13u
,
3u
,
10u
,
4u
,
10u
,
1u
,
16u
,
3u
,
13u
,
3u
,
10u
,
4u
,
10u
,
1u
,
16u
,
3u
,
13u
,
3u
,
10u
,
4u
,
10u
,
5u
,
10u
,
5u
,
10u
,
5u
,
10u
,
10u
,
10u
,
10u
,
10u
,
10u
,
10u
,
5u
,
10u
,
3u
,
10u
,
5u
,
10u
,
3u
,
10u
,
4u
,
10u
,
5u
,
10u
,
3u
,
10u
,
4u
,
10u
,
5u
,
10u
,
3u
,
10u
,
4u
,
10u
,
5u
,
10u
,
3u
,
10u
,
4u
,
10u
,
3u
,
10u
,
3u
,
13u
,
1u
,
16u
,
1u
,
16u
,
1u
,
16u
,
3u
,
10u
,
3u
,
13u
,
1u
,
16u
,
1u
,
16u
,
1u
,
16u
,
3u
,
10u
,
3u
,
13u
,
1u
,
16u
,
1u
,
16u
,
1u
,
16u
,
3u
,
10u
,
3u
,
13u
,
1u
,
16u
,
1u
,
16u
,
1u
,
16u
,
4u
,
8u
,
3u
,
10u
,
3u
,
10u
,
4u
,
10u
,
1u
,
16u
,
3u
,
13u
,
3u
,
10u
,
4u
,
10u
,
1u
,
16u
,
3u
,
13u
,
3u
,
10u
,
4u
,
10u
,
1u
,
16u
,
3u
,
13u
,
3u
,
10u
,
4u
,
10u
,
1u
,
16u
,
3u
,
13u
,
3u
,
10u
,
4u
,
10u
,
5u
,
10u
,
5u
,
10u
,
5u
,
10u
,
10u
,
10u
,
10u
,
10u
,
10u
,
10u
,
5u
,
10u
,
3u
,
10u
,
5u
,
10u
,
3u
,
10u
,
4u
,
10u
,
4u
,
10u
,
3u
,
17u
,
3u
,
17u
,
1u
,
16u
,
1u
,
16u
,
1u
,
16u
,
3u
,
17u
,
3u
,
17u
,
1u
,
16u
,
1u
,
16u
,
1u
,
16u
,
3u
,
17u
,
3u
,
17u
,
1u
,
16u
,
1u
,
16u
,
1u
,
16u
,
3u
,
17u
,
3u
,
17u
,
1u
,
16u
,
1u
,
16u
,
1u
,
16u
,
3u
,
17u
,
3u
,
17u
,
3u
,
17u
,
3u
,
17u
,
4u
,
17u
,
1u
,
16u
,
3u
,
17u
,
3u
,
17u
,
4u
,
17u
,
1u
,
16u
,
3u
,
17u
,
3u
,
17u
,
4u
,
17u
,
1u
,
16u
,
3u
,
17u
,
3u
,
17u
,
4u
,
17u
,
1u
,
16u
,
3u
,
17u
,
3u
,
17u
,
4u
,
17u
,
5u
,
10u
,
5u
,
10u
,
5u
,
10u
,
10u
,
10u
,
10u
,
10u
,
10u
,
10u
,
5u
,
10u
,
3u
,
10u
,
5u
,
10u
,
3u
,
10u
,
4u
,
10u
,
5u
,
10u
,
3u
,
10u
,
4u
,
10u
,
5u
,
10u
,
3u
,
10u
,
4u
,
10u
,
5u
,
10u
,
3u
,
10u
,
4u
,
10u
,
5u
,
10u
,
3u
,
10u
,
4u
,
10u
,
3u
,
10u
,
3u
,
13u
,
1u
,
16u
,
1u
,
16u
,
1u
,
16u
,
3u
,
10u
,
3u
,
13u
,
1u
,
16u
,
1u
,
16u
,
1u
,
16u
,
3u
,
10u
,
3u
,
13u
,
1u
,
16u
,
1u
,
16u
,
1u
,
16u
,
3u
,
10u
,
3u
,
13u
,
1u
,
16u
,
1u
,
16u
,
1u
,
16u
,
4u
,
13u
,
3u
,
10u
,
4u
,
8u
,
3u
,
13u
,
3u
,
10u
,
4u
,
10u
,
1u
,
16u
,
3u
,
13u
,
3u
,
10u
,
4u
,
10u
,
1u
,
16u
,
3u
,
13u
,
3u
,
10u
,
4u
,
10u
,
1u
,
16u
,
3u
,
13u
,
3u
,
10u
,
4u
,
10u
,
1u
,
16u
,
3u
,
13u
,
3u
,
10u
,
4u
,
10u
,
5u
,
10u
,
5u
,
10u
,
5u
,
10u
,
10u
,
10u
,
10u
,
10u
,
10u
,
10u
,
5u
,
10u
,
3u
,
10u
,
5u
,
10u
,
3u
,
10u
,
4u
,
10u
,
4u
,
10u
,
3u
,
17u
,
3u
,
17u
,
1u
,
16u
,
1u
,
16u
,
1u
,
16u
,
3u
,
17u
,
3u
,
17u
,
1u
,
16u
,
1u
,
16u
,
1u
,
16u
,
3u
,
17u
,
3u
,
17u
,
1u
,
16u
,
1u
,
16u
,
1u
,
16u
,
3u
,
17u
,
3u
,
17u
,
1u
,
16u
,
1u
,
16u
,
1u
,
16u
,
4u
,
8u
,
3u
,
17u
,
3u
,
17u
,
4u
,
17u
,
1u
,
16u
,
3u
,
17u
,
3u
,
17u
,
4u
,
17u
,
1u
,
16u
,
3u
,
17u
,
3u
,
17u
,
4u
,
17u
,
1u
,
16u
,
3u
,
17u
,
3u
,
17u
,
4u
,
17u
,
1u
,
16u
,
3u
,
17u
,
3u
,
17u
,
4u
,
17u
,
5u
,
10u
,
5u
,
10u
,
5u
,
10u
,
10u
,
10u
,
10u
,
10u
,
10u
,
10u
,
5u
,
10u
,
3u
,
10u
,
5u
,
10u
,
3u
,
10u
,
4u
,
10u
,
5u
,
10u
,
3u
,
10u
,
4u
,
10u
,
5u
,
10u
,
3u
,
10u
,
4u
,
10u
,
5u
,
10u
,
3u
,
10u
,
4u
,
10u
,
4u
,
10u
,
3u
,
17u
,
3u
,
17u
,
1u
,
16u
,
1u
,
16u
,
1u
,
16u
,
3u
,
17u
,
3u
,
17u
,
1u
,
16u
,
1u
,
16u
,
1u
,
16u
,
3u
,
17u
,
3u
,
17u
,
1u
,
16u
,
1u
,
16u
,
1u
,
16u
,
3u
,
17u
,
3u
,
17u
,
1u
,
16u
,
1u
,
16u
,
1u
,
16u
,
4u
,
13u
,
3u
,
17u
,
4u
,
8u
,
3u
,
17u
,
3u
,
17u
,
4u
,
17u
,
1u
,
16u
,
3u
,
17u
,
3u
,
17u
,
4u
,
17u
,
1u
,
16u
,
3u
,
17u
,
3u
,
17u
,
4u
,
17u
,
1u
,
16u
,
3u
,
17u
,
3u
,
17u
,
4u
,
17u
,
1u
,
16u
,
3u
,
17u
,
3u
,
17u
,
4u
,
17u
,
5u
,
10u
,
5u
,
10u
,
5u
,
10u
,
10u
,
10u
,
10u
,
10u
,
10u
,
10u
,
5u
,
10u
,
3u
,
10u
,
5u
,
10u
,
3u
,
10u
,
4u
,
10u
,
5u
,
10u
,
3u
,
10u
,
4u
,
10u
,
5u
,
10u
,
3u
,
10u
,
4u
,
10u
,
3u
,
10u
,
3u
,
13u
,
1u
,
16u
,
1u
,
16u
,
1u
,
16u
,
3u
,
10u
,
3u
,
13
u
,
1u
,
16u
,
1u
,
16u
,
1u
,
16u
,
3u
,
10u
,
3u
,
13u
,
1u
,
16u
,
1u
,
16u
,
1u
,
16
u
,
3u
,
1
0u
,
3u
,
13u
,
1u
,
16u
,
1u
,
16u
,
1u
,
16u
,
3u
,
10u
,
1u
,
16u
,
3u
,
13
u
,
1u
,
16u
,
4u
,
13u
,
5u
,
10u
,
10u
,
10u
,
10u
,
10u
,
10u
,
10u
,
5u
,
10u
,
1u
,
16
u
,
3u
,
10u
,
5u
,
10u
,
5u
,
10u
,
10u
,
10u
,
10u
,
10u
,
10u
,
10u
,
5u
,
10u
,
1u
,
16
u
,
0
4u
,
10u
,
5u
,
10u
,
3u
,
10u
,
4u
,
10u
,
4u
,
10u
,
3u
,
17u
,
3u
,
17u
,
1u
,
16
u
,
1u
,
16u
,
1u
,
16u
,
3u
,
17u
,
3u
,
17u
,
1u
,
16u
,
1u
,
16u
,
1u
,
16u
,
3u
,
17
u
,
3u
,
1
7u
,
1u
,
16u
,
1u
,
16u
,
1u
,
16u
,
3u
,
17u
,
3u
,
17u
,
1u
,
16u
,
1u
,
16
u
,
1u
,
16u
,
3u
,
17u
,
1u
,
17u
,
3u
,
17u
,
1u
,
17u
,
4u
,
13u
,
5u
,
10u
,
10u
,
10
u
,
10u
,
10u
,
10u
,
10u
,
5u
,
10u
,
1u
,
16u
,
3u
,
10u
,
5u
,
10u
,
5u
,
10u
,
10u
,
10
u
,
10u
,
10u
,
10u
,
10u
,
5u
,
10u
,
1u
,
16u
,
0
};
static
const
char
_indic_syllable_machine_key_spans
[]
=
{
...
...
@@ -105,39 +105,40 @@ static const char _indic_syllable_machine_key_spans[] = {
3
,
1
,
5
,
1
,
1
,
5
,
1
,
1
,
5
,
1
,
1
,
5
,
1
,
1
,
10
,
5
,
10
,
5
,
10
,
5
,
10
,
5
,
10
,
10
,
4
,
1
,
19
,
1
1
,
8
,
7
,
16
,
11
,
8
,
7
,
16
,
11
,
8
,
7
,
16
,
11
,
8
,
7
,
16
,
11
,
8
,
7
,
6
,
6
,
4
,
1
,
19
,
1
5
,
15
,
14
,
16
,
15
,
15
,
14
,
16
,
15
,
15
,
14
,
16
,
15
,
15
,
14
,
16
,
15
,
15
,
14
,
6
,
6
,
6
,
1
,
1
,
1
,
6
,
8
,
6
,
8
,
7
,
6
,
8
,
7
,
6
,
8
,
7
,
6
,
8
,
7
,
8
,
11
,
16
,
16
,
16
,
8
,
11
,
16
,
16
,
16
,
8
,
11
,
16
,
16
,
16
,
8
,
11
,
16
,
16
,
16
,
8
,
11
,
11
,
8
,
7
,
16
,
11
,
8
,
7
,
16
,
11
,
8
,
7
,
16
,
11
,
8
,
7
,
16
,
11
,
8
,
7
,
6
,
6
,
6
,
1
,
1
,
1
,
6
,
8
,
6
,
8
,
7
,
6
,
8
,
7
,
6
,
8
,
7
,
6
,
8
,
7
,
8
,
11
,
16
,
16
,
16
,
8
,
11
,
16
,
16
,
16
,
8
,
11
,
16
,
16
,
16
,
8
,
11
,
16
,
16
,
16
,
5
,
8
,
8
,
7
,
16
,
11
,
8
,
7
,
16
,
11
,
8
,
7
,
16
,
11
,
8
,
7
,
16
,
11
,
8
,
7
,
6
,
6
,
6
,
1
,
1
,
1
,
6
,
8
,
6
,
8
,
7
,
7
,
15
,
15
,
16
,
16
,
16
,
15
,
15
,
16
,
16
,
16
,
15
,
15
,
16
,
16
,
16
,
15
,
15
,
16
,
16
,
16
,
15
,
15
,
15
,
15
,
14
,
16
,
15
,
15
,
14
,
16
,
15
,
15
,
14
,
16
,
15
,
15
,
14
,
16
,
15
,
15
,
14
,
6
,
6
,
6
,
1
,
1
,
1
,
6
,
8
,
6
,
8
,
7
,
6
,
8
,
7
,
6
,
8
,
7
,
6
,
8
,
7
,
6
,
8
,
7
,
8
,
11
,
16
,
16
,
16
,
8
,
11
,
16
,
16
,
16
,
8
,
11
,
16
,
16
,
16
,
8
,
11
,
16
,
16
,
16
,
10
,
8
,
5
,
11
,
8
,
7
,
16
,
11
,
8
,
7
,
16
,
11
,
8
,
7
,
16
,
11
,
8
,
7
,
16
,
11
,
8
,
7
,
6
,
6
,
6
,
1
,
1
,
1
,
6
,
8
,
6
,
8
,
7
,
7
,
15
,
15
,
16
,
16
,
16
,
15
,
15
,
16
,
16
,
16
,
15
,
15
,
16
,
16
,
16
,
15
,
15
,
16
,
16
,
16
,
5
,
15
,
15
,
14
,
16
,
15
,
15
,
14
,
16
,
15
,
15
,
14
,
16
,
15
,
15
,
14
,
16
,
15
,
15
,
14
,
6
,
6
,
6
,
1
,
1
,
1
,
6
,
8
,
6
,
8
,
7
,
6
,
8
,
7
,
6
,
8
,
7
,
6
,
8
,
7
,
7
,
15
,
15
,
16
,
16
,
16
,
15
,
15
,
16
,
16
,
16
,
15
,
15
,
16
,
16
,
16
,
15
,
15
,
16
,
16
,
16
,
10
,
15
,
5
,
15
,
15
,
14
,
16
,
15
,
15
,
14
,
16
,
15
,
15
,
14
,
16
,
15
,
15
,
14
,
16
,
15
,
15
,
14
,
6
,
6
,
6
,
1
,
1
,
1
,
6
,
8
,
6
,
8
,
7
,
6
,
8
,
7
,
6
,
8
,
7
,
8
,
11
,
16
,
16
,
16
,
8
,
11
,
16
,
16
,
16
,
8
,
11
,
16
,
16
,
16
,
8
,
11
,
16
,
16
,
16
,
8
,
16
,
11
,
16
,
10
,
6
,
1
,
1
,
1
,
6
,
16
,
8
,
6
,
6
,
1
,
1
,
1
,
6
,
16
7
,
6
,
8
,
7
,
7
,
15
,
15
,
16
,
16
,
16
,
15
,
15
,
16
,
16
,
16
,
15
,
15
,
16
,
16
,
16
,
15
,
15
,
16
,
16
,
16
,
15
,
17
,
15
,
17
,
10
,
6
,
1
,
1
,
1
,
6
,
16
,
8
,
6
,
6
,
1
,
1
,
1
,
6
,
16
};
static
const
short
_indic_syllable_machine_index_offsets
[]
=
{
...
...
@@ -158,39 +159,40 @@ static const short _indic_syllable_machine_index_offsets[] = {
528
,
532
,
534
,
540
,
542
,
544
,
550
,
552
,
554
,
560
,
562
,
564
,
570
,
572
,
574
,
585
,
591
,
602
,
608
,
619
,
625
,
636
,
642
,
653
,
664
,
669
,
671
,
691
,
703
,
712
,
720
,
737
,
749
,
758
,
766
,
783
,
795
,
804
,
812
,
829
,
841
,
850
,
858
,
875
,
887
,
896
,
904
,
911
,
918
,
925
,
927
,
929
,
931
,
938
,
947
,
954
,
963
,
971
,
978
,
987
,
995
,
1002
,
1011
,
1019
,
1026
,
1035
,
1043
,
1052
,
1064
,
1081
,
1098
,
1115
,
1124
,
1136
,
1153
,
1170
,
1187
,
1196
,
1208
,
1225
,
1242
,
1259
,
1268
,
1280
,
1297
,
1314
,
1331
,
1340
,
1352
,
1364
,
1373
,
1381
,
1398
,
1410
,
1419
,
1427
,
1444
,
1456
,
1465
,
1473
,
1490
,
1502
,
1511
,
1519
,
1536
,
1548
,
1557
,
1565
,
1572
,
1579
,
1586
,
1588
,
1590
,
1592
,
1599
,
1608
,
1615
,
1624
,
1632
,
1639
,
1648
,
1656
,
1663
,
1672
,
1680
,
1687
,
1696
,
1704
,
1713
,
1725
,
1742
,
1759
,
1776
,
1785
,
1797
,
1814
,
1831
,
1848
,
1857
,
1869
,
1886
,
1903
,
1920
,
1929
,
1941
,
1958
,
1975
,
1992
,
1998
,
2007
,
2016
,
2024
,
2041
,
2053
,
2062
,
2070
,
2087
,
2099
,
2108
,
2116
,
2133
,
2145
,
2154
,
2162
,
2179
,
2191
,
2200
,
2208
,
2215
,
2222
,
2229
,
2231
,
2233
,
2235
,
2242
,
2251
,
2258
,
2267
,
2275
,
2282
,
2291
,
2299
,
2306
,
2315
,
2323
,
2330
,
2339
,
2347
,
2356
,
2368
,
2385
,
2402
,
2419
,
2428
,
2440
,
2457
,
2474
,
2491
,
2500
,
2512
,
2529
,
2546
,
2563
,
2572
,
2584
,
2601
,
2618
,
2635
,
2646
,
2655
,
2661
,
2673
,
2682
,
2690
,
2707
,
2719
,
2728
,
2736
,
2753
,
2765
,
2774
,
2782
,
2799
,
2811
,
2820
,
2828
,
2845
,
2857
,
2866
,
2874
,
2881
,
2888
,
2895
,
2897
,
2899
,
2901
,
2908
,
2917
,
2924
,
2933
,
2941
,
2948
,
2957
,
2965
,
2972
,
2981
,
2989
,
2996
,
3005
,
3013
,
3022
,
3034
,
3051
,
3068
,
3085
,
3094
,
3106
,
3123
,
3140
,
3157
,
3166
,
3178
,
3195
,
3212
,
3229
,
3238
,
3250
,
3267
,
3284
,
3301
,
3310
,
3327
,
3339
,
3356
,
3367
,
3374
,
3376
,
3378
,
3380
,
3387
,
3404
,
3413
,
3420
,
3427
,
3429
,
3431
,
3433
,
3440
664
,
669
,
671
,
691
,
707
,
723
,
738
,
755
,
771
,
787
,
802
,
819
,
835
,
851
,
866
,
883
,
899
,
915
,
930
,
947
,
963
,
979
,
994
,
1001
,
1008
,
1015
,
1017
,
1019
,
1021
,
1028
,
1037
,
1044
,
1053
,
1061
,
1068
,
1077
,
1085
,
1092
,
1101
,
1109
,
1116
,
1125
,
1133
,
1141
,
1157
,
1173
,
1190
,
1207
,
1224
,
1240
,
1256
,
1273
,
1290
,
1307
,
1323
,
1339
,
1356
,
1373
,
1390
,
1406
,
1422
,
1439
,
1456
,
1473
,
1489
,
1505
,
1521
,
1537
,
1552
,
1569
,
1585
,
1601
,
1616
,
1633
,
1649
,
1665
,
1680
,
1697
,
1713
,
1729
,
1744
,
1761
,
1777
,
1793
,
1808
,
1815
,
1822
,
1829
,
1831
,
1833
,
1835
,
1842
,
1851
,
1858
,
1867
,
1875
,
1882
,
1891
,
1899
,
1906
,
1915
,
1923
,
1930
,
1939
,
1947
,
1955
,
1971
,
1987
,
2004
,
2021
,
2038
,
2054
,
2070
,
2087
,
2104
,
2121
,
2137
,
2153
,
2170
,
2187
,
2204
,
2220
,
2236
,
2253
,
2270
,
2287
,
2293
,
2309
,
2325
,
2340
,
2357
,
2373
,
2389
,
2404
,
2421
,
2437
,
2453
,
2468
,
2485
,
2501
,
2517
,
2532
,
2549
,
2565
,
2581
,
2596
,
2603
,
2610
,
2617
,
2619
,
2621
,
2623
,
2630
,
2639
,
2646
,
2655
,
2663
,
2670
,
2679
,
2687
,
2694
,
2703
,
2711
,
2718
,
2727
,
2735
,
2743
,
2759
,
2775
,
2792
,
2809
,
2826
,
2842
,
2858
,
2875
,
2892
,
2909
,
2925
,
2941
,
2958
,
2975
,
2992
,
3008
,
3024
,
3041
,
3058
,
3075
,
3086
,
3102
,
3108
,
3124
,
3140
,
3155
,
3172
,
3188
,
3204
,
3219
,
3236
,
3252
,
3268
,
3283
,
3300
,
3316
,
3332
,
3347
,
3364
,
3380
,
3396
,
3411
,
3418
,
3425
,
3432
,
3434
,
3436
,
3438
,
3445
,
3454
,
3461
,
3470
,
3478
,
3485
,
3494
,
3502
,
3509
,
3518
,
3526
,
3533
,
3542
,
3550
,
3558
,
3574
,
3590
,
3607
,
3624
,
3641
,
3657
,
3673
,
3690
,
3707
,
3724
,
3740
,
3756
,
3773
,
3790
,
3807
,
3823
,
3839
,
3856
,
3873
,
3890
,
3906
,
3924
,
3940
,
3958
,
3969
,
3976
,
3978
,
3980
,
3982
,
3989
,
4006
,
4015
,
4022
,
4029
,
4031
,
4033
,
4035
,
4042
};
static
const
short
_indic_syllable_machine_indicies
[]
=
{
...
...
@@ -279,410 +281,485 @@ static const short _indic_syllable_machine_indicies[] = {
76
,
73
,
72
,
72
,
72
,
72
,
144
,
72
,
78
,
78
,
76
,
1
,
0
,
146
,
145
,
148
,
149
,
150
,
151
,
152
,
153
,
76
,
73
,
147
,
154
,
155
,
155
,
144
,
147
,
156
,
157
,
147
,
158
,
159
,
147
,
161
,
162
,
163
,
164
,
4
,
1
,
160
,
165
,
160
,
160
,
35
,
160
,
166
,
162
,
167
,
167
,
4
,
1
,
160
,
165
,
160
,
162
,
167
,
167
,
4
,
1
,
160
,
165
,
160
,
168
,
160
,
160
,
160
,
17
,
169
,
160
,
1
,
160
,
165
,
160
,
160
,
160
,
160
,
160
,
168
,
160
,
170
,
171
,
172
,
173
,
4
,
1
,
160
,
165
,
160
,
160
,
33
,
160
,
174
,
171
,
175
,
175
,
4
,
1
,
160
,
165
,
160
,
171
,
175
,
175
,
4
,
1
,
160
,
165
,
160
,
176
,
160
,
160
,
160
,
17
,
177
,
160
,
1
,
160
,
165
,
160
,
160
,
160
,
160
,
160
,
176
,
160
,
178
,
179
,
180
,
181
,
4
,
1
,
160
,
165
,
160
,
160
,
31
,
160
,
182
,
179
,
183
,
183
,
4
,
1
,
160
,
165
,
160
,
179
,
183
,
183
,
4
,
1
,
160
,
165
,
160
,
184
,
160
,
160
,
160
,
17
,
185
,
160
,
1
,
160
,
165
,
160
,
160
,
160
,
160
,
160
,
184
,
160
,
186
,
187
,
188
,
189
,
4
,
1
,
160
,
165
,
160
,
160
,
29
,
160
,
190
,
187
,
191
,
191
,
4
,
1
,
160
,
165
,
160
,
187
,
191
,
191
,
4
,
1
,
160
,
165
,
160
,
192
,
160
,
160
,
160
,
17
,
193
,
160
,
1
,
160
,
165
,
160
,
160
,
160
,
160
,
160
,
192
,
160
,
194
,
195
,
196
,
197
,
4
,
1
,
160
,
165
,
160
,
160
,
27
,
160
,
198
,
195
,
199
,
199
,
4
,
1
,
160
,
165
,
160
,
195
,
199
,
199
,
4
,
1
,
160
,
165
,
160
,
17
,
200
,
160
,
1
,
160
,
165
,
160
,
201
,
201
,
160
,
1
,
160
,
165
,
160
,
202
,
160
,
160
,
203
,
160
,
165
,
160
,
165
,
160
,
204
,
160
,
205
,
160
,
202
,
160
,
160
,
160
,
160
,
165
,
160
,
17
,
160
,
201
,
201
,
160
,
1
,
160
,
165
,
160
,
201
,
200
,
160
,
1
,
160
,
165
,
160
,
206
,
26
,
207
,
208
,
7
,
1
,
160
,
165
,
160
,
26
,
207
,
208
,
7
,
1
,
160
,
165
,
160
,
207
,
207
,
7
,
1
,
160
,
165
,
160
,
209
,
23
,
210
,
211
,
10
,
1
,
160
,
165
,
160
,
23
,
210
,
211
,
10
,
1
,
160
,
165
,
160
,
210
,
210
,
10
,
1
,
160
,
165
,
160
,
212
,
20
,
213
,
214
,
13
,
1
,
160
,
165
,
160
,
20
,
213
,
214
,
13
,
1
,
160
,
165
,
160
,
213
,
213
,
13
,
1
,
160
,
165
,
160
,
215
,
17
,
201
,
216
,
160
,
1
,
160
,
165
,
160
,
17
,
201
,
216
,
160
,
1
,
160
,
165
,
160
,
194
,
195
,
199
,
199
,
4
,
1
,
160
,
165
,
160
,
194
,
195
,
196
,
199
,
4
,
1
,
160
,
165
,
160
,
160
,
27
,
160
,
192
,
160
,
217
,
160
,
201
,
201
,
160
,
1
,
160
,
165
,
160
,
160
,
160
,
160
,
160
,
192
,
160
,
192
,
160
,
160
,
160
,
201
,
201
,
160
,
1
,
160
,
165
,
160
,
160
,
160
,
160
,
160
,
192
,
160
,
192
,
160
,
160
,
160
,
201
,
193
,
160
,
1
,
160
,
165
,
160
,
160
,
160
,
160
,
160
,
192
,
160
,
186
,
187
,
191
,
191
,
4
,
1
,
160
,
165
,
160
,
186
,
187
,
188
,
191
,
4
,
1
,
160
,
165
,
160
,
160
,
29
,
160
,
184
,
160
,
218
,
160
,
201
,
201
,
160
,
1
,
160
,
165
,
160
,
160
,
160
,
160
,
160
,
184
,
160
,
184
,
160
,
160
,
160
,
201
,
201
,
160
,
1
,
160
,
165
,
160
,
160
,
160
,
160
,
160
,
184
,
160
,
184
,
160
,
160
,
160
,
201
,
185
,
160
,
1
,
160
,
165
,
160
,
160
,
160
,
160
,
160
,
184
,
160
,
178
,
179
,
183
,
183
,
4
,
1
,
160
,
165
,
160
,
178
,
179
,
180
,
183
,
4
,
1
,
160
,
165
,
160
,
160
,
31
,
160
,
176
,
160
,
219
,
160
,
201
,
201
,
160
,
1
,
160
,
165
,
160
,
160
,
160
,
160
,
160
,
176
,
160
,
176
,
160
,
160
,
160
,
201
,
201
,
160
,
1
,
160
,
165
,
160
,
160
,
160
,
160
,
160
,
176
,
160
,
176
,
160
,
160
,
160
,
201
,
177
,
160
,
1
,
160
,
165
,
160
,
160
,
160
,
160
,
160
,
176
,
160
,
170
,
171
,
175
,
175
,
4
,
1
,
160
,
165
,
160
,
170
,
171
,
172
,
175
,
4
,
1
,
160
,
165
,
160
,
160
,
33
,
160
,
168
,
160
,
220
,
160
,
201
,
201
,
160
,
1
,
160
,
165
,
160
,
160
,
160
,
160
,
160
,
168
,
160
,
168
,
160
,
160
,
160
,
201
,
201
,
160
,
1
,
160
,
165
,
160
,
160
,
160
,
160
,
160
,
168
,
160
,
168
,
160
,
160
,
160
,
201
,
169
,
160
,
1
,
160
,
165
,
160
,
160
,
160
,
160
,
160
,
168
,
160
,
161
,
162
,
167
,
167
,
4
,
1
,
160
,
165
,
160
,
161
,
162
,
163
,
167
,
4
,
1
,
160
,
165
,
160
,
160
,
35
,
160
,
222
,
223
,
224
,
225
,
40
,
37
,
221
,
226
,
221
,
221
,
71
,
221
,
227
,
223
,
228
,
225
,
40
,
37
,
221
,
226
,
221
,
223
,
228
,
225
,
40
,
37
,
221
,
226
,
221
,
229
,
221
,
221
,
221
,
53
,
230
,
221
,
37
,
221
,
226
,
221
,
221
,
221
,
221
,
221
,
229
,
221
,
231
,
232
,
233
,
234
,
40
,
37
,
221
,
226
,
221
,
221
,
69
,
221
,
235
,
232
,
236
,
236
,
40
,
37
,
221
,
226
,
221
,
232
,
236
,
236
,
40
,
37
,
221
,
226
,
221
,
237
,
221
,
221
,
221
,
53
,
238
,
221
,
37
,
221
,
226
,
221
,
221
,
221
,
221
,
221
,
237
,
221
,
239
,
240
,
241
,
242
,
40
,
37
,
221
,
226
,
221
,
221
,
67
,
221
,
243
,
240
,
244
,
244
,
40
,
37
,
221
,
226
,
221
,
240
,
244
,
244
,
40
,
37
,
221
,
226
,
221
,
245
,
221
,
221
,
221
,
53
,
246
,
221
,
37
,
221
,
226
,
221
,
221
,
221
,
221
,
221
,
245
,
221
,
247
,
248
,
249
,
250
,
40
,
37
,
221
,
226
,
221
,
221
,
65
,
221
,
251
,
248
,
252
,
252
,
40
,
37
,
221
,
226
,
221
,
248
,
252
,
252
,
40
,
37
,
221
,
226
,
221
,
253
,
221
,
221
,
221
,
53
,
254
,
221
,
37
,
221
,
226
,
221
,
221
,
221
,
221
,
221
,
253
,
221
,
255
,
256
,
257
,
258
,
40
,
37
,
221
,
226
,
221
,
221
,
63
,
221
,
259
,
256
,
260
,
260
,
40
,
37
,
221
,
226
,
221
,
256
,
260
,
260
,
40
,
37
,
221
,
226
,
221
,
53
,
261
,
221
,
37
,
221
,
226
,
221
,
262
,
262
,
221
,
37
,
221
,
226
,
221
,
263
,
221
,
221
,
264
,
221
,
226
,
221
,
226
,
221
,
265
,
221
,
266
,
221
,
263
,
221
,
221
,
221
,
221
,
226
,
221
,
53
,
221
,
262
,
262
,
221
,
37
,
221
,
226
,
221
,
262
,
261
,
221
,
37
,
221
,
226
,
221
,
267
,
62
,
268
,
269
,
43
,
37
,
221
,
226
,
221
,
62
,
268
,
269
,
43
,
37
,
221
,
226
,
221
,
268
,
268
,
43
,
37
,
221
,
226
,
221
,
270
,
59
,
271
,
272
,
46
,
37
,
221
,
226
,
221
,
59
,
271
,
272
,
46
,
37
,
221
,
226
,
221
,
271
,
271
,
46
,
37
,
221
,
226
,
221
,
273
,
56
,
274
,
275
,
49
,
37
,
221
,
226
,
221
,
56
,
274
,
275
,
49
,
37
,
221
,
226
,
221
,
274
,
274
,
49
,
37
,
221
,
226
,
221
,
276
,
53
,
262
,
277
,
221
,
37
,
221
,
226
,
221
,
53
,
262
,
277
,
221
,
37
,
221
,
226
,
221
,
255
,
256
,
260
,
260
,
40
,
37
,
221
,
226
,
221
,
255
,
256
,
257
,
260
,
40
,
37
,
221
,
226
,
221
,
221
,
63
,
221
,
253
,
221
,
278
,
221
,
262
,
262
,
221
,
37
,
221
,
226
,
221
,
221
,
221
,
221
,
221
,
253
,
221
,
253
,
221
,
221
,
221
,
262
,
262
,
221
,
37
,
221
,
226
,
221
,
221
,
221
,
221
,
221
,
253
,
221
,
253
,
221
,
221
,
221
,
262
,
254
,
221
,
37
,
221
,
226
,
221
,
221
,
221
,
221
,
221
,
253
,
221
,
247
,
248
,
252
,
252
,
40
,
37
,
221
,
226
,
221
,
247
,
248
,
249
,
252
,
40
,
37
,
221
,
226
,
221
,
221
,
65
,
221
,
245
,
221
,
279
,
221
,
262
,
262
,
221
,
37
,
221
,
226
,
221
,
221
,
221
,
221
,
221
,
245
,
221
,
245
,
221
,
221
,
221
,
262
,
262
,
221
,
37
,
221
,
226
,
221
,
221
,
221
,
221
,
221
,
245
,
221
,
245
,
221
,
221
,
221
,
262
,
246
,
221
,
37
,
221
,
226
,
221
,
221
,
221
,
221
,
221
,
245
,
221
,
239
,
240
,
244
,
244
,
40
,
37
,
221
,
226
,
221
,
239
,
240
,
241
,
244
,
40
,
37
,
221
,
226
,
221
,
221
,
67
,
221
,
237
,
221
,
280
,
221
,
262
,
262
,
221
,
37
,
221
,
226
,
221
,
221
,
221
,
221
,
221
,
237
,
221
,
237
,
221
,
221
,
221
,
262
,
262
,
221
,
37
,
221
,
226
,
221
,
221
,
221
,
221
,
221
,
237
,
221
,
237
,
221
,
221
,
221
,
262
,
238
,
221
,
37
,
221
,
226
,
221
,
221
,
221
,
221
,
221
,
237
,
221
,
231
,
232
,
236
,
236
,
40
,
37
,
221
,
226
,
221
,
231
,
232
,
233
,
236
,
40
,
37
,
221
,
226
,
221
,
221
,
69
,
221
,
229
,
221
,
281
,
221
,
262
,
262
,
221
,
37
,
221
,
226
,
221
,
221
,
221
,
221
,
221
,
229
,
221
,
229
,
221
,
221
,
221
,
262
,
262
,
221
,
37
,
221
,
226
,
221
,
221
,
221
,
221
,
221
,
229
,
221
,
229
,
221
,
221
,
221
,
262
,
230
,
221
,
37
,
221
,
226
,
221
,
221
,
221
,
221
,
221
,
229
,
221
,
70
,
39
,
39
,
40
,
37
,
221
,
222
,
223
,
228
,
225
,
40
,
37
,
221
,
226
,
221
,
283
,
151
,
284
,
284
,
76
,
73
,
282
,
154
,
282
,
151
,
284
,
284
,
76
,
73
,
282
,
154
,
282
,
285
,
282
,
282
,
282
,
90
,
286
,
282
,
73
,
282
,
154
,
282
,
282
,
282
,
282
,
282
,
285
,
282
,
287
,
288
,
289
,
290
,
76
,
73
,
282
,
154
,
282
,
282
,
106
,
282
,
291
,
288
,
292
,
292
,
76
,
73
,
282
,
154
,
282
,
288
,
292
,
292
,
76
,
73
,
282
,
154
,
282
,
293
,
282
,
282
,
282
,
90
,
294
,
282
,
73
,
282
,
154
,
282
,
282
,
282
,
282
,
282
,
293
,
282
,
295
,
296
,
297
,
298
,
76
,
73
,
282
,
154
,
282
,
282
,
104
,
282
,
299
,
296
,
300
,
300
,
76
,
73
,
282
,
154
,
282
,
296
,
300
,
300
,
76
,
73
,
282
,
154
,
282
,
301
,
282
,
282
,
282
,
90
,
302
,
282
,
73
,
282
,
154
,
282
,
282
,
282
,
282
,
282
,
301
,
282
,
303
,
304
,
305
,
306
,
76
,
73
,
282
,
154
,
282
,
282
,
102
,
282
,
307
,
304
,
308
,
308
,
76
,
73
,
282
,
154
,
282
,
304
,
308
,
308
,
76
,
73
,
282
,
154
,
282
,
309
,
282
,
282
,
282
,
90
,
310
,
282
,
73
,
282
,
154
,
282
,
282
,
282
,
282
,
282
,
309
,
282
,
311
,
312
,
313
,
314
,
76
,
73
,
282
,
154
,
282
,
282
,
100
,
282
,
315
,
312
,
316
,
316
,
76
,
73
,
282
,
154
,
282
,
312
,
316
,
316
,
76
,
73
,
282
,
154
,
282
,
90
,
317
,
282
,
73
,
282
,
154
,
282
,
318
,
318
,
282
,
73
,
282
,
154
,
282
,
319
,
282
,
282
,
320
,
282
,
154
,
282
,
154
,
282
,
321
,
282
,
322
,
282
,
319
,
282
,
282
,
282
,
282
,
154
,
282
,
90
,
282
,
318
,
318
,
282
,
73
,
282
,
154
,
282
,
318
,
317
,
282
,
73
,
282
,
154
,
282
,
323
,
99
,
324
,
325
,
80
,
73
,
282
,
154
,
282
,
99
,
324
,
325
,
80
,
73
,
282
,
154
,
282
,
324
,
324
,
80
,
73
,
282
,
154
,
282
,
326
,
96
,
327
,
328
,
83
,
73
,
282
,
154
,
282
,
96
,
327
,
328
,
83
,
73
,
282
,
154
,
282
,
327
,
327
,
83
,
73
,
282
,
154
,
282
,
329
,
93
,
330
,
331
,
86
,
73
,
282
,
154
,
282
,
93
,
330
,
331
,
86
,
73
,
282
,
154
,
282
,
330
,
330
,
86
,
73
,
282
,
154
,
282
,
332
,
90
,
318
,
333
,
282
,
73
,
282
,
154
,
282
,
90
,
318
,
333
,
282
,
73
,
282
,
154
,
282
,
311
,
312
,
316
,
316
,
76
,
73
,
282
,
154
,
282
,
311
,
312
,
313
,
316
,
76
,
73
,
282
,
154
,
282
,
282
,
100
,
282
,
309
,
282
,
334
,
282
,
318
,
318
,
282
,
73
,
282
,
154
,
282
,
282
,
282
,
282
,
282
,
309
,
282
,
309
,
282
,
282
,
282
,
318
,
318
,
282
,
73
,
282
,
154
,
282
,
282
,
282
,
282
,
282
,
309
,
282
,
309
,
282
,
282
,
282
,
318
,
310
,
282
,
73
,
282
,
154
,
282
,
282
,
282
,
282
,
282
,
309
,
282
,
303
,
304
,
308
,
308
,
76
,
73
,
282
,
154
,
282
,
303
,
304
,
305
,
308
,
76
,
73
,
282
,
154
,
282
,
282
,
102
,
282
,
301
,
282
,
335
,
282
,
318
,
318
,
282
,
73
,
282
,
154
,
282
,
282
,
282
,
282
,
282
,
301
,
282
,
301
,
282
,
282
,
282
,
318
,
318
,
282
,
73
,
282
,
154
,
282
,
282
,
282
,
282
,
282
,
301
,
282
,
301
,
282
,
282
,
282
,
318
,
302
,
282
,
73
,
282
,
154
,
282
,
282
,
282
,
282
,
282
,
301
,
282
,
295
,
296
,
300
,
300
,
76
,
73
,
282
,
154
,
282
,
295
,
296
,
297
,
300
,
76
,
73
,
282
,
154
,
282
,
282
,
104
,
282
,
293
,
282
,
336
,
282
,
318
,
318
,
282
,
73
,
282
,
154
,
282
,
282
,
282
,
282
,
282
,
293
,
282
,
293
,
282
,
282
,
282
,
318
,
318
,
282
,
73
,
282
,
154
,
282
,
282
,
282
,
282
,
282
,
293
,
282
,
293
,
282
,
282
,
282
,
318
,
294
,
282
,
73
,
282
,
154
,
282
,
282
,
282
,
282
,
282
,
293
,
282
,
287
,
288
,
292
,
292
,
76
,
73
,
282
,
154
,
282
,
287
,
288
,
289
,
292
,
76
,
73
,
282
,
154
,
282
,
282
,
106
,
282
,
285
,
282
,
337
,
282
,
318
,
318
,
282
,
73
,
282
,
154
,
282
,
282
,
282
,
282
,
282
,
285
,
282
,
285
,
282
,
282
,
282
,
318
,
318
,
282
,
73
,
282
,
154
,
282
,
282
,
282
,
282
,
282
,
285
,
282
,
285
,
282
,
282
,
282
,
318
,
286
,
282
,
73
,
282
,
154
,
282
,
282
,
282
,
282
,
282
,
285
,
282
,
107
,
75
,
75
,
76
,
73
,
338
,
338
,
338
,
338
,
144
,
338
,
150
,
151
,
284
,
284
,
76
,
73
,
282
,
154
,
282
,
107
,
75
,
75
,
76
,
73
,
338
,
340
,
341
,
342
,
343
,
112
,
109
,
339
,
344
,
339
,
339
,
143
,
339
,
345
,
341
,
343
,
343
,
112
,
109
,
339
,
344
,
339
,
341
,
343
,
343
,
112
,
109
,
339
,
344
,
339
,
346
,
339
,
339
,
339
,
125
,
347
,
339
,
109
,
339
,
344
,
339
,
339
,
339
,
339
,
339
,
346
,
339
,
348
,
349
,
350
,
351
,
112
,
109
,
339
,
344
,
339
,
339
,
141
,
339
,
352
,
349
,
353
,
353
,
112
,
109
,
339
,
344
,
339
,
349
,
353
,
353
,
112
,
109
,
339
,
344
,
339
,
354
,
339
,
339
,
339
,
125
,
355
,
339
,
109
,
339
,
344
,
339
,
339
,
339
,
339
,
339
,
354
,
339
,
356
,
357
,
358
,
359
,
112
,
109
,
339
,
344
,
339
,
339
,
139
,
339
,
360
,
357
,
361
,
361
,
112
,
109
,
339
,
344
,
339
,
357
,
361
,
361
,
112
,
109
,
339
,
344
,
339
,
362
,
339
,
339
,
339
,
125
,
363
,
339
,
109
,
339
,
344
,
339
,
339
,
339
,
339
,
339
,
362
,
339
,
364
,
365
,
366
,
367
,
112
,
109
,
339
,
344
,
339
,
339
,
137
,
339
,
368
,
365
,
369
,
369
,
112
,
109
,
339
,
344
,
339
,
365
,
369
,
369
,
112
,
109
,
339
,
344
,
339
,
370
,
339
,
339
,
339
,
125
,
371
,
339
,
109
,
339
,
344
,
339
,
339
,
339
,
339
,
339
,
370
,
339
,
372
,
373
,
374
,
375
,
112
,
109
,
339
,
344
,
339
,
339
,
135
,
339
,
376
,
373
,
377
,
377
,
112
,
109
,
339
,
344
,
339
,
373
,
377
,
377
,
112
,
109
,
339
,
344
,
339
,
125
,
378
,
339
,
109
,
339
,
344
,
339
,
379
,
379
,
339
,
109
,
339
,
344
,
339
,
380
,
339
,
339
,
381
,
339
,
344
,
339
,
344
,
339
,
382
,
339
,
383
,
339
,
380
,
339
,
339
,
339
,
339
,
344
,
339
,
125
,
339
,
379
,
379
,
339
,
109
,
339
,
344
,
339
,
379
,
378
,
339
,
109
,
339
,
344
,
339
,
384
,
134
,
385
,
386
,
115
,
109
,
339
,
344
,
339
,
134
,
385
,
386
,
115
,
109
,
339
,
344
,
339
,
385
,
385
,
115
,
109
,
339
,
344
,
339
,
387
,
131
,
388
,
389
,
118
,
109
,
339
,
344
,
339
,
131
,
388
,
389
,
118
,
109
,
339
,
344
,
339
,
388
,
388
,
118
,
109
,
339
,
344
,
339
,
390
,
128
,
391
,
392
,
121
,
109
,
339
,
344
,
339
,
128
,
391
,
392
,
121
,
109
,
339
,
344
,
339
,
391
,
391
,
121
,
109
,
339
,
344
,
339
,
393
,
125
,
379
,
394
,
339
,
109
,
339
,
344
,
339
,
125
,
379
,
394
,
339
,
109
,
339
,
344
,
339
,
372
,
373
,
377
,
377
,
112
,
109
,
339
,
344
,
339
,
372
,
373
,
374
,
377
,
112
,
109
,
339
,
344
,
339
,
339
,
135
,
339
,
370
,
339
,
395
,
339
,
379
,
379
,
339
,
109
,
339
,
344
,
339
,
339
,
339
,
339
,
339
,
370
,
339
,
370
,
339
,
339
,
339
,
379
,
379
,
339
,
109
,
339
,
344
,
339
,
339
,
339
,
339
,
339
,
370
,
339
,
370
,
339
,
339
,
339
,
379
,
371
,
339
,
109
,
339
,
344
,
339
,
339
,
339
,
339
,
339
,
370
,
339
,
364
,
365
,
369
,
369
,
112
,
109
,
339
,
344
,
339
,
364
,
365
,
366
,
369
,
112
,
109
,
339
,
344
,
339
,
339
,
137
,
339
,
362
,
339
,
396
,
339
,
379
,
379
,
339
,
109
,
339
,
344
,
339
,
339
,
339
,
339
,
339
,
362
,
339
,
362
,
339
,
339
,
339
,
379
,
379
,
339
,
109
,
339
,
344
,
339
,
339
,
339
,
339
,
339
,
362
,
339
,
362
,
339
,
339
,
339
,
379
,
363
,
339
,
109
,
339
,
344
,
339
,
339
,
339
,
339
,
339
,
362
,
339
,
356
,
357
,
361
,
361
,
112
,
109
,
339
,
344
,
339
,
356
,
357
,
358
,
361
,
112
,
109
,
339
,
344
,
339
,
339
,
139
,
339
,
354
,
339
,
397
,
339
,
379
,
379
,
339
,
109
,
339
,
344
,
339
,
339
,
339
,
339
,
339
,
354
,
339
,
354
,
339
,
339
,
339
,
379
,
379
,
339
,
109
,
339
,
344
,
339
,
339
,
339
,
339
,
339
,
354
,
339
,
354
,
339
,
339
,
339
,
379
,
355
,
339
,
109
,
339
,
344
,
339
,
339
,
339
,
339
,
339
,
354
,
339
,
348
,
349
,
353
,
353
,
112
,
109
,
339
,
344
,
339
,
348
,
349
,
350
,
353
,
112
,
109
,
339
,
344
,
339
,
339
,
141
,
339
,
346
,
339
,
398
,
339
,
379
,
379
,
339
,
109
,
339
,
344
,
339
,
339
,
339
,
339
,
339
,
346
,
339
,
346
,
339
,
339
,
339
,
379
,
379
,
339
,
109
,
339
,
344
,
339
,
339
,
339
,
339
,
339
,
346
,
339
,
346
,
339
,
339
,
339
,
379
,
347
,
339
,
109
,
339
,
344
,
339
,
339
,
339
,
339
,
339
,
346
,
339
,
340
,
341
,
343
,
343
,
112
,
109
,
339
,
344
,
339
,
148
,
149
,
150
,
151
,
399
,
284
,
76
,
73
,
282
,
154
,
155
,
155
,
144
,
282
,
282
,
148
,
282
,
161
,
400
,
163
,
164
,
4
,
1
,
160
,
165
,
160
,
160
,
35
,
160
,
168
,
149
,
150
,
151
,
401
,
402
,
76
,
403
,
160
,
404
,
160
,
155
,
144
,
160
,
160
,
168
,
160
,
107
,
405
,
405
,
76
,
403
,
160
,
165
,
160
,
160
,
144
,
160
,
406
,
160
,
160
,
407
,
160
,
404
,
160
,
404
,
160
,
408
,
160
,
205
,
160
,
406
,
160
,
160
,
160
,
160
,
404
,
160
,
168
,
160
,
220
,
107
,
405
,
405
,
76
,
403
,
160
,
165
,
160
,
160
,
160
,
160
,
160
,
168
,
160
,
410
,
409
,
411
,
411
,
409
,
146
,
409
,
412
,
409
,
411
,
411
,
409
,
146
,
409
,
412
,
409
,
413
,
409
,
409
,
414
,
409
,
412
,
409
,
412
,
409
,
415
,
409
,
416
,
409
,
413
,
409
,
409
,
409
,
409
,
412
,
409
,
148
,
338
,
338
,
338
,
338
,
338
,
338
,
338
,
338
,
338
,
155
,
338
,
338
,
338
,
338
,
148
,
338
,
0
154
,
155
,
155
,
144
,
147
,
156
,
157
,
158
,
159
,
160
,
147
,
162
,
163
,
164
,
165
,
4
,
1
,
161
,
166
,
161
,
161
,
35
,
161
,
161
,
161
,
167
,
161
,
168
,
163
,
169
,
169
,
4
,
1
,
161
,
166
,
161
,
161
,
161
,
161
,
161
,
161
,
167
,
161
,
163
,
169
,
169
,
4
,
1
,
161
,
166
,
161
,
161
,
161
,
161
,
161
,
161
,
167
,
161
,
170
,
161
,
161
,
161
,
17
,
171
,
161
,
1
,
161
,
166
,
161
,
161
,
161
,
161
,
161
,
170
,
161
,
172
,
173
,
174
,
175
,
4
,
1
,
161
,
166
,
161
,
161
,
33
,
161
,
161
,
161
,
167
,
161
,
176
,
173
,
177
,
177
,
4
,
1
,
161
,
166
,
161
,
161
,
161
,
161
,
161
,
161
,
167
,
161
,
173
,
177
,
177
,
4
,
1
,
161
,
166
,
161
,
161
,
161
,
161
,
161
,
161
,
167
,
161
,
178
,
161
,
161
,
161
,
17
,
179
,
161
,
1
,
161
,
166
,
161
,
161
,
161
,
161
,
161
,
178
,
161
,
180
,
181
,
182
,
183
,
4
,
1
,
161
,
166
,
161
,
161
,
31
,
161
,
161
,
161
,
167
,
161
,
184
,
181
,
185
,
185
,
4
,
1
,
161
,
166
,
161
,
161
,
161
,
161
,
161
,
161
,
167
,
161
,
181
,
185
,
185
,
4
,
1
,
161
,
166
,
161
,
161
,
161
,
161
,
161
,
161
,
167
,
161
,
186
,
161
,
161
,
161
,
17
,
187
,
161
,
1
,
161
,
166
,
161
,
161
,
161
,
161
,
161
,
186
,
161
,
188
,
189
,
190
,
191
,
4
,
1
,
161
,
166
,
161
,
161
,
29
,
161
,
161
,
161
,
167
,
161
,
192
,
189
,
193
,
193
,
4
,
1
,
161
,
166
,
161
,
161
,
161
,
161
,
161
,
161
,
167
,
161
,
189
,
193
,
193
,
4
,
1
,
161
,
166
,
161
,
161
,
161
,
161
,
161
,
161
,
167
,
161
,
194
,
161
,
161
,
161
,
17
,
195
,
161
,
1
,
161
,
166
,
161
,
161
,
161
,
161
,
161
,
194
,
161
,
196
,
197
,
198
,
199
,
4
,
1
,
161
,
166
,
161
,
161
,
27
,
161
,
161
,
161
,
167
,
161
,
200
,
197
,
201
,
201
,
4
,
1
,
161
,
166
,
161
,
161
,
161
,
161
,
161
,
161
,
167
,
161
,
197
,
201
,
201
,
4
,
1
,
161
,
166
,
161
,
161
,
161
,
161
,
161
,
161
,
167
,
161
,
17
,
202
,
161
,
1
,
161
,
166
,
161
,
203
,
203
,
161
,
1
,
161
,
166
,
161
,
204
,
161
,
161
,
205
,
161
,
166
,
161
,
166
,
161
,
206
,
161
,
207
,
161
,
204
,
161
,
161
,
161
,
161
,
166
,
161
,
17
,
161
,
203
,
203
,
161
,
1
,
161
,
166
,
161
,
203
,
202
,
161
,
1
,
161
,
166
,
161
,
208
,
26
,
209
,
210
,
7
,
1
,
161
,
166
,
161
,
26
,
209
,
210
,
7
,
1
,
161
,
166
,
161
,
209
,
209
,
7
,
1
,
161
,
166
,
161
,
211
,
23
,
212
,
213
,
10
,
1
,
161
,
166
,
161
,
23
,
212
,
213
,
10
,
1
,
161
,
166
,
161
,
212
,
212
,
10
,
1
,
161
,
166
,
161
,
214
,
20
,
215
,
216
,
13
,
1
,
161
,
166
,
161
,
20
,
215
,
216
,
13
,
1
,
161
,
166
,
161
,
215
,
215
,
13
,
1
,
161
,
166
,
161
,
217
,
17
,
203
,
218
,
161
,
1
,
161
,
166
,
161
,
17
,
203
,
218
,
161
,
1
,
161
,
166
,
161
,
197
,
201
,
201
,
4
,
1
,
161
,
166
,
161
,
196
,
197
,
201
,
201
,
4
,
1
,
161
,
166
,
161
,
161
,
161
,
161
,
161
,
161
,
167
,
161
,
196
,
197
,
198
,
201
,
4
,
1
,
161
,
166
,
161
,
161
,
27
,
161
,
161
,
161
,
167
,
161
,
194
,
161
,
219
,
161
,
203
,
203
,
161
,
1
,
161
,
166
,
161
,
161
,
161
,
161
,
161
,
194
,
161
,
194
,
161
,
161
,
161
,
203
,
203
,
161
,
1
,
161
,
166
,
161
,
161
,
161
,
161
,
161
,
194
,
161
,
194
,
161
,
161
,
161
,
203
,
195
,
161
,
1
,
161
,
166
,
161
,
161
,
161
,
161
,
161
,
194
,
161
,
188
,
189
,
193
,
193
,
4
,
1
,
161
,
166
,
161
,
161
,
161
,
161
,
161
,
161
,
167
,
161
,
188
,
189
,
190
,
193
,
4
,
1
,
161
,
166
,
161
,
161
,
29
,
161
,
161
,
161
,
167
,
161
,
186
,
161
,
220
,
161
,
203
,
203
,
161
,
1
,
161
,
166
,
161
,
161
,
161
,
161
,
161
,
186
,
161
,
186
,
161
,
161
,
161
,
203
,
203
,
161
,
1
,
161
,
166
,
161
,
161
,
161
,
161
,
161
,
186
,
161
,
186
,
161
,
161
,
161
,
203
,
187
,
161
,
1
,
161
,
166
,
161
,
161
,
161
,
161
,
161
,
186
,
161
,
180
,
181
,
185
,
185
,
4
,
1
,
161
,
166
,
161
,
161
,
161
,
161
,
161
,
161
,
167
,
161
,
180
,
181
,
182
,
185
,
4
,
1
,
161
,
166
,
161
,
161
,
31
,
161
,
161
,
161
,
167
,
161
,
178
,
161
,
221
,
161
,
203
,
203
,
161
,
1
,
161
,
166
,
161
,
161
,
161
,
161
,
161
,
178
,
161
,
178
,
161
,
161
,
161
,
203
,
203
,
161
,
1
,
161
,
166
,
161
,
161
,
161
,
161
,
161
,
178
,
161
,
178
,
161
,
161
,
161
,
203
,
179
,
161
,
1
,
161
,
166
,
161
,
161
,
161
,
161
,
161
,
178
,
161
,
172
,
173
,
177
,
177
,
4
,
1
,
161
,
166
,
161
,
161
,
161
,
161
,
161
,
161
,
167
,
161
,
172
,
173
,
174
,
177
,
4
,
1
,
161
,
166
,
161
,
161
,
33
,
161
,
161
,
161
,
167
,
161
,
170
,
161
,
222
,
161
,
203
,
203
,
161
,
1
,
161
,
166
,
161
,
161
,
161
,
161
,
161
,
170
,
161
,
170
,
161
,
161
,
161
,
203
,
203
,
161
,
1
,
161
,
166
,
161
,
161
,
161
,
161
,
161
,
170
,
161
,
170
,
161
,
161
,
161
,
203
,
171
,
161
,
1
,
161
,
166
,
161
,
161
,
161
,
161
,
161
,
170
,
161
,
162
,
163
,
169
,
169
,
4
,
1
,
161
,
166
,
161
,
161
,
161
,
161
,
161
,
161
,
167
,
161
,
162
,
163
,
164
,
169
,
4
,
1
,
161
,
166
,
161
,
161
,
35
,
161
,
161
,
161
,
167
,
161
,
224
,
225
,
226
,
227
,
40
,
37
,
223
,
228
,
223
,
223
,
71
,
223
,
223
,
223
,
229
,
223
,
230
,
225
,
231
,
227
,
40
,
37
,
223
,
228
,
223
,
223
,
223
,
223
,
223
,
223
,
229
,
223
,
225
,
231
,
227
,
40
,
37
,
223
,
228
,
223
,
223
,
223
,
223
,
223
,
223
,
229
,
223
,
232
,
223
,
223
,
223
,
53
,
233
,
223
,
37
,
223
,
228
,
223
,
223
,
223
,
223
,
223
,
232
,
223
,
234
,
235
,
236
,
237
,
40
,
37
,
223
,
228
,
223
,
223
,
69
,
223
,
223
,
223
,
229
,
223
,
238
,
235
,
239
,
239
,
40
,
37
,
223
,
228
,
223
,
223
,
223
,
223
,
223
,
223
,
229
,
223
,
235
,
239
,
239
,
40
,
37
,
223
,
228
,
223
,
223
,
223
,
223
,
223
,
223
,
229
,
223
,
240
,
223
,
223
,
223
,
53
,
241
,
223
,
37
,
223
,
228
,
223
,
223
,
223
,
223
,
223
,
240
,
223
,
242
,
243
,
244
,
245
,
40
,
37
,
223
,
228
,
223
,
223
,
67
,
223
,
223
,
223
,
229
,
223
,
246
,
243
,
247
,
247
,
40
,
37
,
223
,
228
,
223
,
223
,
223
,
223
,
223
,
223
,
229
,
223
,
243
,
247
,
247
,
40
,
37
,
223
,
228
,
223
,
223
,
223
,
223
,
223
,
223
,
229
,
223
,
248
,
223
,
223
,
223
,
53
,
249
,
223
,
37
,
223
,
228
,
223
,
223
,
223
,
223
,
223
,
248
,
223
,
250
,
251
,
252
,
253
,
40
,
37
,
223
,
228
,
223
,
223
,
65
,
223
,
223
,
223
,
229
,
223
,
254
,
251
,
255
,
255
,
40
,
37
,
223
,
228
,
223
,
223
,
223
,
223
,
223
,
223
,
229
,
223
,
251
,
255
,
255
,
40
,
37
,
223
,
228
,
223
,
223
,
223
,
223
,
223
,
223
,
229
,
223
,
256
,
223
,
223
,
223
,
53
,
257
,
223
,
37
,
223
,
228
,
223
,
223
,
223
,
223
,
223
,
256
,
223
,
258
,
259
,
260
,
261
,
40
,
37
,
223
,
228
,
223
,
223
,
63
,
223
,
223
,
223
,
229
,
223
,
262
,
259
,
263
,
263
,
40
,
37
,
223
,
228
,
223
,
223
,
223
,
223
,
223
,
223
,
229
,
223
,
259
,
263
,
263
,
40
,
37
,
223
,
228
,
223
,
223
,
223
,
223
,
223
,
223
,
229
,
223
,
53
,
264
,
223
,
37
,
223
,
228
,
223
,
265
,
265
,
223
,
37
,
223
,
228
,
223
,
266
,
223
,
223
,
267
,
223
,
228
,
223
,
228
,
223
,
268
,
223
,
269
,
223
,
266
,
223
,
223
,
223
,
223
,
228
,
223
,
53
,
223
,
265
,
265
,
223
,
37
,
223
,
228
,
223
,
265
,
264
,
223
,
37
,
223
,
228
,
223
,
270
,
62
,
271
,
272
,
43
,
37
,
223
,
228
,
223
,
62
,
271
,
272
,
43
,
37
,
223
,
228
,
223
,
271
,
271
,
43
,
37
,
223
,
228
,
223
,
273
,
59
,
274
,
275
,
46
,
37
,
223
,
228
,
223
,
59
,
274
,
275
,
46
,
37
,
223
,
228
,
223
,
274
,
274
,
46
,
37
,
223
,
228
,
223
,
276
,
56
,
277
,
278
,
49
,
37
,
223
,
228
,
223
,
56
,
277
,
278
,
49
,
37
,
223
,
228
,
223
,
277
,
277
,
49
,
37
,
223
,
228
,
223
,
279
,
53
,
265
,
280
,
223
,
37
,
223
,
228
,
223
,
53
,
265
,
280
,
223
,
37
,
223
,
228
,
223
,
259
,
263
,
263
,
40
,
37
,
223
,
228
,
223
,
258
,
259
,
263
,
263
,
40
,
37
,
223
,
228
,
223
,
223
,
223
,
223
,
223
,
223
,
229
,
223
,
258
,
259
,
260
,
263
,
40
,
37
,
223
,
228
,
223
,
223
,
63
,
223
,
223
,
223
,
229
,
223
,
256
,
223
,
281
,
223
,
265
,
265
,
223
,
37
,
223
,
228
,
223
,
223
,
223
,
223
,
223
,
256
,
223
,
256
,
223
,
223
,
223
,
265
,
265
,
223
,
37
,
223
,
228
,
223
,
223
,
223
,
223
,
223
,
256
,
223
,
256
,
223
,
223
,
223
,
265
,
257
,
223
,
37
,
223
,
228
,
223
,
223
,
223
,
223
,
223
,
256
,
223
,
250
,
251
,
255
,
255
,
40
,
37
,
223
,
228
,
223
,
223
,
223
,
223
,
223
,
223
,
229
,
223
,
250
,
251
,
252
,
255
,
40
,
37
,
223
,
228
,
223
,
223
,
65
,
223
,
223
,
223
,
229
,
223
,
248
,
223
,
282
,
223
,
265
,
265
,
223
,
37
,
223
,
228
,
223
,
223
,
223
,
223
,
223
,
248
,
223
,
248
,
223
,
223
,
223
,
265
,
265
,
223
,
37
,
223
,
228
,
223
,
223
,
223
,
223
,
223
,
248
,
223
,
248
,
223
,
223
,
223
,
265
,
249
,
223
,
37
,
223
,
228
,
223
,
223
,
223
,
223
,
223
,
248
,
223
,
242
,
243
,
247
,
247
,
40
,
37
,
223
,
228
,
223
,
223
,
223
,
223
,
223
,
223
,
229
,
223
,
242
,
243
,
244
,
247
,
40
,
37
,
223
,
228
,
223
,
223
,
67
,
223
,
223
,
223
,
229
,
223
,
240
,
223
,
283
,
223
,
265
,
265
,
223
,
37
,
223
,
228
,
223
,
223
,
223
,
223
,
223
,
240
,
223
,
240
,
223
,
223
,
223
,
265
,
265
,
223
,
37
,
223
,
228
,
223
,
223
,
223
,
223
,
223
,
240
,
223
,
240
,
223
,
223
,
223
,
265
,
241
,
223
,
37
,
223
,
228
,
223
,
223
,
223
,
223
,
223
,
240
,
223
,
234
,
235
,
239
,
239
,
40
,
37
,
223
,
228
,
223
,
223
,
223
,
223
,
223
,
223
,
229
,
223
,
234
,
235
,
236
,
239
,
40
,
37
,
223
,
228
,
223
,
223
,
69
,
223
,
223
,
223
,
229
,
223
,
232
,
223
,
284
,
223
,
265
,
265
,
223
,
37
,
223
,
228
,
223
,
223
,
223
,
223
,
223
,
232
,
223
,
232
,
223
,
223
,
223
,
265
,
265
,
223
,
37
,
223
,
228
,
223
,
223
,
223
,
223
,
223
,
232
,
223
,
232
,
223
,
223
,
223
,
265
,
233
,
223
,
37
,
223
,
228
,
223
,
223
,
223
,
223
,
223
,
232
,
223
,
70
,
39
,
39
,
40
,
37
,
223
,
224
,
225
,
231
,
227
,
40
,
37
,
223
,
228
,
223
,
223
,
223
,
223
,
223
,
223
,
229
,
223
,
286
,
151
,
287
,
287
,
76
,
73
,
285
,
154
,
285
,
285
,
285
,
285
,
285
,
285
,
158
,
285
,
151
,
287
,
287
,
76
,
73
,
285
,
154
,
285
,
285
,
285
,
285
,
285
,
285
,
158
,
285
,
288
,
285
,
285
,
285
,
90
,
289
,
285
,
73
,
285
,
154
,
285
,
285
,
285
,
285
,
285
,
288
,
285
,
290
,
291
,
292
,
293
,
76
,
73
,
285
,
154
,
285
,
285
,
106
,
285
,
285
,
285
,
158
,
285
,
294
,
291
,
295
,
295
,
76
,
73
,
285
,
154
,
285
,
285
,
285
,
285
,
285
,
285
,
158
,
285
,
291
,
295
,
295
,
76
,
73
,
285
,
154
,
285
,
285
,
285
,
285
,
285
,
285
,
158
,
285
,
296
,
285
,
285
,
285
,
90
,
297
,
285
,
73
,
285
,
154
,
285
,
285
,
285
,
285
,
285
,
296
,
285
,
298
,
299
,
300
,
301
,
76
,
73
,
285
,
154
,
285
,
285
,
104
,
285
,
285
,
285
,
158
,
285
,
302
,
299
,
303
,
303
,
76
,
73
,
285
,
154
,
285
,
285
,
285
,
285
,
285
,
285
,
158
,
285
,
299
,
303
,
303
,
76
,
73
,
285
,
154
,
285
,
285
,
285
,
285
,
285
,
285
,
158
,
285
,
304
,
285
,
285
,
285
,
90
,
305
,
285
,
73
,
285
,
154
,
285
,
285
,
285
,
285
,
285
,
304
,
285
,
306
,
307
,
308
,
309
,
76
,
73
,
285
,
154
,
285
,
285
,
102
,
285
,
285
,
285
,
158
,
285
,
310
,
307
,
311
,
311
,
76
,
73
,
285
,
154
,
285
,
285
,
285
,
285
,
285
,
285
,
158
,
285
,
307
,
311
,
311
,
76
,
73
,
285
,
154
,
285
,
285
,
285
,
285
,
285
,
285
,
158
,
285
,
312
,
285
,
285
,
285
,
90
,
313
,
285
,
73
,
285
,
154
,
285
,
285
,
285
,
285
,
285
,
312
,
285
,
314
,
315
,
316
,
317
,
76
,
73
,
285
,
154
,
285
,
285
,
100
,
285
,
285
,
285
,
158
,
285
,
318
,
315
,
319
,
319
,
76
,
73
,
285
,
154
,
285
,
285
,
285
,
285
,
285
,
285
,
158
,
285
,
315
,
319
,
319
,
76
,
73
,
285
,
154
,
285
,
285
,
285
,
285
,
285
,
285
,
158
,
285
,
90
,
320
,
285
,
73
,
285
,
154
,
285
,
321
,
321
,
285
,
73
,
285
,
154
,
285
,
322
,
285
,
285
,
323
,
285
,
154
,
285
,
154
,
285
,
324
,
285
,
325
,
285
,
322
,
285
,
285
,
285
,
285
,
154
,
285
,
90
,
285
,
321
,
321
,
285
,
73
,
285
,
154
,
285
,
321
,
320
,
285
,
73
,
285
,
154
,
285
,
326
,
99
,
327
,
328
,
80
,
73
,
285
,
154
,
285
,
99
,
327
,
328
,
80
,
73
,
285
,
154
,
285
,
327
,
327
,
80
,
73
,
285
,
154
,
285
,
329
,
96
,
330
,
331
,
83
,
73
,
285
,
154
,
285
,
96
,
330
,
331
,
83
,
73
,
285
,
154
,
285
,
330
,
330
,
83
,
73
,
285
,
154
,
285
,
332
,
93
,
333
,
334
,
86
,
73
,
285
,
154
,
285
,
93
,
333
,
334
,
86
,
73
,
285
,
154
,
285
,
333
,
333
,
86
,
73
,
285
,
154
,
285
,
335
,
90
,
321
,
336
,
285
,
73
,
285
,
154
,
285
,
90
,
321
,
336
,
285
,
73
,
285
,
154
,
285
,
315
,
319
,
319
,
76
,
73
,
285
,
154
,
285
,
314
,
315
,
319
,
319
,
76
,
73
,
285
,
154
,
285
,
285
,
285
,
285
,
285
,
285
,
158
,
285
,
314
,
315
,
316
,
319
,
76
,
73
,
285
,
154
,
285
,
285
,
100
,
285
,
285
,
285
,
158
,
285
,
312
,
285
,
337
,
285
,
321
,
321
,
285
,
73
,
285
,
154
,
285
,
285
,
285
,
285
,
285
,
312
,
285
,
312
,
285
,
285
,
285
,
321
,
321
,
285
,
73
,
285
,
154
,
285
,
285
,
285
,
285
,
285
,
312
,
285
,
312
,
285
,
285
,
285
,
321
,
313
,
285
,
73
,
285
,
154
,
285
,
285
,
285
,
285
,
285
,
312
,
285
,
306
,
307
,
311
,
311
,
76
,
73
,
285
,
154
,
285
,
285
,
285
,
285
,
285
,
285
,
158
,
285
,
306
,
307
,
308
,
311
,
76
,
73
,
285
,
154
,
285
,
285
,
102
,
285
,
285
,
285
,
158
,
285
,
304
,
285
,
338
,
285
,
321
,
321
,
285
,
73
,
285
,
154
,
285
,
285
,
285
,
285
,
285
,
304
,
285
,
304
,
285
,
285
,
285
,
321
,
321
,
285
,
73
,
285
,
154
,
285
,
285
,
285
,
285
,
285
,
304
,
285
,
304
,
285
,
285
,
285
,
321
,
305
,
285
,
73
,
285
,
154
,
285
,
285
,
285
,
285
,
285
,
304
,
285
,
298
,
299
,
303
,
303
,
76
,
73
,
285
,
154
,
285
,
285
,
285
,
285
,
285
,
285
,
158
,
285
,
298
,
299
,
300
,
303
,
76
,
73
,
285
,
154
,
285
,
285
,
104
,
285
,
285
,
285
,
158
,
285
,
296
,
285
,
339
,
285
,
321
,
321
,
285
,
73
,
285
,
154
,
285
,
285
,
285
,
285
,
285
,
296
,
285
,
296
,
285
,
285
,
285
,
321
,
321
,
285
,
73
,
285
,
154
,
285
,
285
,
285
,
285
,
285
,
296
,
285
,
296
,
285
,
285
,
285
,
321
,
297
,
285
,
73
,
285
,
154
,
285
,
285
,
285
,
285
,
285
,
296
,
285
,
290
,
291
,
295
,
295
,
76
,
73
,
285
,
154
,
285
,
285
,
285
,
285
,
285
,
285
,
158
,
285
,
290
,
291
,
292
,
295
,
76
,
73
,
285
,
154
,
285
,
285
,
106
,
285
,
285
,
285
,
158
,
285
,
288
,
285
,
340
,
285
,
321
,
321
,
285
,
73
,
285
,
154
,
285
,
285
,
285
,
285
,
285
,
288
,
285
,
288
,
285
,
285
,
285
,
321
,
321
,
285
,
73
,
285
,
154
,
285
,
285
,
285
,
285
,
285
,
288
,
285
,
288
,
285
,
285
,
285
,
321
,
289
,
285
,
73
,
285
,
154
,
285
,
285
,
285
,
285
,
285
,
288
,
285
,
107
,
75
,
75
,
76
,
73
,
341
,
341
,
341
,
341
,
144
,
341
,
150
,
151
,
287
,
287
,
76
,
73
,
285
,
154
,
285
,
285
,
285
,
285
,
285
,
285
,
158
,
285
,
107
,
75
,
75
,
76
,
73
,
341
,
343
,
344
,
345
,
346
,
112
,
109
,
342
,
347
,
342
,
342
,
143
,
342
,
342
,
342
,
348
,
342
,
349
,
344
,
346
,
346
,
112
,
109
,
342
,
347
,
342
,
342
,
342
,
342
,
342
,
342
,
348
,
342
,
344
,
346
,
346
,
112
,
109
,
342
,
347
,
342
,
342
,
342
,
342
,
342
,
342
,
348
,
342
,
350
,
342
,
342
,
342
,
125
,
351
,
342
,
109
,
342
,
347
,
342
,
342
,
342
,
342
,
342
,
350
,
342
,
352
,
353
,
354
,
355
,
112
,
109
,
342
,
347
,
342
,
342
,
141
,
342
,
342
,
342
,
348
,
342
,
356
,
353
,
357
,
357
,
112
,
109
,
342
,
347
,
342
,
342
,
342
,
342
,
342
,
342
,
348
,
342
,
353
,
357
,
357
,
112
,
109
,
342
,
347
,
342
,
342
,
342
,
342
,
342
,
342
,
348
,
342
,
358
,
342
,
342
,
342
,
125
,
359
,
342
,
109
,
342
,
347
,
342
,
342
,
342
,
342
,
342
,
358
,
342
,
360
,
361
,
362
,
363
,
112
,
109
,
342
,
347
,
342
,
342
,
139
,
342
,
342
,
342
,
348
,
342
,
364
,
361
,
365
,
365
,
112
,
109
,
342
,
347
,
342
,
342
,
342
,
342
,
342
,
342
,
348
,
342
,
361
,
365
,
365
,
112
,
109
,
342
,
347
,
342
,
342
,
342
,
342
,
342
,
342
,
348
,
342
,
366
,
342
,
342
,
342
,
125
,
367
,
342
,
109
,
342
,
347
,
342
,
342
,
342
,
342
,
342
,
366
,
342
,
368
,
369
,
370
,
371
,
112
,
109
,
342
,
347
,
342
,
342
,
137
,
342
,
342
,
342
,
348
,
342
,
372
,
369
,
373
,
373
,
112
,
109
,
342
,
347
,
342
,
342
,
342
,
342
,
342
,
342
,
348
,
342
,
369
,
373
,
373
,
112
,
109
,
342
,
347
,
342
,
342
,
342
,
342
,
342
,
342
,
348
,
342
,
374
,
342
,
342
,
342
,
125
,
375
,
342
,
109
,
342
,
347
,
342
,
342
,
342
,
342
,
342
,
374
,
342
,
376
,
377
,
378
,
379
,
112
,
109
,
342
,
347
,
342
,
342
,
135
,
342
,
342
,
342
,
348
,
342
,
380
,
377
,
381
,
381
,
112
,
109
,
342
,
347
,
342
,
342
,
342
,
342
,
342
,
342
,
348
,
342
,
377
,
381
,
381
,
112
,
109
,
342
,
347
,
342
,
342
,
342
,
342
,
342
,
342
,
348
,
342
,
125
,
382
,
342
,
109
,
342
,
347
,
342
,
383
,
383
,
342
,
109
,
342
,
347
,
342
,
384
,
342
,
342
,
385
,
342
,
347
,
342
,
347
,
342
,
386
,
342
,
387
,
342
,
384
,
342
,
342
,
342
,
342
,
347
,
342
,
125
,
342
,
383
,
383
,
342
,
109
,
342
,
347
,
342
,
383
,
382
,
342
,
109
,
342
,
347
,
342
,
388
,
134
,
389
,
390
,
115
,
109
,
342
,
347
,
342
,
134
,
389
,
390
,
115
,
109
,
342
,
347
,
342
,
389
,
389
,
115
,
109
,
342
,
347
,
342
,
391
,
131
,
392
,
393
,
118
,
109
,
342
,
347
,
342
,
131
,
392
,
393
,
118
,
109
,
342
,
347
,
342
,
392
,
392
,
118
,
109
,
342
,
347
,
342
,
394
,
128
,
395
,
396
,
121
,
109
,
342
,
347
,
342
,
128
,
395
,
396
,
121
,
109
,
342
,
347
,
342
,
395
,
395
,
121
,
109
,
342
,
347
,
342
,
397
,
125
,
383
,
398
,
342
,
109
,
342
,
347
,
342
,
125
,
383
,
398
,
342
,
109
,
342
,
347
,
342
,
377
,
381
,
381
,
112
,
109
,
342
,
347
,
342
,
376
,
377
,
381
,
381
,
112
,
109
,
342
,
347
,
342
,
342
,
342
,
342
,
342
,
342
,
348
,
342
,
376
,
377
,
378
,
381
,
112
,
109
,
342
,
347
,
342
,
342
,
135
,
342
,
342
,
342
,
348
,
342
,
374
,
342
,
399
,
342
,
383
,
383
,
342
,
109
,
342
,
347
,
342
,
342
,
342
,
342
,
342
,
374
,
342
,
374
,
342
,
342
,
342
,
383
,
383
,
342
,
109
,
342
,
347
,
342
,
342
,
342
,
342
,
342
,
374
,
342
,
374
,
342
,
342
,
342
,
383
,
375
,
342
,
109
,
342
,
347
,
342
,
342
,
342
,
342
,
342
,
374
,
342
,
368
,
369
,
373
,
373
,
112
,
109
,
342
,
347
,
342
,
342
,
342
,
342
,
342
,
342
,
348
,
342
,
368
,
369
,
370
,
373
,
112
,
109
,
342
,
347
,
342
,
342
,
137
,
342
,
342
,
342
,
348
,
342
,
366
,
342
,
400
,
342
,
383
,
383
,
342
,
109
,
342
,
347
,
342
,
342
,
342
,
342
,
342
,
366
,
342
,
366
,
342
,
342
,
342
,
383
,
383
,
342
,
109
,
342
,
347
,
342
,
342
,
342
,
342
,
342
,
366
,
342
,
366
,
342
,
342
,
342
,
383
,
367
,
342
,
109
,
342
,
347
,
342
,
342
,
342
,
342
,
342
,
366
,
342
,
360
,
361
,
365
,
365
,
112
,
109
,
342
,
347
,
342
,
342
,
342
,
342
,
342
,
342
,
348
,
342
,
360
,
361
,
362
,
365
,
112
,
109
,
342
,
347
,
342
,
342
,
139
,
342
,
342
,
342
,
348
,
342
,
358
,
342
,
401
,
342
,
383
,
383
,
342
,
109
,
342
,
347
,
342
,
342
,
342
,
342
,
342
,
358
,
342
,
358
,
342
,
342
,
342
,
383
,
383
,
342
,
109
,
342
,
347
,
342
,
342
,
342
,
342
,
342
,
358
,
342
,
358
,
342
,
342
,
342
,
383
,
359
,
342
,
109
,
342
,
347
,
342
,
342
,
342
,
342
,
342
,
358
,
342
,
352
,
353
,
357
,
357
,
112
,
109
,
342
,
347
,
342
,
342
,
342
,
342
,
342
,
342
,
348
,
342
,
352
,
353
,
354
,
357
,
112
,
109
,
342
,
347
,
342
,
342
,
141
,
342
,
342
,
342
,
348
,
342
,
350
,
342
,
402
,
342
,
383
,
383
,
342
,
109
,
342
,
347
,
342
,
342
,
342
,
342
,
342
,
350
,
342
,
350
,
342
,
342
,
342
,
383
,
383
,
342
,
109
,
342
,
347
,
342
,
342
,
342
,
342
,
342
,
350
,
342
,
350
,
342
,
342
,
342
,
383
,
351
,
342
,
109
,
342
,
347
,
342
,
342
,
342
,
342
,
342
,
350
,
342
,
343
,
344
,
346
,
346
,
112
,
109
,
342
,
347
,
342
,
342
,
342
,
342
,
342
,
342
,
348
,
342
,
148
,
149
,
150
,
151
,
403
,
287
,
76
,
73
,
285
,
154
,
155
,
155
,
144
,
285
,
285
,
148
,
158
,
285
,
162
,
404
,
164
,
165
,
4
,
1
,
161
,
166
,
161
,
161
,
35
,
161
,
161
,
161
,
167
,
161
,
170
,
149
,
150
,
151
,
405
,
406
,
76
,
407
,
161
,
408
,
161
,
155
,
144
,
161
,
161
,
170
,
158
,
161
,
107
,
409
,
409
,
76
,
407
,
161
,
166
,
161
,
161
,
144
,
161
,
410
,
161
,
161
,
411
,
161
,
408
,
161
,
408
,
161
,
412
,
161
,
207
,
161
,
410
,
161
,
161
,
161
,
161
,
408
,
161
,
170
,
161
,
222
,
107
,
409
,
409
,
76
,
407
,
161
,
166
,
161
,
161
,
161
,
161
,
161
,
170
,
161
,
414
,
413
,
415
,
415
,
413
,
146
,
413
,
416
,
413
,
415
,
415
,
413
,
146
,
413
,
416
,
413
,
417
,
413
,
413
,
418
,
413
,
416
,
413
,
416
,
413
,
419
,
413
,
420
,
413
,
417
,
413
,
413
,
413
,
413
,
416
,
413
,
148
,
341
,
341
,
341
,
341
,
341
,
341
,
341
,
341
,
341
,
155
,
341
,
341
,
341
,
341
,
148
,
341
,
0
};
static
const
short
_indic_syllable_machine_trans_targs
[]
=
{
138
,
160
,
166
,
2
,
167
,
3
,
5
,
170
,
6
,
8
,
173
,
9
,
11
,
176
,
12
,
14
,
15
,
159
,
17
,
18
,
175
,
20
,
21
,
172
,
23
,
24
,
169
,
17
8
,
182
,
183
,
187
,
188
,
19
2
,
193
,
197
,
198
,
138
,
221
,
227
,
36
,
22
8
,
37
,
39
,
231
,
40
,
42
,
234
,
43
,
45
,
23
7
,
46
,
48
,
49
,
220
,
51
,
52
,
23
6
,
54
,
55
,
233
,
57
,
58
,
230
,
239
,
24
3
,
244
,
248
,
249
,
253
,
254
,
258
,
260
,
138
,
28
1
,
287
,
70
,
288
,
138
,
71
,
73
,
29
1
,
74
,
76
,
294
,
77
,
79
,
297
,
80
,
82
,
83
,
28
0
,
85
,
86
,
296
,
88
,
89
,
29
3
,
91
,
92
,
290
,
299
,
303
,
304
,
308
,
3
09
,
313
,
314
,
318
,
138
,
343
,
349
,
103
,
35
0
,
104
,
106
,
353
,
107
,
109
,
356
,
110
,
112
,
3
59
,
113
,
115
,
116
,
342
,
118
,
119
,
3
58
,
121
,
122
,
355
,
124
,
125
,
352
,
361
,
36
5
,
366
,
370
,
371
,
375
,
376
,
380
,
381
,
32
0
,
138
,
394
,
138
,
139
,
200
,
261
,
263
,
3
19
,
321
,
283
,
322
,
382
,
383
,
392
,
399
,
138
,
140
,
142
,
33
,
199
,
162
,
141
,
32
,
14
3
,
195
,
144
,
146
,
31
,
194
,
145
,
30
,
14
7
,
190
,
148
,
150
,
29
,
189
,
149
,
28
,
1
51
,
185
,
152
,
154
,
27
,
184
,
153
,
26
,
15
5
,
180
,
156
,
158
,
25
,
179
,
157
,
1
,
1
65
,
0
,
161
,
164
,
163
,
138
,
168
,
4
,
22
,
171
,
7
,
19
,
174
,
10
,
16
,
177
,
1
3
,
181
,
186
,
191
,
196
,
138
,
201
,
203
,
67
,
259
,
223
,
202
,
66
,
204
,
256
,
205
,
20
7
,
65
,
255
,
206
,
64
,
208
,
251
,
209
,
2
11
,
63
,
250
,
210
,
62
,
212
,
246
,
213
,
21
5
,
61
,
245
,
214
,
60
,
216
,
241
,
217
,
21
9
,
59
,
240
,
218
,
35
,
226
,
34
,
222
,
22
5
,
224
,
138
,
229
,
38
,
56
,
232
,
41
,
5
3
,
235
,
44
,
50
,
238
,
47
,
242
,
247
,
252
,
257
,
138
,
262
,
100
,
264
,
316
,
265
,
26
7
,
99
,
315
,
266
,
98
,
268
,
311
,
269
,
27
1
,
97
,
310
,
270
,
96
,
272
,
306
,
273
,
27
5
,
95
,
305
,
274
,
94
,
276
,
301
,
277
,
27
9
,
93
,
300
,
278
,
69
,
286
,
68
,
282
,
28
5
,
284
,
138
,
289
,
72
,
90
,
292
,
75
,
87
,
295
,
78
,
84
,
298
,
81
,
302
,
307
,
312
,
317
,
138
,
138
,
323
,
325
,
134
,
133
,
3
45
,
324
,
326
,
378
,
327
,
329
,
132
,
377
,
3
28
,
131
,
330
,
373
,
331
,
333
,
130
,
372
,
33
2
,
129
,
334
,
368
,
335
,
337
,
128
,
367
,
33
6
,
127
,
338
,
363
,
339
,
341
,
126
,
362
,
34
0
,
102
,
348
,
101
,
344
,
347
,
346
,
138
,
3
51
,
105
,
123
,
354
,
108
,
120
,
357
,
111
,
1
17
,
360
,
114
,
364
,
369
,
374
,
379
,
135
,
3
84
,
385
,
391
,
386
,
388
,
136
,
387
,
390
,
3
89
,
138
,
393
,
137
,
396
,
395
,
398
,
39
7
,
138
23
,
24
,
169
,
17
9
,
183
,
184
,
188
,
189
,
19
3
,
194
,
198
,
199
,
138
,
222
,
228
,
36
,
22
9
,
37
,
39
,
232
,
40
,
42
,
235
,
43
,
45
,
23
8
,
46
,
48
,
49
,
221
,
51
,
52
,
23
7
,
54
,
55
,
234
,
57
,
58
,
231
,
241
,
24
5
,
246
,
250
,
251
,
255
,
256
,
260
,
262
,
138
,
28
3
,
289
,
70
,
290
,
138
,
71
,
73
,
29
3
,
74
,
76
,
296
,
77
,
79
,
299
,
80
,
82
,
83
,
28
2
,
85
,
86
,
298
,
88
,
89
,
29
5
,
91
,
92
,
292
,
302
,
306
,
307
,
311
,
3
12
,
316
,
317
,
321
,
138
,
346
,
352
,
103
,
35
3
,
104
,
106
,
356
,
107
,
109
,
359
,
110
,
112
,
3
62
,
113
,
115
,
116
,
345
,
118
,
119
,
3
61
,
121
,
122
,
358
,
124
,
125
,
355
,
365
,
36
9
,
370
,
374
,
375
,
379
,
380
,
384
,
385
,
32
3
,
138
,
398
,
138
,
139
,
201
,
263
,
265
,
3
22
,
324
,
285
,
325
,
386
,
387
,
301
,
396
,
403
,
138
,
140
,
142
,
33
,
200
,
162
,
178
,
14
1
,
32
,
143
,
196
,
144
,
146
,
31
,
195
,
14
5
,
30
,
147
,
191
,
148
,
150
,
29
,
190
,
1
49
,
28
,
151
,
186
,
152
,
154
,
27
,
185
,
15
3
,
26
,
155
,
181
,
156
,
158
,
25
,
180
,
1
57
,
1
,
165
,
0
,
161
,
164
,
163
,
138
,
168
,
4
,
22
,
171
,
7
,
19
,
174
,
10
,
1
6
,
177
,
13
,
182
,
187
,
192
,
197
,
138
,
202
,
204
,
67
,
261
,
224
,
240
,
203
,
66
,
20
5
,
258
,
206
,
208
,
65
,
257
,
207
,
64
,
2
09
,
253
,
210
,
212
,
63
,
252
,
211
,
62
,
21
3
,
248
,
214
,
216
,
61
,
247
,
215
,
60
,
21
7
,
243
,
218
,
220
,
59
,
242
,
219
,
35
,
22
7
,
34
,
223
,
226
,
225
,
138
,
230
,
38
,
5
6
,
233
,
41
,
53
,
236
,
44
,
50
,
239
,
47
,
244
,
249
,
254
,
259
,
138
,
264
,
100
,
26
6
,
319
,
267
,
269
,
99
,
318
,
268
,
98
,
27
0
,
314
,
271
,
273
,
97
,
313
,
272
,
96
,
27
4
,
309
,
275
,
277
,
95
,
308
,
276
,
94
,
27
8
,
304
,
279
,
281
,
93
,
303
,
280
,
69
,
28
8
,
68
,
284
,
287
,
286
,
138
,
291
,
72
,
90
,
294
,
75
,
87
,
297
,
78
,
84
,
300
,
81
,
305
,
310
,
315
,
320
,
138
,
138
,
326
,
3
28
,
134
,
133
,
348
,
364
,
327
,
329
,
382
,
3
30
,
332
,
132
,
381
,
331
,
131
,
333
,
377
,
33
4
,
336
,
130
,
376
,
335
,
129
,
337
,
372
,
33
8
,
340
,
128
,
371
,
339
,
127
,
341
,
367
,
34
2
,
344
,
126
,
366
,
343
,
102
,
351
,
101
,
3
47
,
350
,
349
,
138
,
354
,
105
,
123
,
357
,
1
08
,
120
,
360
,
111
,
117
,
363
,
114
,
368
,
3
73
,
378
,
383
,
135
,
388
,
389
,
395
,
390
,
3
92
,
136
,
391
,
394
,
393
,
138
,
397
,
13
7
,
400
,
399
,
402
,
401
,
138
};
static
const
char
_indic_syllable_machine_trans_actions
[]
=
{
...
...
@@ -705,40 +782,40 @@ static const char _indic_syllable_machine_trans_actions[] = {
2
,
0
,
0
,
2
,
0
,
0
,
2
,
2
,
2
,
2
,
2
,
2
,
2
,
2
,
2
,
2
,
6
,
8
,
0
,
11
,
2
,
2
,
6
,
0
,
12
,
12
,
0
,
2
,
6
,
2
,
2
,
0
,
13
,
2
,
0
,
0
,
2
,
0
,
2
,
0
,
12
,
12
,
0
,
2
,
6
,
2
,
6
,
2
,
0
,
13
,
2
,
0
,
0
,
2
,
0
,
2
,
2
,
0
,
2
,
2
,
2
,
0
,
0
,
2
,
2
,
0
,
2
,
2
,
2
,
0
,
0
,
2
,
2
,
0
,
2
,
2
,
2
,
0
,
0
,
2
,
2
,
0
,
2
,
2
,
2
,
0
,
0
,
2
,
2
,
0
,
2
,
0
,
0
,
0
,
0
,
14
,
2
,
0
,
0
,
2
,
0
,
0
,
2
,
0
,
0
,
2
,
0
,
2
,
2
,
2
,
2
,
15
,
2
,
0
,
0
,
2
,
0
,
2
,
2
,
0
,
2
,
2
,
2
,
0
,
0
,
2
,
2
,
0
,
2
,
2
,
2
,
0
,
0
,
2
,
2
,
0
,
2
,
2
,
2
,
0
,
0
,
2
,
2
,
0
,
2
,
2
,
2
,
0
,
0
,
2
,
2
,
0
,
2
,
0
,
0
,
0
,
0
,
1
4
,
2
,
0
,
2
,
0
,
0
,
0
,
0
,
1
6
,
2
,
0
,
0
,
2
,
0
,
0
,
2
,
0
,
0
,
2
,
0
,
2
,
2
,
2
,
2
,
15
,
2
,
0
,
0
,
2
,
0
,
2
,
0
,
2
,
2
,
2
,
0
,
0
,
2
,
2
,
0
,
2
,
2
,
2
,
0
,
0
,
2
,
2
,
0
,
2
,
2
,
2
,
0
,
0
,
2
,
2
,
0
,
2
,
2
,
2
,
0
,
0
,
2
,
2
,
0
,
2
,
0
,
0
,
0
,
0
,
16
,
2
,
0
,
0
,
2
,
0
,
0
,
2
,
0
,
0
,
2
,
0
,
2
,
2
,
2
,
2
,
17
,
6
,
0
,
6
,
2
,
6
,
0
,
0
,
6
,
6
,
0
,
6
,
2
,
6
,
0
,
0
,
6
,
6
,
0
,
6
,
2
,
6
,
0
,
0
,
6
,
6
,
0
,
6
,
2
,
6
,
0
,
0
,
6
,
6
,
0
,
2
,
0
,
0
,
0
,
0
,
18
,
2
,
0
,
0
,
2
,
0
,
0
,
2
,
0
,
0
,
2
,
0
,
2
,
2
,
2
,
2
,
19
,
20
,
2
,
0
,
0
,
0
,
0
,
2
,
2
,
2
,
2
,
0
,
0
,
2
,
2
,
0
,
2
,
2
,
2
,
0
,
0
,
2
,
2
,
0
,
2
,
2
,
2
,
0
,
0
,
2
,
2
,
0
,
2
,
2
,
2
,
0
,
0
,
2
,
2
,
0
,
2
,
0
,
0
,
0
,
0
,
21
,
2
,
0
,
0
,
2
,
0
,
0
,
2
,
0
,
0
,
2
,
0
,
2
,
2
,
2
,
2
,
0
,
0
,
22
,
22
,
0
,
0
,
0
,
0
,
0
,
0
,
23
,
2
,
0
,
0
,
0
,
0
,
0
,
24
0
,
2
,
2
,
2
,
2
,
17
,
6
,
0
,
6
,
2
,
6
,
0
,
0
,
6
,
6
,
0
,
6
,
2
,
6
,
0
,
0
,
6
,
6
,
0
,
6
,
2
,
6
,
0
,
0
,
6
,
6
,
0
,
6
,
2
,
6
,
0
,
0
,
6
,
6
,
0
,
2
,
0
,
0
,
0
,
0
,
18
,
2
,
0
,
0
,
2
,
0
,
0
,
2
,
0
,
0
,
2
,
0
,
2
,
2
,
2
,
2
,
19
,
20
,
2
,
0
,
0
,
0
,
0
,
2
,
2
,
2
,
2
,
2
,
0
,
0
,
2
,
2
,
0
,
2
,
2
,
2
,
0
,
0
,
2
,
2
,
0
,
2
,
2
,
2
,
0
,
0
,
2
,
2
,
0
,
2
,
2
,
2
,
0
,
0
,
2
,
2
,
0
,
2
,
0
,
0
,
0
,
0
,
21
,
2
,
0
,
0
,
2
,
0
,
0
,
2
,
0
,
0
,
2
,
0
,
2
,
2
,
2
,
2
,
0
,
0
,
22
,
22
,
0
,
0
,
0
,
0
,
0
,
0
,
23
,
2
,
0
,
0
,
0
,
0
,
0
,
24
};
static
const
char
_indic_syllable_machine_to_state_actions
[]
=
{
...
...
@@ -791,7 +868,8 @@ static const char _indic_syllable_machine_to_state_actions[] = {
0
,
0
,
0
,
0
,
0
,
0
,
0
,
0
,
0
,
0
,
0
,
0
,
0
,
0
,
0
,
0
,
0
,
0
,
0
,
0
,
0
,
0
,
0
,
0
,
0
,
0
,
0
,
0
,
0
,
0
,
0
,
0
0
,
0
,
0
,
0
,
0
,
0
,
0
,
0
,
0
,
0
,
0
,
0
};
static
const
char
_indic_syllable_machine_from_state_actions
[]
=
{
...
...
@@ -844,7 +922,8 @@ static const char _indic_syllable_machine_from_state_actions[] = {
0
,
0
,
0
,
0
,
0
,
0
,
0
,
0
,
0
,
0
,
0
,
0
,
0
,
0
,
0
,
0
,
0
,
0
,
0
,
0
,
0
,
0
,
0
,
0
,
0
,
0
,
0
,
0
,
0
,
0
,
0
,
0
0
,
0
,
0
,
0
,
0
,
0
,
0
,
0
,
0
,
0
,
0
,
0
};
static
const
short
_indic_syllable_machine_eof_trans
[]
=
{
...
...
@@ -865,39 +944,40 @@ static const short _indic_syllable_machine_eof_trans[] = {
109
,
109
,
109
,
109
,
109
,
109
,
109
,
109
,
109
,
109
,
109
,
109
,
109
,
109
,
109
,
109
,
109
,
109
,
109
,
109
,
109
,
109
,
109
,
73
,
1
,
146
,
0
,
161
,
161
,
161
,
161
,
161
,
161
,
161
,
161
,
161
,
161
,
161
,
161
,
161
,
161
,
161
,
161
,
161
,
161
,
161
,
161
,
161
,
161
,
161
,
161
,
161
,
161
,
161
,
161
,
161
,
161
,
161
,
161
,
161
,
161
,
161
,
161
,
161
,
161
,
161
,
161
,
161
,
161
,
161
,
161
,
161
,
161
,
161
,
161
,
161
,
161
,
161
,
161
,
161
,
161
,
161
,
161
,
161
,
161
,
161
,
161
,
161
,
222
,
222
,
222
,
222
,
222
,
222
,
222
,
222
,
222
,
222
,
222
,
222
,
222
,
222
,
222
,
222
,
222
,
222
,
222
,
222
,
222
,
222
,
222
,
222
,
222
,
222
,
222
,
222
,
222
,
222
,
222
,
222
,
222
,
222
,
222
,
222
,
222
,
222
,
222
,
222
,
222
,
222
,
222
,
222
,
222
,
222
,
222
,
222
,
222
,
222
,
222
,
222
,
222
,
222
,
222
,
222
,
222
,
222
,
222
,
222
,
222
,
283
,
283
,
283
,
283
,
283
,
283
,
283
,
283
,
283
,
283
,
283
,
283
,
283
,
283
,
283
,
283
,
283
,
283
,
283
,
283
,
283
,
283
,
283
,
283
,
283
,
283
,
283
,
283
,
283
,
283
,
283
,
283
,
283
,
283
,
283
,
283
,
283
,
283
,
283
,
283
,
283
,
283
,
283
,
283
,
283
,
283
,
283
,
283
,
283
,
283
,
283
,
283
,
283
,
283
,
283
,
283
,
283
,
283
,
339
,
283
,
339
,
340
,
340
,
340
,
340
,
340
,
340
,
340
,
340
,
340
,
340
,
340
,
340
,
340
,
340
,
340
,
340
,
340
,
340
,
340
,
340
,
340
,
340
,
340
,
340
,
340
,
340
,
340
,
340
,
340
,
340
,
340
,
340
,
340
,
340
,
340
,
340
,
340
,
340
,
340
,
340
,
340
,
340
,
340
,
340
,
340
,
340
,
340
,
340
,
340
,
340
,
340
,
340
,
340
,
340
,
340
,
340
,
340
,
340
,
340
,
340
,
283
,
161
,
161
,
161
,
161
,
161
,
161
,
161
,
161
,
161
,
410
,
410
,
410
,
410
,
410
,
410
,
410
,
339
1
,
146
,
0
,
162
,
162
,
162
,
162
,
162
,
162
,
162
,
162
,
162
,
162
,
162
,
162
,
162
,
162
,
162
,
162
,
162
,
162
,
162
,
162
,
162
,
162
,
162
,
162
,
162
,
162
,
162
,
162
,
162
,
162
,
162
,
162
,
162
,
162
,
162
,
162
,
162
,
162
,
162
,
162
,
162
,
162
,
162
,
162
,
162
,
162
,
162
,
162
,
162
,
162
,
162
,
162
,
162
,
162
,
162
,
162
,
162
,
162
,
162
,
162
,
162
,
162
,
224
,
224
,
224
,
224
,
224
,
224
,
224
,
224
,
224
,
224
,
224
,
224
,
224
,
224
,
224
,
224
,
224
,
224
,
224
,
224
,
224
,
224
,
224
,
224
,
224
,
224
,
224
,
224
,
224
,
224
,
224
,
224
,
224
,
224
,
224
,
224
,
224
,
224
,
224
,
224
,
224
,
224
,
224
,
224
,
224
,
224
,
224
,
224
,
224
,
224
,
224
,
224
,
224
,
224
,
224
,
224
,
224
,
224
,
224
,
224
,
224
,
224
,
286
,
286
,
286
,
286
,
286
,
286
,
286
,
286
,
286
,
286
,
286
,
286
,
286
,
286
,
286
,
286
,
286
,
286
,
286
,
286
,
286
,
286
,
286
,
286
,
286
,
286
,
286
,
286
,
286
,
286
,
286
,
286
,
286
,
286
,
286
,
286
,
286
,
286
,
286
,
286
,
286
,
286
,
286
,
286
,
286
,
286
,
286
,
286
,
286
,
286
,
286
,
286
,
286
,
286
,
286
,
286
,
286
,
286
,
286
,
342
,
286
,
342
,
343
,
343
,
343
,
343
,
343
,
343
,
343
,
343
,
343
,
343
,
343
,
343
,
343
,
343
,
343
,
343
,
343
,
343
,
343
,
343
,
343
,
343
,
343
,
343
,
343
,
343
,
343
,
343
,
343
,
343
,
343
,
343
,
343
,
343
,
343
,
343
,
343
,
343
,
343
,
343
,
343
,
343
,
343
,
343
,
343
,
343
,
343
,
343
,
343
,
343
,
343
,
343
,
343
,
343
,
343
,
343
,
343
,
343
,
343
,
343
,
343
,
286
,
162
,
162
,
162
,
162
,
162
,
162
,
162
,
162
,
162
,
414
,
414
,
414
,
414
,
414
,
414
,
414
,
342
};
static
const
int
indic_syllable_machine_start
=
138
;
...
...
@@ -911,7 +991,7 @@ static const int indic_syllable_machine_en_main = 138;
#line 9
2
"hb-ot-shape-complex-indic-machine.rl"
#line 9
3
"hb-ot-shape-complex-indic-machine.rl"
#define found_syllable(syllable_type) \
...
...
@@ -930,7 +1010,7 @@ find_syllables (hb_buffer_t *buffer)
int
cs
;
hb_glyph_info_t
*
info
=
buffer
->
info
;
#line
93
4 "hb-ot-shape-complex-indic-machine.hh"
#line
101
4 "hb-ot-shape-complex-indic-machine.hh"
{
cs
=
indic_syllable_machine_start
;
ts
=
0
;
...
...
@@ -938,7 +1018,7 @@ find_syllables (hb_buffer_t *buffer)
act
=
0
;
}
#line 11
2
"hb-ot-shape-complex-indic-machine.rl"
#line 11
3
"hb-ot-shape-complex-indic-machine.rl"
p
=
0
;
...
...
@@ -946,7 +1026,7 @@ find_syllables (hb_buffer_t *buffer)
unsigned
int
syllable_serial
=
1
;
#line
95
0 "hb-ot-shape-complex-indic-machine.hh"
#line
103
0 "hb-ot-shape-complex-indic-machine.hh"
{
int
_slen
;
int
_trans
;
...
...
@@ -960,7 +1040,7 @@ _resume:
#line 1 "NONE"
{
ts
=
p
;}
break
;
#line
96
4 "hb-ot-shape-complex-indic-machine.hh"
#line
104
4 "hb-ot-shape-complex-indic-machine.hh"
}
_keys
=
_indic_syllable_machine_trans_keys
+
(
cs
<<
1
);
...
...
@@ -983,71 +1063,71 @@ _eof_trans:
{
te
=
p
+
1
;}
break
;
case
14
:
#line 8
3
"hb-ot-shape-complex-indic-machine.rl"
#line 8
4
"hb-ot-shape-complex-indic-machine.rl"
{
te
=
p
+
1
;{
found_syllable
(
consonant_syllable
);
}}
break
;
case
16
:
#line 8
4
"hb-ot-shape-complex-indic-machine.rl"
#line 8
5
"hb-ot-shape-complex-indic-machine.rl"
{
te
=
p
+
1
;{
found_syllable
(
vowel_syllable
);
}}
break
;
case
21
:
#line 8
5
"hb-ot-shape-complex-indic-machine.rl"
#line 8
6
"hb-ot-shape-complex-indic-machine.rl"
{
te
=
p
+
1
;{
found_syllable
(
standalone_cluster
);
}}
break
;
case
24
:
#line 8
6
"hb-ot-shape-complex-indic-machine.rl"
#line 8
7
"hb-ot-shape-complex-indic-machine.rl"
{
te
=
p
+
1
;{
found_syllable
(
symbol_cluster
);
}}
break
;
case
18
:
#line 8
7
"hb-ot-shape-complex-indic-machine.rl"
#line 8
8
"hb-ot-shape-complex-indic-machine.rl"
{
te
=
p
+
1
;{
found_syllable
(
broken_cluster
);
}}
break
;
case
11
:
#line 8
8
"hb-ot-shape-complex-indic-machine.rl"
#line 8
9
"hb-ot-shape-complex-indic-machine.rl"
{
te
=
p
+
1
;{
found_syllable
(
non_indic_cluster
);
}}
break
;
case
13
:
#line 8
3
"hb-ot-shape-complex-indic-machine.rl"
#line 8
4
"hb-ot-shape-complex-indic-machine.rl"
{
te
=
p
;
p
--
;{
found_syllable
(
consonant_syllable
);
}}
break
;
case
15
:
#line 8
4
"hb-ot-shape-complex-indic-machine.rl"
#line 8
5
"hb-ot-shape-complex-indic-machine.rl"
{
te
=
p
;
p
--
;{
found_syllable
(
vowel_syllable
);
}}
break
;
case
20
:
#line 8
5
"hb-ot-shape-complex-indic-machine.rl"
#line 8
6
"hb-ot-shape-complex-indic-machine.rl"
{
te
=
p
;
p
--
;{
found_syllable
(
standalone_cluster
);
}}
break
;
case
23
:
#line 8
6
"hb-ot-shape-complex-indic-machine.rl"
#line 8
7
"hb-ot-shape-complex-indic-machine.rl"
{
te
=
p
;
p
--
;{
found_syllable
(
symbol_cluster
);
}}
break
;
case
17
:
#line 8
7
"hb-ot-shape-complex-indic-machine.rl"
#line 8
8
"hb-ot-shape-complex-indic-machine.rl"
{
te
=
p
;
p
--
;{
found_syllable
(
broken_cluster
);
}}
break
;
case
19
:
#line 8
8
"hb-ot-shape-complex-indic-machine.rl"
#line 8
9
"hb-ot-shape-complex-indic-machine.rl"
{
te
=
p
;
p
--
;{
found_syllable
(
non_indic_cluster
);
}}
break
;
case
1
:
#line 8
3
"hb-ot-shape-complex-indic-machine.rl"
#line 8
4
"hb-ot-shape-complex-indic-machine.rl"
{{
p
=
((
te
))
-
1
;}{
found_syllable
(
consonant_syllable
);
}}
break
;
case
3
:
#line 8
4
"hb-ot-shape-complex-indic-machine.rl"
#line 8
5
"hb-ot-shape-complex-indic-machine.rl"
{{
p
=
((
te
))
-
1
;}{
found_syllable
(
vowel_syllable
);
}}
break
;
case
7
:
#line 8
5
"hb-ot-shape-complex-indic-machine.rl"
#line 8
6
"hb-ot-shape-complex-indic-machine.rl"
{{
p
=
((
te
))
-
1
;}{
found_syllable
(
standalone_cluster
);
}}
break
;
case
8
:
#line 8
6
"hb-ot-shape-complex-indic-machine.rl"
#line 8
7
"hb-ot-shape-complex-indic-machine.rl"
{{
p
=
((
te
))
-
1
;}{
found_syllable
(
symbol_cluster
);
}}
break
;
case
4
:
#line 8
7
"hb-ot-shape-complex-indic-machine.rl"
#line 8
8
"hb-ot-shape-complex-indic-machine.rl"
{{
p
=
((
te
))
-
1
;}{
found_syllable
(
broken_cluster
);
}}
break
;
case
5
:
...
...
@@ -1068,22 +1148,22 @@ _eof_trans:
case
22
:
#line 1 "NONE"
{
te
=
p
+
1
;}
#line 8
3
"hb-ot-shape-complex-indic-machine.rl"
#line 8
4
"hb-ot-shape-complex-indic-machine.rl"
{
act
=
1
;}
break
;
case
6
:
#line 1 "NONE"
{
te
=
p
+
1
;}
#line 8
7
"hb-ot-shape-complex-indic-machine.rl"
#line 8
8
"hb-ot-shape-complex-indic-machine.rl"
{
act
=
5
;}
break
;
case
12
:
#line 1 "NONE"
{
te
=
p
+
1
;}
#line 8
8
"hb-ot-shape-complex-indic-machine.rl"
#line 8
9
"hb-ot-shape-complex-indic-machine.rl"
{
act
=
6
;}
break
;
#line 1
08
7 "hb-ot-shape-complex-indic-machine.hh"
#line 1
16
7 "hb-ot-shape-complex-indic-machine.hh"
}
_again:
...
...
@@ -1092,7 +1172,7 @@ _again:
#line 1 "NONE"
{
ts
=
0
;}
break
;
#line 1
09
6 "hb-ot-shape-complex-indic-machine.hh"
#line 1
17
6 "hb-ot-shape-complex-indic-machine.hh"
}
if
(
++
p
!=
pe
)
...
...
@@ -1108,7 +1188,7 @@ _again:
}
#line 12
0
"hb-ot-shape-complex-indic-machine.rl"
#line 12
1
"hb-ot-shape-complex-indic-machine.rl"
}
...
...
src/hb-ot-shape-complex-indic-machine.rl
浏览文件 @
21bb80eb
...
...
@@ -52,6 +52,7 @@ DOTTEDCIRCLE = 12;
RS = 13;
Repha = 15;
Ra = 16;
CM = 17;
Symbol= 18;
CS = 19;
...
...
@@ -67,10 +68,10 @@ matra_group = z{0,3}.M.N?.(H | forced_rakar)?;
syllable_tail = (z?.SM.SM?.ZWNJ?)? A{0,3}?;
halant_group = (z?.H.(ZWJ.N?)?);
final_halant_group = halant_group | H.ZWNJ;
medial_group = CM?;
halant_or_matra_group = (final_halant_group | matra_group{0,4});
complex_syllable_tail = (halant_group.cn){0,4} halant_or_matra_group syllable_tail;
complex_syllable_tail = (halant_group.cn){0,4} medial_group halant_or_matra_group syllable_tail;
consonant_syllable = (Repha|CS)? cn complex_syllable_tail;
vowel_syllable = reph? V.n? (ZWJ | complex_syllable_tail);
...
...
src/hb-ot-shape-complex-indic.cc
浏览文件 @
21bb80eb
...
...
@@ -720,7 +720,7 @@ initial_reordering_consonant_syllable (const hb_ot_shape_plan_t *plan,
indic_position_t
last_pos
=
POS_START
;
for
(
unsigned
int
i
=
start
;
i
<
end
;
i
++
)
{
if
((
FLAG_UNSAFE
(
info
[
i
].
indic_category
())
&
(
JOINER_FLAGS
|
FLAG
(
OT_N
)
|
FLAG
(
OT_RS
)
|
FLAG
(
OT_H
))))
if
((
FLAG_UNSAFE
(
info
[
i
].
indic_category
())
&
(
JOINER_FLAGS
|
FLAG
(
OT_N
)
|
FLAG
(
OT_RS
)
|
MEDIAL_FLAGS
|
FLAG
(
OT_H
))))
{
info
[
i
].
indic_position
()
=
last_pos
;
if
(
unlikely
(
info
[
i
].
indic_category
()
==
OT_H
&&
...
...
src/hb-ot-shape-complex-indic.hh
浏览文件 @
21bb80eb
...
...
@@ -62,17 +62,19 @@ enum indic_category_t {
OT_Coeng
=
14
,
/* Khmer-style Virama. */
OT_Repha
=
15
,
/* Atomically-encoded logical or visual repha. */
OT_Ra
=
16
,
OT_CM
=
17
,
/* Consonant-Medial
; Unused by Indic shaper
. */
OT_CM
=
17
,
/* Consonant-Medial. */
OT_Symbol
=
18
,
/* Avagraha, etc that take marks (SM,A,VD). */
OT_CS
=
19
};
#define MEDIAL_FLAGS (FLAG (OT_CM))
/* Note:
*
* We treat Vowels and placeholders as if they were consonants. This is safe because Vowels
* cannot happen in a consonant syllable. The plus side however is, we can call the
* consonant syllable logic from the vowel syllable function and get it all right! */
#define CONSONANT_FLAGS (FLAG (OT_C) | FLAG (OT_CS) | FLAG (OT_Ra) | FLAG (OT_V) | FLAG (OT_PLACEHOLDER) | FLAG (OT_DOTTEDCIRCLE))
#define CONSONANT_FLAGS (FLAG (OT_C) | FLAG (OT_CS) | FLAG (OT_Ra) |
MEDIAL_FLAGS |
FLAG (OT_V) | FLAG (OT_PLACEHOLDER) | FLAG (OT_DOTTEDCIRCLE))
#define JOINER_FLAGS (FLAG (OT_ZWJ) | FLAG (OT_ZWNJ))
...
...
test/shaping/data/in-house/fonts/f75c4b05a0a4d67c1a808081ae3d74a9c66509e8.ttf
0 → 100644
浏览文件 @
21bb80eb
文件已添加
test/shaping/data/in-house/tests/indic-syllable.tests
浏览文件 @
21bb80eb
...
...
@@ -6,3 +6,5 @@
../fonts/1735326da89f0818cd8c51a0600e9789812c0f94.ttf::U+0A51:[uni25CC=0+1044|udaatguru=0+0]
../fonts/1735326da89f0818cd8c51a0600e9789812c0f94.ttf::U+25CC,U+0A51:[uni25CC=0+1044|udaatguru=0+0]
../fonts/81c368a33816fb20e9f647e8f24e2180f4720263.ttf:--no-glyph-names:U+0C80,U+0C82:[1=0+502|2=0+502]
../fonts/f75c4b05a0a4d67c1a808081ae3d74a9c66509e8.ttf::U+0A20,U+0A75,U+0A47:[tthaguru=0+1352|yakashguru=0@-90,0+0|eematraguru=0@-411,0+0]
../fonts/f75c4b05a0a4d67c1a808081ae3d74a9c66509e8.ttf::U+0A20,U+0A75,U+0A42:[tthaguru=0+1352|yakashuuguru=0+0]
编辑
预览
Markdown
is supported
0%
请重试
或
添加新附件
.
添加附件
取消
You are about to add
0
people
to the discussion. Proceed with caution.
先完成此消息的编辑!
取消
想要评论请
注册
或
登录