Ver Fonte

Merge pull request #1048 from visuddhinanda/laravel

新建很多controller
visuddhinanda há 3 anos atrás
pai
commit
96215f019f
100 ficheiros alterados com 23673 adições e 270 exclusões
  1. 7 0
      .env.example
  2. 30 16
      app/Console/Commands/InitCs6sentence.php
  3. 75 0
      app/Console/Commands/InitSystemChannel.php
  4. 62 0
      app/Console/Commands/TestCaseMan.php
  5. 53 0
      app/Console/Commands/TestMdRender.php
  6. 11 3
      app/Console/Commands/TestMq.php
  7. 4 4
      app/Console/Commands/TestMqWorker.php
  8. 148 0
      app/Console/Commands/UpgradeCompound.php
  9. 213 0
      app/Console/Commands/UpgradeDict.php
  10. 119 0
      app/Console/Commands/UpgradeDictSysWbwExtract.php
  11. 217 0
      app/Console/Commands/UpgradeRegular.php
  12. 54 0
      app/Console/Commands/UpgradeVocabulary.php
  13. 119 0
      app/Console/Commands/UpgradeWbwTemplate.php
  14. 57 0
      app/Console/Commands/UpgradeWordPart.php
  15. 30 0
      app/Console/Workers/Workers.php
  16. 32 0
      app/Http/Api/AuthApi.php
  17. 32 0
      app/Http/Api/ChannelApi.php
  18. 153 0
      app/Http/Api/MdRender.php
  19. 18 0
      app/Http/Api/PaliTextApi.php
  20. 139 0
      app/Http/Api/ShareApi.php
  21. 21 0
      app/Http/Api/StudioApi.php
  22. 17 0
      app/Http/Api/SuggestionApi.php
  23. 21 0
      app/Http/Api/UserApi.php
  24. 200 0
      app/Http/Controllers/ArticleController.php
  25. 130 0
      app/Http/Controllers/ArticleProgressController.php
  26. 106 0
      app/Http/Controllers/AuthController.php
  27. 230 4
      app/Http/Controllers/ChannelController.php
  28. 236 0
      app/Http/Controllers/CollectionController.php
  29. 2 1
      app/Http/Controllers/Controller.php
  30. 486 0
      app/Http/Controllers/CorpusController.php
  31. 182 0
      app/Http/Controllers/CourseController.php
  32. 138 0
      app/Http/Controllers/CourseMemberController.php
  33. 139 66
      app/Http/Controllers/DhammaTermController.php
  34. 136 0
      app/Http/Controllers/DictController.php
  35. 211 0
      app/Http/Controllers/DiscussionController.php
  36. 121 0
      app/Http/Controllers/ExportWbwController.php
  37. 206 0
      app/Http/Controllers/GroupController.php
  38. 164 0
      app/Http/Controllers/GroupMemberController.php
  39. 70 21
      app/Http/Controllers/PaliTextController.php
  40. 27 10
      app/Http/Controllers/SentPrController.php
  41. 38 3
      app/Http/Controllers/SentenceController.php
  42. 114 0
      app/Http/Controllers/ShareController.php
  43. 74 0
      app/Http/Controllers/SuggestionController.php
  44. 81 0
      app/Http/Controllers/UploadController.php
  45. 76 0
      app/Http/Controllers/UserController.php
  46. 47 30
      app/Http/Controllers/UserDictController.php
  47. 169 0
      app/Http/Controllers/WbwLookupController.php
  48. 2 2
      app/Http/Kernel.php
  49. 32 0
      app/Http/Middleware/ApiLog.php
  50. 44 0
      app/Http/Requests/CollectionRequest.php
  51. 22 0
      app/Http/Resources/CollectionListResource.php
  52. 19 0
      app/Http/Resources/CourseMemberResource.php
  53. 19 0
      app/Http/Resources/CourseResource.php
  54. 31 0
      app/Http/Resources/DiscussionResource.php
  55. 30 0
      app/Http/Resources/GroupMemberResource.php
  56. 42 0
      app/Http/Resources/SentPrResource.php
  57. 34 0
      app/Http/Resources/SentResource.php
  58. 69 0
      app/Http/Resources/ShareResource.php
  59. 23 0
      app/Http/Resources/UserResource.php
  60. 5 0
      app/Models/Article.php
  61. 7 0
      app/Models/Channel.php
  62. 5 0
      app/Models/Collection.php
  63. 11 0
      app/Models/Course.php
  64. 16 0
      app/Models/CourseMember.php
  65. 2 2
      app/Models/DhammaTerm.php
  66. 18 0
      app/Models/DictInfo.php
  67. 15 0
      app/Models/Discussion.php
  68. 11 0
      app/Models/Group.php
  69. 4 0
      app/Models/GroupInfo.php
  70. 4 0
      app/Models/GroupMember.php
  71. 3 0
      app/Models/UserDict.php
  72. 13 0
      app/Models/WordPart.php
  73. 3371 0
      app/Tools/CaseMan.php
  74. 726 0
      app/Tools/TurboSplit.php
  75. 3147 0
      app/Tools/ending.csv
  76. 6 1
      change-logs.md
  77. 8 2
      composer.json
  78. 1 1
      config/app.php
  79. 4 4
      config/cors.php
  80. 39 0
      database/migrations/2022_08_11_064121_create_dict_infos_table.php
  81. 34 0
      database/migrations/2022_08_11_095714_add_dictid_in_user_dicts.php
  82. 33 0
      database/migrations/2022_08_12_134209_create_word_parts_table.php
  83. 35 0
      database/migrations/2022_08_14_131951_add_realindex_in_wbw_templates.php
  84. 34 0
      database/migrations/2022_08_14_133812_add_sourceindex_in_user_dicts.php
  85. 36 0
      database/migrations/2022_08_14_140946_add_flag_in_user_dicts.php
  86. 39 0
      database/migrations/2022_12_19_125601_create_discussions_table.php
  87. 40 0
      database/migrations/2022_12_29_125609_create_courses_table.php
  88. 36 0
      database/migrations/2022_12_29_125646_create_course_members_table.php
  89. 58 0
      documents/laravel_quick_start.md
  90. 7 7
      documents/proto/course.proto
  91. 9 5
      public/app/api/user.php
  92. 67 23
      public/app/db/user.php
  93. 61 62
      public/app/dict/turbo_split.php
  94. 3 2
      public/app/pcdl/html_foot.php
  95. 2104 0
      public/app/public/ending/adj.csv
  96. 1060 0
      public/app/public/ending/noun.csv
  97. 136 0
      public/app/public/ending/verb.csv
  98. 41 1
      public/app/public/function.php
  99. 1312 0
      public/app/studio/editor copy.php
  100. 5730 0
      public/app/studio/js/editor copy.js

+ 7 - 0
.env.example

@@ -63,4 +63,11 @@ ASSETS_SERVER="https://assets-hk.wikipali.org"
 SNOWFLAKE_DATA_CENTER_ID=1
 SNOWFLAKE_WORKER_ID=1
 
+MQ_HOST="localhost"
+MQ_PORT=5672
+MQ_USERNAME="guest"
+MQ_PASSWORD="guest"
+
+
+
 

+ 30 - 16
app/Console/Commands/InitCs6sentence.php

@@ -7,6 +7,8 @@ use App\Models\PaliSentence;
 use App\Models\WbwTemplate;
 use App\Models\Sentence;
 use Illuminate\Support\Str;
+use App\Http\Api\ChannelApi;
+
 
 class InitCs6sentence extends Command
 {
@@ -42,6 +44,11 @@ class InitCs6sentence extends Command
     public function handle()
     {
 		$start = time();
+        $channelId = ChannelApi::getSysChannel('_System_Pali_VRI_');
+        if($channelId === false){
+            $this->error('no channel');
+            return 1;
+        }
 		$pali = new PaliSentence;
 		if(!empty($this->argument('book'))){
 			$pali = $pali->where('book',$this->argument('book'));
@@ -64,19 +71,21 @@ class InitCs6sentence extends Command
 			$boldCount = 0;
 			foreach ($words as $word) {
 				# code...
-				if($word->style != "note" && $word->type != '.ctl.'){
+				//if($word->style != "note" && $word->type != '.ctl.')
+				if( $word->type != '.ctl.')
+                {
 					if($word->style=='bld'){
 						if(!$boldStart){
 							#黑体字开始
 							$boldStart = true;
-							$sent .= ' **';
+							$sent .= ' <b>';
 						}
 					}else{
 						if($boldStart){
 							#黑体字结束
 							$boldStart = false;
 							$boldCount = 0;
-							$sent .= '**';
+							$sent .= '</b>';
 						}
 					}
 					if($boldStart){
@@ -86,10 +95,11 @@ class InitCs6sentence extends Command
 						#如果不是标点符号,在词的前面加空格 。第一个黑体字前不加空格
 						$sent .= " ";
 					}
-					
+
 					if(strpos($word->word,'{') >=0 ){
-						$paliWord = \str_replace("{","",$word->word) ;
-						$paliWord = \str_replace("}","**",$paliWord) ;
+                        //一个单词里面含有黑体字的
+						$paliWord = \str_replace("{","<b>",$word->word) ;
+						$paliWord = \str_replace("}","</b>",$paliWord) ;
 					}else{
 						$paliWord = $word->word;
 					}
@@ -102,33 +112,37 @@ class InitCs6sentence extends Command
 				$sent .= '** ';
 			}
 			#将wikipali风格的引用 改为缅文风格
+            /*
 			$sent = \str_replace('n’’’ ti','’’’nti',$sent);
 			$sent = \str_replace('n’’ ti','’’nti',$sent);
 			$sent = \str_replace('n’ ti','’nti',$sent);
 			$sent = \str_replace('**ti**','**ti',$sent);
 			$sent = \str_replace('‘ ','‘',$sent);
-			$sent = trim($sent);			
+            */
+			$sent = trim($sent);
 			$snowId = app('snowflake')->id();
-			$newRow = Sentence::updateOrCreate(
+			$newRow = Sentence::firstOrNew(
 				[
 					"book_id" => $value->book,
 					"paragraph" => $value->paragraph,
 					"word_start" => $value->word_begin,
 					"word_end" => $value->word_end,
-					"channel_uid" => config("app.admin.cs6_channel"),
+					"channel_uid" => $channelId,
 				],
 				[
 					'id' =>$snowId,
 					'uid' =>Str::uuid(),
-					'editor_uid'=>config("app.admin.root_uuid"),
-					'content'=>trim($sent),
-					'strlen'=>mb_strlen($sent,"UTF-8"),
-					'status' => 30,
-					'create_time'=>time()*1000,
-					'modify_time'=>time()*1000,
-					'language'=>'en'
 				]
 				);
+            $newRow->editor_uid = config("app.admin.root_uuid");
+            $newRow->content = trim($sent);
+            $newRow->strlen = mb_strlen($sent,"UTF-8");
+            $newRow->status = 30;
+            $newRow->create_time = time()*1000;
+            $newRow->modify_time = time()*1000;
+            $newRow->language = 'en';
+            $newRow->save();
+
 			$bar->advance();
 		}
 		$bar->finish();

+ 75 - 0
app/Console/Commands/InitSystemChannel.php

@@ -0,0 +1,75 @@
+<?php
+
+namespace App\Console\Commands;
+
+use App\Models\Channel;
+use Illuminate\Console\Command;
+
+class InitSystemChannel extends Command
+{
+    /**
+     * The name and signature of the console command.
+     *
+     * @var string
+     */
+    protected $signature = 'init:system.channel';
+
+    /**
+     * The console command description.
+     *
+     * @var string
+     */
+    protected $description = 'create system channel. like pali text , wbw template ect.';
+
+    protected $channels =[
+        [
+            "name"=>'_System_Pali_VRI_',
+            'type'=>'original',
+            'lang'=>'pali',
+        ],
+        [
+            "name"=>'_System_Wbw_VRI_',
+            'type'=>'original',
+            'lang'=>'pali',
+        ],
+    ];
+
+    /**
+     * Create a new command instance.
+     *
+     * @return void
+     */
+    public function __construct()
+    {
+        parent::__construct();
+    }
+
+    /**
+     * Execute the console command.
+     *
+     * @return int
+     */
+    public function handle()
+    {
+        $this->info("start");
+        foreach ($this->channels as $key => $value) {
+            # code...
+            $channel = Channel::firstOrNew([
+                'name' => $value['name'],
+                'owner_uid' => config("app.admin.root_uuid"),
+            ]);
+            if(empty($channel->id)){
+                $channel->id = app('snowflake')->id();
+            }
+            $channel->type = $value['type'];
+            $channel->lang = $value['lang'];
+            $channel->editor_id = 0;
+            $channel->owner_uid = config("app.admin.root_uuid");
+            $channel->create_time = time()*1000;
+            $channel->modify_time = time()*1000;
+            $channel->save();
+            $this->info("created". $value['name']);
+        }
+        return 0;
+    }
+}

+ 62 - 0
app/Console/Commands/TestCaseMan.php

@@ -0,0 +1,62 @@
+<?php
+
+namespace App\Console\Commands;
+
+use Illuminate\Console\Command;
+use App\Tools\CaseMan;
+use App\Models\UserDict;
+
+
+class TestCaseMan extends Command
+{
+    /**
+     * The name and signature of the console command.
+     *
+     * @var string
+     */
+    protected $signature = 'test:case {word}';
+
+    /**
+     * The console command description.
+     *
+     * @var string
+     */
+    protected $description = 'Command description';
+
+    /**
+     * Create a new command instance.
+     *
+     * @return void
+     */
+    public function __construct()
+    {
+        parent::__construct();
+    }
+
+    /**
+     * Execute the console command.
+     *
+     * @return int
+     */
+    public function handle()
+    {
+		$caseman = new CaseMan();
+		$parents = $caseman->WordToBase($this->argument('word'),1);
+			# code...
+			
+		foreach ($parents as $base => $rows) {
+			# code...
+			if(count($rows)==0){
+				$this->error("base={$base}-(".count($rows).")");
+			}else{
+				$this->warn("base={$base}-(".count($rows).")");
+			}
+			
+			foreach ($rows as $value) {
+				# code...
+				$this->info($value['word'].'-'.$value['type'].'-'.$value['grammar'].'-'.$base);
+			}
+		}
+        return 0;
+    }
+}

+ 53 - 0
app/Console/Commands/TestMdRender.php

@@ -0,0 +1,53 @@
+<?php
+
+namespace App\Console\Commands;
+
+use Illuminate\Console\Command;
+use App\Http\Api\MdRender;
+
+class TestMdRender extends Command
+{
+    /**
+     * The name and signature of the console command.
+     *
+     * @var string
+     */
+    protected $signature = 'test:md.render';
+
+    /**
+     * The console command description.
+     *
+     * @var string
+     */
+    protected $description = 'Command description';
+
+    /**
+     * Create a new command instance.
+     *
+     * @return void
+     */
+    public function __construct()
+    {
+        parent::__construct();
+    }
+
+    /**
+     * Execute the console command.
+     *
+     * @return int
+     */
+    public function handle()
+    {
+        $markdown = "# heading [[isipatana]] \n\n";
+        $markdown .= "[[isipatana]] `bla` [[dhammacakka]]\n\n";
+        $markdown .= "```haha\n";
+        $markdown .= "content **content**\n";
+        $markdown .= "content **content**\n";
+        $markdown .= "```\n\n";
+        $markdown .= "{{168-916-10-37}}";
+        $markdown .= "{{exercise|1|((168-916-10-37))}}";
+
+        echo MdRender::render($markdown,'00ae2c48-c204-4082-ae79-79ba2740d506');
+        return 0;
+    }
+}

+ 11 - 3
app/Console/Commands/TestMq.php

@@ -40,16 +40,24 @@ class TestMq extends Command
      */
     public function handle()
     {
-		$connection = new AMQPStreamConnection('localhost', 5672, 'guest', 'guest');
+        //一对一
+		$connection = new AMQPStreamConnection(MQ_HOST, MQ_PORT, MQ_USERNAME, MQ_PASSWORD);
 		$channel = $connection->channel();
-		$channel->queue_declare('hello', false, false, false, false);
+		$channel->queue_declare('hello', false, true, false, false);
 
 		$msg = new AMQPMessage('Hello World!');
 		$channel->basic_publish($msg, '', 'hello');
-		
+
 		echo " [x] Sent 'Hello World!'\n";
 		$channel->close();
 		$connection->close();
+
+        //一对多
+        $connection = new AMQPStreamConnection(MQ_HOST, MQ_PORT, MQ_USERNAME, MQ_PASSWORD);
+        $channel->exchange_declare('hello_exchange','fanout',false,true);
+        $channel->queue_declare('hello', false, true, false, false);
+        $channel->exchange_bind('hello','exchange',"");
+
         return 0;
     }
 }

+ 4 - 4
app/Console/Commands/TestMqWorker.php

@@ -39,19 +39,19 @@ class TestMqWorker extends Command
      */
     public function handle()
     {
-		$connection = new AMQPStreamConnection('localhost', 5672, 'guest', 'guest');
+		$connection = new AMQPStreamConnection(MQ_HOST, MQ_PORT, MQ_USERNAME, MQ_PASSWORD);
 		$channel = $connection->channel();
 
-		$channel->queue_declare('hello', false, false, false, false);
+		$channel->queue_declare('hello', false, true, false, false);
 
 		echo " [*] Waiting for messages. To exit press CTRL+C\n";
 
 		$callback = function ($msg) {
 			echo ' [x] Received ', $msg->body, "\n";
 		  };
-		  
+
 		$channel->basic_consume('hello', '', false, true, false, false, $callback);
-		  
+
 		while ($channel->is_open()) {
 			  $channel->wait();
 		  }

+ 148 - 0
app/Console/Commands/UpgradeCompound.php

@@ -0,0 +1,148 @@
+<?php
+namespace App\Console\Commands;
+
+use Illuminate\Console\Command;
+use Illuminate\Support\Facades\Storage;
+use App\Models\WordIndex;
+use App\Models\WbwTemplate;
+use App\Models\UserDict;
+use App\Tools\TurboSplit;
+
+class UpgradeCompound extends Command
+{
+    /**
+     * The name and signature of the console command.
+     *
+     * @var string
+     */
+    protected $signature = 'upgrade:compound {word?} {--test}';
+
+    /**
+     * The console command description.
+     *
+     * @var string
+     */
+    protected $description = 'Command description';
+
+	protected $dict_id = 'c42980f0-5967-4833-b695-84183344f68f';
+
+
+    /**
+     * Create a new command instance.
+     *
+     * @return void
+     */
+    public function __construct()
+    {
+        parent::__construct();
+    }
+
+    /**
+     * Execute the console command.
+     *
+     * @return int
+     */
+    public function handle()
+    {
+		
+		$start = \microtime(true);
+
+		$_word = $this->argument('word');
+		if(!empty($_word)){
+			$ts = new TurboSplit();
+			$results = $ts->splitA($_word);
+			Storage::disk('local')->put("tmp/compound1.csv", "word,type,grammar,parent,factors");
+			foreach ($results as $key => $value) {
+				# code...
+				Storage::disk('local')->append("tmp/compound1.csv", "{$value['word']},{$value['type']},{$value['grammar']},{$value['parent']},{$value['factors']}");
+			}
+			return 0;
+		}
+
+		//
+		if($this->option('test')){
+			//调试代码
+			Storage::disk('local')->put("tmp/compound.md", "# Turbo Split");
+			//获取需要拆的词
+			$list = [
+				[5,20,20],
+				[21,30,20],
+				[31,40,10],
+				[41,60,10],
+			];
+			foreach ($list as $take) {
+				# code...
+				$words = WordIndex::where('final',0)->whereBetween('len',[$take[0],$take[1]])->select('word')->take($take[2])->get();
+				foreach ($words as $word) {
+					$this->info($word->word);
+					Storage::disk('local')->append("tmp/compound.md", "## {$word->word}");
+					$parts = $ts->splitA($word->word);
+					foreach ($parts as $part) {
+						# code...
+						$this->info("{$part['word']},{$part['factors']},{$part['confidence']}");
+						Storage::disk('local')->append("tmp/compound.md", "- `{$part['word']}`,{$part['factors']},{$part['confidence']}");
+					}
+				}
+			}		
+			$this->info("耗时:".\microtime(true)-$start);		
+			return 0;	
+		}
+
+		//$words = WordIndex::where('final',0)->select('word')->orderBy('count','desc')->skip(72300)->cursor();
+		$words = WbwTemplate::select('real')
+						->where('book',118)
+						->whereBetween('paragraph',[1329,1367])
+						->where('type','<>','.ctl.')
+						->where('real','<>','')
+						->groupBy('real')->cursor();
+		$count = 0;
+		foreach ($words as $key => $word) {
+			//先看目前字典里有没有
+			$isExists = UserDict::where('word',$word->real)
+								->where('dict_id',"<>",'8359757e-9575-455b-a772-cc6f036caea0')
+								->exists();
+
+			if($isExists){
+				$this->info("found:{$word->real}");
+				continue;
+			}
+			# code...
+			$count++;
+			$this->info("{$count}:{$word->real}"); 
+			$ts = new TurboSplit();
+			$parts = $ts->splitA($word->real);
+			foreach ($parts as $part) {
+				$new = UserDict::firstOrNew(
+					[
+						'word' => $part['word'],
+						'factors' => $part['factors'],
+						'dict_id' => $this->dict_id,
+					],
+					[
+						'id' => app('snowflake')->id(),
+						'source' => '_ROBOT_',
+						'create_time'=>(int)(microtime(true)*1000),
+					]
+				);
+				if(isset($part['type'])){
+					$new->type = $part['type'];
+				}else{
+					$new->type = ".cp.";
+				}
+				if(isset($part['grammar'])) $new->parent = $part['grammar'];
+				if(isset($part['parent'])) $new->parent = $part['parent'];
+				$new->confidence = 50*$part['confidence'];
+				$new->note = $part['confidence'];
+				$new->language = 'cm';
+				$new->creator_id = 1;
+				$new->flag = 1;
+				$new->save();
+			}
+		}
+		//删除旧数据
+		UserDict::where('dict_id',$this->dict_id)->where('flag',0)->delete();
+		UserDict::where('dict_id',$this->dict_id)->where('flag',1)->update(['flag'=>0]);
+	
+        return 0;
+    }
+}

+ 213 - 0
app/Console/Commands/UpgradeDict.php

@@ -0,0 +1,213 @@
+<?php
+
+namespace App\Console\Commands;
+
+use Illuminate\Support\Str;
+use Illuminate\Console\Command;
+use Illuminate\Support\Facades\Cache;
+use Illuminate\Support\Facades\Storage;
+
+use App\Models\UserDict;
+use App\Models\DictInfo;
+
+class UpgradeDict extends Command
+{
+    /**
+     * The name and signature of the console command.
+     *
+     * @var string
+     */
+    protected $signature = 'upgrade:dict {uuid?} {--part}';
+
+    /**
+     * The console command description.
+     *
+     * @var string
+     */
+    protected $description = '导入csv字典';
+
+	protected $dictInfo;
+	protected $cols;
+
+    /**
+     * Create a new command instance.
+     *
+     * @return void
+     */
+    public function __construct()
+    {
+        parent::__construct();
+    }
+
+	private function scandict($dir){
+		if(is_dir($dir)){
+			$this->info("scan:".$dir);
+			if($files = scandir($dir)){
+				//进入目录搜索字典或子目录
+				foreach ($files as $file) {
+					//进入语言目录循环搜索
+					$fullPath = $dir."/".$file;
+					if(is_dir($fullPath) && $file !== '.' && $file !== '..'){
+						//是目录继续搜索
+						$this->scandict($fullPath);
+					}else{
+						//是文件,查看是否是字典信息文件
+						$infoFile = $fullPath;
+						if(pathinfo($infoFile,PATHINFO_EXTENSION) === 'ini'){
+							$this->dictInfo = parse_ini_file($infoFile,true);
+							if(isset($this->dictInfo['meta']['dictname'])){
+								//是字典信息文件
+								$this->info($this->dictInfo['meta']['dictname']);
+								if(Str::isUuid($this->argument('uuid'))){
+									if($this->argument('uuid') !== $this->dictInfo['meta']['uuid']){
+										continue;
+									}
+								}
+								if(!Str::isUuid($this->dictInfo['meta']['uuid'])){
+									$this->error("not uuid");
+									continue;
+								}
+								$tableDict = DictInfo::firstOrNew([
+									"id" => $this->dictInfo['meta']['uuid']
+								]);
+								$tableDict->id = $this->dictInfo['meta']['uuid'];
+								$tableDict->name = $this->dictInfo['meta']['dictname'];
+								$tableDict->shortname = $this->dictInfo['meta']['shortname'];
+								$tableDict->description = $this->dictInfo['meta']['description'];
+								$tableDict->src_lang = $this->dictInfo['meta']['src_lang'];
+								$tableDict->dest_lang = $this->dictInfo['meta']['dest_lang'];
+								$tableDict->rows = $this->dictInfo['meta']['rows'];
+								$tableDict->owner_id = config("app.admin.root_uuid");
+								$tableDict->meta = json_encode($this->dictInfo['meta']);
+								$tableDict->save();
+
+								if($this->option('part')){
+									$this->info(" dict id = ".$this->dictInfo['meta']['uuid']);
+								}else{
+									$del = UserDict::where("dict_id",$this->dictInfo['meta']['uuid'])->delete();
+									$this->info("delete {$del} rows dict id = ".$this->dictInfo['meta']['uuid']);
+								}
+
+								$filename = $dir.'/'.pathinfo($infoFile,PATHINFO_FILENAME);
+								$csvFile = $filename . ".csv";
+								$count = 0;
+								$bar = $this->output->createProgressBar($this->dictInfo['meta']['rows']);
+								while (file_exists($csvFile)) {
+									# code...
+									$this->info("runing:{$csvFile}");
+									$inputRow = 0;
+									if (($fp = fopen($csvFile, "r")) !== false) {
+										$this->cols = array();
+										while (($data = fgetcsv($fp, 0, ',')) !== false) {
+											if ($inputRow == 0) {
+												foreach ($data as $key => $colname) {
+													# 列名列表
+													$this->cols[$colname] = $key;
+												}
+											}else{
+												if($this->option('part')){
+													//仅仅提取拆分零件
+													$word = $this->get($data,'word');
+													$factor1 = $this->get($data,'factors');
+													$factor1 = \str_replace([' ','(',')','=','-','$'],"+",$factor1);
+													foreach (\explode('+',$factor1)  as $part) {
+														# code...
+														if(empty($part)){
+															continue;
+														}
+														if(isset($newPart[$part])){
+															$newPart[$part][0]++;
+														}else{
+															$partExists = Cache::remember('dict/part/'.$part,1000,function() use($part){
+																return UserDict::where('word',$part)->exists();
+															});
+															if(!$partExists){
+															$count++;
+															$newPart[$part] = [1,$word];
+															$this->info("{$count}:{$part}-{$word}");
+															}
+														}
+
+													}
+												}else{
+													$newDict = new UserDict();
+													$newDict->id = app('snowflake')->id();
+													$newDict->word = $data[$this->cols['word']];
+													$newDict->type = $this->get($data,'type');
+													$newDict->grammar = $this->get($data,'grammar');
+													$newDict->parent = $this->get($data,'parent');
+													$newDict->mean = $this->get($data,'mean');
+													$newDict->note = $this->get($data,'note');
+													$newDict->factors = $this->get($data,'factors');
+													$newDict->factormean = $this->get($data,'factormean');
+													$newDict->status = $this->get($data,'status');
+													$newDict->language = $this->get($data,'language');
+													$newDict->confidence = $this->get($data,'confidence');
+													$newDict->source = $this->get($data,'source');
+													$newDict->create_time =(int)(microtime(true)*1000);
+													$newDict->creator_id = 1;
+													$newDict->dict_id = $this->dictInfo['meta']['uuid'];
+													$newDict->save();
+												}
+
+												$bar->advance();
+											}
+											$inputRow++;
+										}
+									}
+									$count++;
+									$csvFile = $filename . "{$count}.csv";
+								}
+								$bar->finish();
+								Storage::disk('local')->put("tmp/pm-part.csv", "part,count,word");
+                                if(isset($newPart)){
+                                    foreach ($newPart as $part => $info) {
+                                        # 写入磁盘文件
+                                        Storage::disk('local')->append("tmp/pm-part.csv", "{$part},{$info[0]},{$info[1]}");
+                                    }
+                                }
+								$this->info("done");
+							}
+
+						}
+					}
+				}
+				//子目录搜素完毕
+				return;
+			}else{
+				//获取子目录失败
+				$this->error("scandir fail");
+				return;
+			}
+		}else{
+			$this->error("this is not dir input={$dir}");
+			return;
+		}
+	}
+
+	/**
+	 * 获取列的值
+	 */
+	protected function get($data,$colname,$defualt=""){
+		if(isset($this->cols[$colname])){
+			return $data[$this->cols[$colname]];
+		}else if(isset($this->dictInfo['cols'][$colname])){
+			return $this->dictInfo['cols'][$colname];
+		}else{
+			return $defualt;
+		}
+	}
+    /**
+     * Execute the console command.
+     *
+     * @return int
+     */
+    public function handle()
+    {
+		$this->info("upgrade dict start");
+		$this->scandict(config("app.path.dict_text"));
+		$this->info("upgrade dict done");
+
+        return 0;
+    }
+}

+ 119 - 0
app/Console/Commands/UpgradeDictSysWbwExtract.php

@@ -0,0 +1,119 @@
+<?php
+
+namespace App\Console\Commands;
+
+use Illuminate\Console\Command;
+use App\Models\UserDict;
+
+class UpgradeDictSysWbwExtract extends Command
+{
+    /**
+     * The name and signature of the console command.
+     *
+     * @var string
+     */
+    protected $signature = 'upgrade:syswbwextract';
+
+    /**
+     * The console command description.
+     *
+     * @var string
+     */
+    protected $description = '从社区词典中提取最优结果';
+
+    /**
+     * Create a new command instance.
+     *
+     * @return void
+     */
+    public function __construct()
+    {
+        parent::__construct();
+    }
+
+    /**
+     * Execute the console command.
+     *
+     * @return int
+     */
+    public function handle()
+    {
+		$dict  = UserDict::select('word')->where('word','!=','')->where('dict_id','ef620a93-a55d-4756-89c5-e188ab009e45')->groupBy('word');
+		$bar = $this->output->createProgressBar($dict->count());
+		foreach ($dict->cursor() as  $word) {
+			# code...
+			//case
+			$wordtype = '';
+			$wordgrammar = '';
+			$wordparent = '';
+			$wordfactors = '';
+
+			$case = UserDict::selectRaw('type,grammar, sum(confidence)')
+					->where('word',$word->word)
+					->where('dict_id','ef620a93-a55d-4756-89c5-e188ab009e45')
+					->where('type','!=','.part.')
+					->where('type','<>','')
+					->whereNotNull('type')
+					->groupBy(['type','grammar'])
+					->orderBy('sum','desc')
+					->first();
+			if($case){
+				$wordtype = $case->type;
+				$wordgrammar = $case->grammar;			
+			}
+
+			//parent
+			$parent = UserDict::selectRaw('parent, sum(confidence)')
+					->where('word',$word->word)
+					->where('dict_id','ef620a93-a55d-4756-89c5-e188ab009e45')
+					->where('type','!=','.part.')
+					->where('parent','!=','')
+					->whereNotNull('parent')
+					->groupBy('parent')
+					->orderBy('sum','desc')
+					->first();
+			if($parent){
+				$wordparent = $parent->parent;			
+			}
+
+
+				//factors
+				$factor = UserDict::selectRaw('factors, sum(confidence)')
+						->where('word',$word->word)
+						->where('dict_id','ef620a93-a55d-4756-89c5-e188ab009e45')
+						->where('type','!=','.part.')
+						->where('factors','<>','')
+						->whereNotNull('factors')
+						->groupBy('factors')
+						->orderBy('sum','desc')
+						->first();
+				if($factor){
+					$wordfactors = $factor->factors;
+				}
+				$new = UserDict::firstOrNew(
+					[
+						'word' => $word->word,
+						'type' => $wordtype,
+						'grammar' => $wordgrammar,
+						'parent' => $wordparent,
+						'factors' => $wordfactors,
+						'dict_id' => '85dcc61c-c9e1-4ae0-9b44-cd6d9d9f0d01', 
+					],
+					[
+						'id' => app('snowflake')->id(),
+						'source' => '_ROBOT_',
+						'create_time'=>(int)(microtime(true)*1000)
+					]
+				);
+				$new->confidence = 90;
+				$new->language = 'cm';
+				$new->creator_id = 1;
+				$new->flag = 1;
+				$new->save();
+
+				$bar->advance();
+		}
+		$bar->finish();
+        return 0;
+    }
+}

+ 217 - 0
app/Console/Commands/UpgradeRegular.php

@@ -0,0 +1,217 @@
+<?php
+
+namespace App\Console\Commands;
+
+use App\Models\UserDict;
+use App\Models\WbwTemplate;
+use Illuminate\Console\Command;
+use Illuminate\Support\Facades\Cache;
+use Illuminate\Support\Facades\Log;
+use Illuminate\Support\Facades\DB;
+
+class UpgradeRegular extends Command
+{
+    /**
+     * The name and signature of the console command.
+     *
+     * @var string
+     */
+    protected $signature = 'upgrade:regular {word?} {--debug}';
+
+    /**
+     * The console command description.
+     *
+     * @var string
+     */
+    protected $description = 'Command description';
+	protected $dict_id = '57afac99-0887-455c-b18e-67c8682158b0';
+    /**
+     * Create a new command instance.
+     *
+     * @return void
+     */
+    public function __construct()
+    {
+        parent::__construct();
+    }
+
+    /**
+     * Execute the console command.
+     *
+     * @return int
+     */
+    public function handle()
+    {
+		$nounEnding = array();
+		$rowCount=0;
+		if(($handle=fopen(public_path('app/public/ending/noun.csv'),'r'))!==FALSE){
+			while(($data=fgetcsv($handle,0,','))!==FALSE){
+				$rowCount++;
+				if($rowCount==1) continue;//忽略首行
+				array_push($nounEnding,$data);
+			}
+		}
+		fclose($handle);
+
+		$adjEnding = array();
+		$rowCount=0;
+		if(($handle=fopen(public_path('app/public/ending/adj.csv'),'r'))!==FALSE){
+			while(($data=fgetcsv($handle,0,','))!==FALSE){
+				$rowCount++;
+				if($rowCount==1) continue;//忽略首行
+				array_push($adjEnding,$data);
+			}
+		}
+		fclose($handle);
+
+		$verbEnding = array();
+		$rowCount=0;
+		if(($handle=fopen(public_path('app/public/ending/verb.csv'),'r'))!==FALSE){
+			while(($data=fgetcsv($handle,0,','))!==FALSE){
+				$rowCount++;
+				if($rowCount==1) continue;//忽略首行
+				array_push($verbEnding,$data);
+			}
+		}
+		fclose($handle);
+
+		if(empty($this->argument('word'))){
+			$words = UserDict::where('type','.n:base.')
+							->orWhere('type','.v:base.')
+							->orWhere('type','.adj:base.')
+							->orWhere('type','.ti:base.');	
+		}else{
+			$words = UserDict::where('word',$this->argument('word'))
+							->where(function($query) {
+								$query->where('type','.n:base.')
+								->orWhere('type','.v:base.')
+								->orWhere('type','.adj:base.')
+								->orWhere('type','.ti:base.');
+							});		
+		}
+		$words = $words->select(['word','type','grammar'])
+						->groupBy(['word','type','grammar'])
+						->orderBy('word');
+		$query = "
+		select count(*) from (select count(*) from user_dicts ud where 
+			\"type\" = '.v:base.' or 
+			\"type\" = '.n:base.' or 
+			\"type\" = '.ti:base.' or 
+			\"type\" = '.adj:base.'
+			group by word,type,grammar) as t;
+		";
+		$count = DB::select($query);
+		$bar = $this->output->createProgressBar($count[0]->count);
+
+/*
+		$words = UserDict::where('word','ābandhattalakkhaṇa')
+				->select(['word','type','grammar'])
+				->groupBy(['word','type','grammar']);
+		$bar = $this->output->createProgressBar(1);
+*/
+		foreach ($words->cursor() as $word) {
+			# code...
+			switch($word->type){
+				case ".v:base.":
+					$casetable=$verbEnding;
+					break;
+				case ".n:base.":
+					$casetable = $nounEnding;
+						break;
+				case ".ti:base.":
+				case ".adj:base.":
+					$casetable = $adjEnding;
+					break;
+				case "":
+					$casetable=false;
+					break;
+				default:
+					$casetable=false;
+					break;
+			}
+			if($casetable === false){
+				continue;
+			}
+			if($this->option('debug'))  $this->info("{$word->word}:{$word->type}");
+			foreach($casetable as $thiscase){
+				if($word->type==".v:base."){
+					$endLen = (int)$thiscase[0];
+					$head = mb_substr($word->word,0,(0-$endLen),"UTF-8");//原词剩余的部分
+					$newEnding = $thiscase[1];
+					$newGrammar = $thiscase[2];
+					$newword=$head.$thiscase[1];
+					//动词不做符合规则判定
+					$isMatch = true;
+				}else{
+					$endLen = (int)$thiscase[5];
+					$end = mb_substr($word->word,0-$endLen,NULL,"UTF-8");//原词被切下来的部分
+					$head = mb_substr($word->word,0,(0-$endLen),"UTF-8");//原词剩余的部分
+					$newEnding = $thiscase[3];
+					$newGrammar = $thiscase[4];
+					$newword=$head.$thiscase[2];					
+					if($word->type==".n:base."){
+						//名词
+						if($thiscase[0]==$word->grammar  && $thiscase[1]==$end){
+							//符合规则判定成功
+							$isMatch = true;
+						}else{
+							$isMatch = false;
+						}						
+					}else{
+						//形容词
+						if($thiscase[1]==$end){
+							//符合规则判定成功
+							$isMatch = true;
+						}else{
+							$isMatch = false;
+						}							
+					}
+
+				}
+
+				if($isMatch){
+					if($this->option('debug'))  $this->error($newword.':match');
+					//查询这个词是否在三藏存在
+					$exist = Cache::remember('palicanon/word/exists/'.$newword, 100 , function() use($newword) {
+						return WbwTemplate::where('real',$newword)->exists();
+					});
+					if($exist){
+						if($this->option('debug'))  $this->info('exist');
+						$new = UserDict::firstOrNew(
+							[
+								'word' => $newword,
+								'type' => \str_replace(':base','',$word->type),
+								'grammar' => $newGrammar,
+								'parent' => $word->word,
+								'factors' => "{$word->word}+[{$newEnding}]",
+								'dict_id' => $this->dict_id, 
+							],
+							[
+								'id' => app('snowflake')->id(),
+								'source' => '_ROBOT_',
+								'create_time'=>(int)(microtime(true)*1000)
+							]
+						);
+						$new->confidence = 80;
+						$new->language = 'cm';
+						$new->creator_id = 1;
+						$new->flag = 1;
+						$new->save();
+					}else{
+						if($this->option('debug'))  $this->info('not exist');
+					}
+				}
+			}
+			$bar->advance();
+		}
+		$bar->finish();
+		//删除旧数据
+		$delOld = UserDict::where('dict_id',$this->dict_id);
+		if(!empty($this->argument('word'))){
+			$delOld = $delOld->where('word',$this->argument('word'));
+		}
+		$delOld->where('flag',0)->delete();
+		$delOld->where('flag',1)->update(['flag'=>0]);
+        return 0;
+    }
+}

+ 54 - 0
app/Console/Commands/UpgradeVocabulary.php

@@ -0,0 +1,54 @@
+<?php
+
+namespace App\Console\Commands;
+
+use Illuminate\Console\Command;
+use App\Models\WordIndex;
+use App\Models\UserDict;
+
+
+class UpgradeVocabulary extends Command
+{
+    /**
+     * The name and signature of the console command.
+     *
+     * @var string
+     */
+    protected $signature = 'upgrade:vocabulary';
+
+    /**
+     * The console command description.
+     *
+     * @var string
+     */
+    protected $description = '刷新词汇表完成情况';
+
+    /**
+     * Create a new command instance.
+     *
+     * @return void
+     */
+    public function __construct()
+    {
+        parent::__construct();
+    }
+
+    /**
+     * Execute the console command.
+     *
+     * @return int
+     */
+    public function handle()
+    {
+		$words = UserDict::select('word')->groupBy('word')->cursor();
+		$count=0;
+		foreach ($words as $word) {
+			$update = WordIndex::where('word',$word->word)->update(['final'=>1]);
+			if($update==1){
+				$this->info("{$count}. {$word->word}");
+				$count++;
+			}
+		}
+        return 0;
+    }
+}

+ 119 - 0
app/Console/Commands/UpgradeWbwTemplate.php

@@ -0,0 +1,119 @@
+<?php
+
+namespace App\Console\Commands;
+
+use Illuminate\Console\Command;
+use App\Models\PaliSentence;
+use App\Models\WbwTemplate;
+use App\Models\Sentence;
+use App\Http\Api\ChannelApi;
+use Illuminate\Support\Str;
+
+class UpgradeWbwTemplate extends Command
+{
+    /**
+     * The name and signature of the console command.
+     *
+     * @var string
+     */
+    protected $signature = 'upgrade:wbw.template {book?} {para?}';
+
+    /**
+     * The console command description.
+     *
+     * @var string
+     */
+    protected $description = 'upgrade wbw template by sentence';
+
+    /**
+     * Create a new command instance.
+     *
+     * @return void
+     */
+    public function __construct()
+    {
+        parent::__construct();
+    }
+
+    /**
+     * Execute the console command.
+     *
+     * @return int
+     */
+    public function handle()
+    {
+        $start = time();
+		$pali = new PaliSentence;
+		if(!empty($this->argument('book'))){
+			$pali = $pali->where('book',$this->argument('book'));
+		}
+		if(!empty($this->argument('para'))){
+			$pali = $pali->where('paragraph',$this->argument('para'));
+		}
+		$bar = $this->output->createProgressBar($pali->count());
+        $channelId = ChannelApi::getSysChannel('_System_Wbw_VRI_');
+        if($channelId===false){
+            $this->error('no channel');
+            return 1;
+        }
+		$pali = $pali->select('book','paragraph','word_begin','word_end')->cursor();
+		foreach ($pali as $value) {
+			# code...
+            $wbwContent=[];
+			$words = WbwTemplate::where("book",$value->book)
+								->where("paragraph",$value->paragraph)
+								->where("wid",">=",$value->word_begin)
+								->where("wid","<=",$value->word_end)
+								->orderBy('wid','asc')
+								->get();
+			$sent = '';
+			foreach ($words as $wbw_word) {
+                # code...
+                $type = $wbw_word->type=='?'? '':$wbw_word->type;
+                $grammar = $wbw_word->gramma=='?'? '':$wbw_word->gramma;
+                $part = $wbw_word->part=='?'? '':$wbw_word->part;
+                $wbwContent[] = [
+                    'word'=>['value'=>$wbw_word->word,'status'=>0],
+                    'real'=> ['value'=>$wbw_word->word,'status'=>0],
+                    'meaning'=> ['value'=>[],'status'=>0],
+                    'type'=> ['value'=>$type,'status'=>0],
+                    'grammar'=> ['value'=>$grammar,'status'=>0],
+                    'case'=> ['value'=>[],'status'=>0],
+                    'style'=> ['value'=>$wbw_word->style,'status'=>0],
+                    'factors'=> ['value'=>$part,'status'=>0],
+                    'factorMeaning'=> ['value'=>'','status'=>0],
+                    'confidence'=> 0.5
+                ];
+
+            }
+            $sent = \json_encode($wbwContent);
+
+			$newRow = Sentence::firstOrNew(
+				[
+					"book_id" => $value->book,
+					"paragraph" => $value->paragraph,
+					"word_start" => $value->word_begin,
+					"word_end" => $value->word_end,
+					"channel_uid" => $channelId,
+				],
+				[
+					'id' =>app('snowflake')->id(),
+					'uid' =>Str::uuid(),
+				]
+				);
+            $newRow->editor_uid = config("app.admin.root_uuid");
+            $newRow->content = trim($sent);
+            $newRow->strlen = mb_strlen($sent,"UTF-8");
+            $newRow->status = 30;
+            $newRow->create_time = time()*1000;
+            $newRow->modify_time = time()*1000;
+            $newRow->language = 'en';
+            $newRow->save();
+
+			$bar->advance();
+		}
+		$bar->finish();
+		$this->info("finished ".(time()-$start)."s");
+        return 0;
+    }
+}

+ 57 - 0
app/Console/Commands/UpgradeWordPart.php

@@ -0,0 +1,57 @@
+<?php
+
+namespace App\Console\Commands;
+
+use App\Models\WordPart;
+use Illuminate\Console\Command;
+use Illuminate\Support\Facades\Log;
+
+class UpgradeWordPart extends Command
+{
+    /**
+     * The name and signature of the console command.
+     *
+     * @var string
+     */
+    protected $signature = 'upgrade:wordpart';
+
+    /**
+     * The console command description.
+     *
+     * @var string
+     */
+    protected $description = 'Command description';
+
+    /**
+     * Create a new command instance.
+     *
+     * @return void
+     */
+    public function __construct()
+    {
+        parent::__construct();
+    }
+
+    /**
+     * Execute the console command.
+     *
+     * @return int
+     */
+    public function handle()
+    {
+		#载入csv数据
+		$csvFile = config("app.path.dict_text") .'/system/part.csv';
+		if (($fp = fopen($csvFile, "r")) !== false) {
+			Log::info("csv load:" . $csvFile);
+			while (($data = fgetcsv($fp, 0, ',')) !== false) {
+				WordPart::updateOrCreate(['word' => $data[0],],['weight' => $data[1],]);
+			}
+			fclose($fp);
+		} else {
+			$this->error( "can not open csv file. filename=" . $csvFile. PHP_EOL) ;
+			Log::error( "can not open csv file. filename=" . $csvFile) ;
+		}
+		$this->info('ok');
+        return 0;
+    }
+}

+ 30 - 0
app/Console/Workers/Workers.php

@@ -0,0 +1,30 @@
+<?php
+namespace App\Console\Workers;
+class Workers{
+    protected $queue = 'hello';
+    /**
+     * Create a new command instance.
+     *
+     * @return void
+     */
+    public function __construct()
+    {
+        $connection = new AMQPStreamConnection(MQ_HOST, MQ_PORT, MQ_USERNAME, MQ_PASSWORD);
+		$channel = $connection->channel();
+
+		$channel->queue_declare($this->queue, false, true, false, false);
+
+		echo " [*] Waiting for messages. To exit press CTRL+C\n";
+
+		$channel->basic_consume($this->queue, '', false, true, false, false, $this->job);
+
+		while ($channel->is_open()) {
+			  $channel->wait();
+		  }
+        return 0;
+    }
+
+    public function job($msg){
+        echo ' [x] Received ', $msg->body, "\n";
+    }
+}

+ 32 - 0
app/Http/Api/AuthApi.php

@@ -0,0 +1,32 @@
+<?php
+namespace App\Http\Api;
+
+use Illuminate\Support\Facades\Log;
+use Illuminate\Http\Request;
+use Firebase\JWT\JWT;
+use Firebase\JWT\Key;
+
+class AuthApi{
+    public static function current(Request $request){
+        if($request->hasHeader('Authorization')){
+            $token = $request->header('Authorization');
+            Log::info('token:'.$token);
+            if(\substr($token,0,6) === 'Bearer'){
+                $token = trim(substr($token,6));
+                $jwt = JWT::decode($token,new Key(env('APP_KEY'),'HS512'));
+                if($jwt->exp < time()){
+                    return false;
+                }else{
+                    //有效的token
+                    return ['user_uid'=>$jwt->uid,'user_id'=>$jwt->id];
+                }
+            }else{
+                return false;
+            }
+        }else if(isset($_COOKIE['user_uid'])){
+            return ['user_uid'=>$_COOKIE['user_uid'],'user_id'=>$_COOKIE['user_id']];
+        }else{
+            return false;
+        }
+    }
+}

+ 32 - 0
app/Http/Api/ChannelApi.php

@@ -0,0 +1,32 @@
+<?php
+namespace App\Http\Api;
+use App\Models\Channel;
+
+class ChannelApi{
+    public static function getById($id){
+        $channel = Channel::where("uid",$id)->first();
+        if($channel){
+            return [
+                    'id'=>$id,
+                    'name'=>$channel['name'],
+                    'type'=>$channel['type'],
+                    'studio_id'=>$channel['owner_uid'],
+                ];
+        }else{
+            return false;
+        }
+    }
+    public static function getListByUser(){
+
+    }
+    public static function getSysChannel($channel_name){
+        $channel=  Channel::where('name',$channel_name)
+                    ->where('owner_uid',config("app.admin.root_uuid"))
+                    ->first();
+        if(!$channel){
+            return false;
+        }else{
+            return $channel->uid;
+        }
+    }
+}

+ 153 - 0
app/Http/Api/MdRender.php

@@ -0,0 +1,153 @@
+<?php
+namespace App\Http\Api;
+
+use Illuminate\Support\Str;
+use mustache\mustache;
+use App\Models\DhammaTerm;
+use App\Models\PaliText;
+use App\Http\Controllers\CorpusController;
+use Illuminate\Support\Facades\Cache;
+use Illuminate\Support\Facades\Log;
+
+class MdRender{
+    /**
+     *
+     */
+    public static function render($markdown,$channelId,$isArticle=false){
+
+        $html = Str::markdown($markdown);
+        #替换术语
+        $pattern = "/\[\[(.+?)\]\]/";
+        $replacement = '{{term|$1}}';
+        $html = preg_replace($pattern,$replacement,$html);
+
+        #替换句子
+        $pattern = "/\{\{([0-9].+?)\}\}/";
+        $replacement = '{{sent|$1}}';
+        $html = preg_replace($pattern,$replacement,$html);
+
+        #替换注释
+        #<code>bla</code>
+        #{{note:bla}}
+        #替换术语
+        $pattern = '/<code>(.+?)<\/code>/';
+        $replacement = '{{note|$1}}';
+        $html = preg_replace($pattern,$replacement,$html);
+
+        $pattern = "/\{\{(.+?)\}\}/";
+        $replacement = "\n{{#function}}\n$1\n{{/function}}\n";
+        $html = preg_replace($pattern,$replacement,$html);
+        $m = new \Mustache_Engine(array('entity_flags' => ENT_QUOTES));
+        $html = $m->render($html, array(
+          'function' => function($text) use($m,$channelId) {
+            //1: 解析
+            $param = explode("|",$text);
+            //3: 处理业务逻辑
+            $tplName = trim($param[0]);
+            $innerString = "";
+            switch($tplName){
+                case 'term':
+                    //获取实际的参数
+                    $word = trim($param[1]);
+                    $props = Cache::remember("/term/{$channelId}/{$word}",
+                          60,
+                          function() use($word,$channelId){
+                            $tplParam = DhammaTerm::where("word",$word)->first();
+                            $output = [
+                                "word" => $word,
+                                "channel" => $channelId,
+                                ];
+                                $innerString = $output["word"];
+                            if($tplParam){
+                                $output["id"] = $tplParam->guid;
+                                $output["meaning"] = $tplParam->meaning;
+                                $innerString = $output["meaning"];
+                                if(!empty($tplParam->other_meaning)){
+                                    $output["meaning2"] = $tplParam->other_meaning;
+                                }
+                            }
+                            return $output;
+                          });
+                    break;
+                case 'note':
+                    if(isset($param[1])){
+                        $props = ["note"=>trim($param[1])];
+                    }
+                    if(isset($param[2])){
+                        $props["trigger"] = trim($param[2]);
+                        $innerString = $props["trigger"];
+                    }
+                    break;
+                case 'sent':
+                    $tplName = "sentedit";
+                    $innerString = "";
+                    $sentId = trim($param[1]);
+                    $Sent = new CorpusController();
+                    $html = $Sent->getSentTpl($param[1],[$channelId]);
+                    return $html;
+                    break;
+                case 'quote':
+                    $paraId = trim($param[1]);
+                    $props = Cache::remember("/quote/{$channelId}/{$paraId}",
+                          60,
+                          function() use($paraId,$channelId){
+                            $para = \explode('-',$paraId);
+                            $output = [
+                                "paraId" => $paraId,
+                                "channel" => $channelId,
+                                "innerString" => $paraId,
+                                ];
+                            if(count($para)<2){
+                                return $output;
+                            }
+                            $PaliText = PaliText::where("book",$para[0])
+                                                ->where("paragraph",$para[1])
+                                                ->select(['toc','path'])
+                                                ->first();
+
+                            if($PaliText){
+                                $output["pali"] = $PaliText->toc;
+                                $output["paliPath"] = \json_decode($PaliText->path);
+                                $innerString = $PaliText->toc;
+                            }
+                            return $output;
+                          });
+                    break;
+                case 'exercise':
+                    $exeId = trim($param[1]);
+                    $exeContent = trim($param[2]);
+                    $props = Cache::remember("/quote/{$channelId}/{$exeId}",
+                          60,
+                          function() use($exeId,$channelId){
+                            $output = [
+                                "id" => $exeId,
+                                "channel" => $channelId,
+                                ];
+                            return $output;
+                          });
+                    #替换句子
+                    $pattern = "/\(\((.+?)\)\)/";
+                    $replacement = '{{sent|$1}}';
+                    Log::info("content{$exeContent}");
+
+                    $exeContent = preg_replace($pattern,$replacement,$exeContent);
+                    Log::info("content{$exeContent}");
+                    $innerString = MdRender::render($exeContent,$channelId);
+                    break;
+                default:
+                    break;
+            }
+            //4: 返回拼好的字符串
+
+            $props = base64_encode(\json_encode($props));
+            $html = "<MdTpl tpl='{$tplName}' props='{$props}' >{$innerString}</MdTpl>";
+            return $html;
+          }
+        ));
+        if(substr_count($html,"<p>") === 1){
+            $html = \str_replace(['<p>','</p>'],'',$html);
+        }
+        //LOG::info($html);
+        return $html;
+    }
+}

+ 18 - 0
app/Http/Api/PaliTextApi.php

@@ -0,0 +1,18 @@
+<?php
+namespace App\Http\Api;
+
+use App\Models\PaliText;
+
+class PaliTextApi{
+    public static function getChapterStartEnd($book,$para){
+        $chapter = PaliText::where('book',$book)
+                        ->where('paragraph',$para)
+                        ->first();
+        if(!$chapter){
+            return false;
+        }
+        $start = $para;
+        $end = $para + $chapter->chapter_len -1;
+        return [$start,$end];
+    }
+}

+ 139 - 0
app/Http/Api/ShareApi.php

@@ -0,0 +1,139 @@
+<?php
+namespace App\Http\Api;
+use App\Models\GroupMember;
+use App\Models\Share;
+use App\Models\Article;
+use App\Models\Channel;
+use App\Models\Collection;
+
+class ShareApi{
+
+    /*
+    获取某用户的可见的协作资源
+    $res_type 见readme.md#资源类型 -1全部类型资源
+    */
+    public static function getResList($user_uid,$res_type=-1){
+        # 找我加入的群
+        $my_group = GroupMember::where("user_id",$user_uid)->select('group_id')->get();
+        $userList[] = $user_uid;
+        foreach ($my_group as $key => $value) {
+            # code...
+            $userList[]=$value["group_id"];
+        }
+
+        if($res_type==-1){
+            #所有类型资源
+            $Fetch =Share::whereIn("cooperator_id",$userList)->select(['res_id','res_type','power'])->get();
+        }
+        else{
+            #指定类型资源
+            $Fetch =Share::whereIn("cooperator_id",$userList)
+                        ->where('res_type',$res_type)
+                        ->select(['res_id','res_type','power'])->get();
+        }
+
+        $resOutput = array();
+        foreach ($Fetch as $key => $value) {
+            # 查重
+            if(isset($resOutput[$value["res_id"]])){
+                if($value["power"]>$resOutput[$value["res_id"]]["power"]){
+                    $resOutput[$value["res_id"]]["power"] = $value["power"];
+                }
+            }
+            else{
+                $resOutput[$value["res_id"]]= array("power"=> $value["power"],"type" => $value["res_type"]);
+            }
+        }
+        $resList=array();
+        foreach ($resOutput as $key => $value) {
+            # code...
+            $resList[]=array("res_id"=>$key,"res_type"=>(int)$value["type"],"power"=>(int)$value["power"]);
+        }
+
+        foreach ($resList as $key => $res) {
+            # 获取资源标题 和所有者
+            $resList[$key]["res_title"]="_unknown_";
+            $resList[$key]["res_owner_id"]="_unknown_";
+            $resList[$key]["type"]="_unknown_";
+            $resList[$key]["status"]="0";
+            $resList[$key]["lang"]="_unknown_";
+
+            switch ($res["res_type"]) {
+                case 1:
+                    # pcs 文档
+                    $resList[$key]["res_title"]="title";
+                    break;
+                case 2:
+                    # channel
+                    $channelInfo = Channel::where('uid',$res["res_id"])->first();
+                    if($channelInfo){
+                        $resList[$key]["res_title"]=$channelInfo["name"];
+                        $resList[$key]["res_owner_id"]=$channelInfo["owner_uid"];
+                        $resList[$key]["type"]=$channelInfo["type"];
+                        $resList[$key]["status"]=$channelInfo["status"];
+                        $resList[$key]["lang"]=$channelInfo["lang"];
+                    }
+                    break;
+                case 3:
+                    # 3 Article 文章
+                    $aInfo = Article::where('uid',$res["res_id"])->first();
+                    if($aInfo){
+                        $resList[$key]["res_title"]=$aInfo["title"];
+                        $resList[$key]["res_owner_id"]=$aInfo["owner"];
+                        $resList[$key]["status"]=$aInfo["status"];
+                        $resList[$key]["lang"]='';
+                    }
+                    break;
+                case 4:
+                    # 4 Collection 文集
+                    $aInfo = Collection::where('uid',$res["res_id"])->first();
+                    if($aInfo){
+                        $resList[$key]["res_title"]=$aInfo["title"];
+                        $resList[$key]["res_owner_id"]=$aInfo["owner"];
+                        $resList[$key]["status"]=$aInfo["status"];
+                        $resList[$key]["lang"]=$aInfo["lang"];
+                    }
+                    break;
+                case 5:
+                    # code...
+                    break;
+
+                default:
+                    # code...
+                    break;
+            }
+        }
+
+        return $resList;
+
+    }
+
+    /**
+     * 获取对某个共享资源的权限
+     */
+    public static function getResPower($user_uid,$res_id){
+            if($userid==='0'){
+                #未登录用户 没有共享资源
+                return 0;
+            }
+            # 找我加入的群
+            $my_group = Group::where("user_id",$user_uid)->select('group_id')->get();
+            $userList[] = $user_uid;
+            foreach ($my_group as $key => $value) {
+                $userList[]=$value["group_id"];
+            }
+            $Fetch =Share::whereIn("cooperator_id",$userList)
+                        ->where('res_id',$res_id)
+                        ->select(['power'])->get();
+            $power=0;
+            foreach ($Fetch as $key => $value) {
+                # code...
+                if((int)$value["power"]>$power){
+                    $power = $value["power"];
+                }
+            }
+            return $power;
+    }
+
+}
+

+ 21 - 0
app/Http/Api/StudioApi.php

@@ -0,0 +1,21 @@
+<?php
+namespace App\Http\Api;
+
+require_once __DIR__.'/../../../public/app/ucenter/function.php';
+
+class StudioApi{
+    public static function getIdByName($name){
+        $userinfo = new \UserInfo();
+        return $userinfo->getUserByName($name)['userid'];
+    }
+    public static function getById($id){
+        $userinfo = new \UserInfo();
+        $studio = $userinfo->getName($id);
+        return [
+            'id'=>$id,
+            'nickName'=>$studio['nickname'],
+            'realName'=>$studio['username'],
+            'avatar'=>'',
+        ];
+    }
+}

+ 17 - 0
app/Http/Api/SuggestionApi.php

@@ -0,0 +1,17 @@
+<?php
+namespace App\Http\Api;
+
+use App\Models\SentPr;
+use App\Http\Api\PaliTextApi;
+
+class SuggestionApi{
+    public static function getCountBySent($book,$para,$start,$end,$channel,$type="suggestion"){
+        $count['suggestion'] = SentPr::where('book_id',$book)
+                                    ->where('paragraph',$para)
+                                    ->where('word_start',$start)
+                                    ->where('word_end',$end)
+                                    ->where('channel_uid',$channel)
+                                    ->count();
+        return $count;
+    }
+}

+ 21 - 0
app/Http/Api/UserApi.php

@@ -0,0 +1,21 @@
+<?php
+namespace App\Http\Api;
+
+require_once __DIR__.'/../../../public/app/ucenter/function.php';
+
+class UserApi{
+    public static function getIdByName($name){
+        $userinfo = new \UserInfo();
+        return $userinfo->getUserByName($name)['userid'];
+    }
+    public static function getById($id){
+        $userinfo = new \UserInfo();
+        $studio = $userinfo->getName($id);
+        return [
+            'id'=>$id,
+            'nickName'=>$studio['nickname'],
+            'userName'=>$studio['username'],
+            'avatar'=>'',
+        ];
+    }
+}

+ 200 - 0
app/Http/Controllers/ArticleController.php

@@ -0,0 +1,200 @@
+<?php
+
+namespace App\Http\Controllers;
+
+use App\Models\Article;
+use Illuminate\Http\Request;
+use Illuminate\Support\Str;
+
+class ArticleController extends Controller
+{
+    /**
+     * Display a listing of the resource.
+     *
+     * @return \Illuminate\Http\Response
+     */
+    public function index(Request $request)
+    {
+        //
+        $indexCol = ['uid','title','subtitle','summary','owner','lang','status','updated_at','created_at'];
+        switch ($request->get('view')) {
+            case 'studio':
+				# 获取studio内所有channel
+                $user = \App\Http\Api\AuthApi::current($request);
+                if($user){
+                    //判断当前用户是否有指定的studio的权限
+                    if($user['user_uid'] === \App\Http\Api\StudioApi::getIdByName($request->get('name'))){
+                        $table = Article::select($indexCol)->where('owner', $user["user_uid"]);
+                    }else{
+                        return $this->error(__('auth.failed'));
+                    }
+                }else{
+                    return $this->error(__('auth.failed'));
+                }
+				break;
+        }
+        //处理搜索
+        if(isset($_GET["search"])){
+            $table = $table->where('title', 'like', $_GET["search"]."%");
+        }
+        //获取记录总条数
+        $count = $table->count();
+        //处理排序
+        if(isset($_GET["order"]) && isset($_GET["dir"])){
+            $table = $table->orderBy($_GET["order"],$_GET["dir"]);
+        }else{
+            //默认排序
+            $table = $table->orderBy('updated_at','desc');
+        }
+        //处理分页
+        if($request->has("limit")){
+
+            if($request->has("offset")){
+                $offset = $request->get("offset");
+            }else{
+                $offset = 0;
+            }
+            $table = $table->skip($offset)->take($request->get("limit"));
+        }
+        //获取数据
+        $result = $table->get();
+        if($result){
+            /*
+            foreach ($result as $key => $value) {
+                # 获取studio信息
+                $studio = $userinfo->getName($value->owner_uid);
+                $value->studio = [
+                    'id'=>$value->owner_uid,
+                    'nickName'=>$studio['nickname'],
+                    'studioName'=>$studio['username'],
+                    'avastar'=>'',
+                    'owner' => [
+                        'id'=>$value->owner_uid,
+                        'nickName'=>$studio['nickname'],
+                        'userName'=>$studio['username'],
+                        'avastar'=>'',
+                    ]
+                ];
+            }*/
+			return $this->ok(["rows"=>$result,"count"=>$count]);
+		}else{
+			return $this->error("没有查询到数据");
+		}
+    }
+
+    /**
+     * Store a newly created resource in storage.
+     *
+     * @param  \Illuminate\Http\Request  $request
+     * @return \Illuminate\Http\Response
+     */
+    public function store(Request $request)
+    {
+        //
+        $user = \App\Http\Api\AuthApi::current($request);
+        if($user){
+            //判断当前用户是否有指定的studio的权限
+            if($user['user_uid'] === \App\Http\Api\StudioApi::getIdByName($request->get('studio'))){
+                //查询是否重复
+                if(Article::where('title',$request->get('title'))->where('owner',$user['user_uid'])->exists()){
+                    return $this->error(__('validation.exists'));
+                }else{
+
+                    $newOne = new Article;
+                    $newOne->id = app('snowflake')->id();
+                    $newOne->uid = Str::uuid();
+                    $newOne->title = $request->get('title');
+                    $newOne->lang = $request->get('lang');
+                    $newOne->owner = $user['user_uid'];
+                    $newOne->owner_id = $user['user_id'];
+                    $newOne->editor_id = $user['user_id'];
+                    $newOne->create_time = time()*1000;
+                    $newOne->modify_time = time()*1000;
+                    $newOne->save();
+                    return $this->ok($newOne);
+                }
+            }else{
+                return $this->error(__('auth.failed'));
+            }
+        }else{
+            return $this->error(__('auth.failed'));
+        }
+    }
+
+    /**
+     * Display the specified resource.
+     * @param  \Illuminate\Http\Request  $request
+     * @param  \App\Models\Article  $article
+     * @return \Illuminate\Http\Response
+     */
+    public function show(Request  $request,Article $article)
+    {
+        //
+        if($article){
+            if($article->status<30){
+                //私有文章,判断权限
+                $user = \App\Http\Api\AuthApi::current($request);
+                if($user){
+                    //判断当前用户是否有指定的studio的权限
+                    if($user['user_uid'] !== $article->owner){
+                        //非所有者
+                        //TODO 判断是否协作
+                        return $this->error(__('auth.failed'));
+                    }
+                }else{
+                    return $this->error(__('auth.failed'));
+                }
+            }
+            return $this->ok($article);
+        }else{
+            return $this->error("no recorder");
+        }
+
+    }
+
+    /**
+     * Update the specified resource in storage.
+     *
+     * @param  \Illuminate\Http\Request  $request
+     * @param  \App\Models\Article  $article
+     * @return \Illuminate\Http\Response
+     */
+    public function update(Request $request, Article $article)
+    {
+        //
+        if($article){
+            //鉴权
+            $user = \App\Http\Api\AuthApi::current($request);
+            if($user && $article->owner === $user["user_uid"]){
+                $article->title = $request->get('title');
+                $article->subtitle = $request->get('subtitle');
+                $article->summary = $request->get('summary');
+                $article->content = $request->get('content');
+                $article->lang = $request->get('lang');
+                $article->status = $request->get('status');
+                $article->modify_time = time()*1000;
+                $article->save();
+                return $this->ok($article);
+            }else{
+                //鉴权失败
+                //TODO 判断是否为协作
+                return $this->error(__('auth.failed'));
+            }
+
+        }else{
+            return $this->error("no recorder");
+        }
+
+    }
+
+    /**
+     * Remove the specified resource from storage.
+     *
+     * @param  \App\Models\Article  $article
+     * @return \Illuminate\Http\Response
+     */
+    public function destroy(Article $article)
+    {
+        //
+    }
+}

+ 130 - 0
app/Http/Controllers/ArticleProgressController.php

@@ -0,0 +1,130 @@
+<?php
+
+namespace App\Http\Controllers;
+
+use App\Models\Channel;
+use App\Models\Sentence;
+use App\Models\PaliSentence;
+use App\Http\Api\PaliTextApi;
+use Illuminate\Support\Arr;
+
+use Illuminate\Http\Request;
+
+class ArticleProgressController extends Controller
+{
+    /**
+     * Display a listing of the resource.
+     *
+     * @return \Illuminate\Http\Response
+     */
+    public function index(Request $request)
+    {
+        //
+        switch ($request->get('view')) {
+            case 'chapter':
+                $chapter = PaliTextApi::getChapterStartEnd($request->get('book'),$request->get('para'));
+                $channels = Sentence::where('book_id',$request->get('book'))
+                                    ->whereBetween('paragraph',$chapter)
+                                    ->where('strlen','>',0)
+                                    ->groupBy('channel_uid')
+                                    ->select('channel_uid')
+                                    ->get();
+                //获取单句长度
+                $sentLen = PaliSentence::where('book',$request->get('book'))
+                            ->whereBetween('paragraph',$chapter)
+                            ->orderBy('word_begin')
+                            ->select(['book','paragraph','word_begin','word_end','length'])
+                            ->get();
+                //获取每个channel的完成度
+                foreach ($channels as $key => $value) {
+                    # code...
+                    $finished = Sentence::where('book_id',$request->get('book'))
+                    ->whereBetween('paragraph',$chapter)
+                    ->where('channel_uid',$value->channel_uid)
+                    ->where('strlen','>',0)
+                    ->select(['strlen','book_id','paragraph','word_start','word_end'])
+                    ->get();
+                    $final=[];
+                    foreach ($sentLen as  $sent) {
+                        # code...
+                        $first = Arr::first($finished, function ($value, $key) use($sent) {
+                            return ($value->book_id==$sent->book &&
+                                    $value->paragraph==$sent->paragraph &&
+                                    $value->word_start==$sent->word_begin &&
+                                    $value->word_end==$sent->word_end);
+                        });
+                        $final[] = [$sent->length,$first?true:false];
+                    }
+                    $value['final'] = $final;
+                }
+                return $this->ok($channels);
+                break;
+        }
+    }
+
+    /**
+     * Show the form for creating a new resource.
+     *
+     * @return \Illuminate\Http\Response
+     */
+    public function create()
+    {
+        //
+    }
+
+    /**
+     * Store a newly created resource in storage.
+     *
+     * @param  \Illuminate\Http\Request  $request
+     * @return \Illuminate\Http\Response
+     */
+    public function store(Request $request)
+    {
+        //
+    }
+
+    /**
+     * Display the specified resource.
+     *
+     * @param  \App\Models\Channel  $channel
+     * @return \Illuminate\Http\Response
+     */
+    public function show(Channel $channel)
+    {
+        //
+    }
+
+    /**
+     * Show the form for editing the specified resource.
+     *
+     * @param  \App\Models\Channel  $channel
+     * @return \Illuminate\Http\Response
+     */
+    public function edit(Channel $channel)
+    {
+        //
+    }
+
+    /**
+     * Update the specified resource in storage.
+     *
+     * @param  \Illuminate\Http\Request  $request
+     * @param  \App\Models\Channel  $channel
+     * @return \Illuminate\Http\Response
+     */
+    public function update(Request $request, Channel $channel)
+    {
+        //
+    }
+
+    /**
+     * Remove the specified resource from storage.
+     *
+     * @param  \App\Models\Channel  $channel
+     * @return \Illuminate\Http\Response
+     */
+    public function destroy(Channel $channel)
+    {
+        //
+    }
+}

+ 106 - 0
app/Http/Controllers/AuthController.php

@@ -0,0 +1,106 @@
+<?php
+
+namespace App\Http\Controllers;
+
+require_once __DIR__.'/../../../public/app/ucenter/function.php';
+
+use Illuminate\Http\Request;
+use Firebase\JWT\JWT;
+use Firebase\JWT\Key;
+use App\Http\Api;
+
+class AuthController extends Controller
+{
+    /**
+     * Display a listing of the resource.
+     *
+     * @return \Illuminate\Http\Response
+     */
+    public function index()
+    {
+        //
+    }
+
+    /**
+     * Store a newly created resource in storage.
+     *
+     * @param  \Illuminate\Http\Request  $request
+     * @return \Illuminate\Http\Response
+     */
+    public function store(Request $request)
+    {
+        //
+    }
+
+    /**
+     * Display the specified resource.
+     *
+     * @param  int  $id
+     * @return \Illuminate\Http\Response
+     */
+    public function show($id)
+    {
+        //
+    }
+
+    /**
+     * Update the specified resource in storage.
+     *
+     * @param  \Illuminate\Http\Request  $request
+     * @param  int  $id
+     * @return \Illuminate\Http\Response
+     */
+    public function update(Request $request, $id)
+    {
+        //
+    }
+
+    /**
+     * Remove the specified resource from storage.
+     *
+     * @param  int  $id
+     * @return \Illuminate\Http\Response
+     */
+    public function destroy($id)
+    {
+        //
+    }
+    public function signIn(Request $request){
+        $userinfo = new \UserInfo();
+        $user = $userinfo->signIn($request->get('username'),$request->get('password'));
+        if($user){
+            $ExpTime = time() + 60 * 60 * 24 * 365;
+            $key = env('APP_KEY');
+            $payload = [
+                'nbf' => time(),
+                'exp' => $ExpTime,
+                'uid' => $user['userid'],
+                'id' => $user['id'],
+            ];
+            $jwt = JWT::encode($payload,$key,'HS512');
+            return $this->ok($jwt);
+        }else{
+            return $this->error('invalid token');
+        }
+    }
+    public function getUserInfoByToken(Request $request){
+        $curr = \App\Http\Api\AuthApi::current($request);
+        if($curr){
+            $userinfo = new \UserInfo();
+		    $username = $userinfo->getName($curr['user_uid']);
+            $user = [
+                "nickName"=> $username['nickname'],
+                "realName"=> $username['username'],
+                "avatar"=> "",
+                "roles"=> [],
+                "token"=>\substr($request->header('Authorization'),7) ,
+            ];
+            return $this->ok($user);
+        }else{
+            return $this->error('invalid token');
+        }
+    }
+
+}
+
+

+ 230 - 4
app/Http/Controllers/ChannelController.php

@@ -5,7 +5,16 @@ namespace App\Http\Controllers;
 require_once __DIR__.'/../../../public/app/ucenter/function.php';
 
 use App\Models\Channel;
+use App\Models\Sentence;
+use App\Models\PaliSentence;
+use App\Http\Controllers\AuthController;
 use Illuminate\Http\Request;
+use Illuminate\Support\Facades\Log;
+use App\Http\Api\AuthApi;
+use App\Http\Api\StudioApi;
+use App\Http\Api\ShareApi;
+use App\Http\Api\PaliTextApi;
+use Illuminate\Support\Arr;
 
 class ChannelController extends Controller
 {
@@ -14,9 +23,170 @@ class ChannelController extends Controller
      *
      * @return \Illuminate\Http\Response
      */
-    public function index()
+    public function index(Request $request)
     {
         //
+        $userinfo = new \UserInfo();
+		$result=false;
+		$indexCol = ['uid','name','summary','type','owner_uid','lang','status','updated_at','created_at'];
+		switch ($request->get('view')) {
+            case 'studio':
+				# 获取studio内所有channel
+                $user = AuthApi::current($request);
+                if($user){
+                    //判断当前用户是否有指定的studio的权限
+                    if($user['user_uid'] === \App\Http\Api\StudioApi::getIdByName($request->get('name'))){
+                        $table = Channel::select($indexCol)->where('owner_uid', $user["user_uid"]);
+                    }else{
+                        return $this->error(__('auth.failed'));
+                    }
+                }else{
+                    return $this->error(__('auth.failed'));
+                }
+				break;
+            case 'user-in-chapter':
+                #获取user所有有权限的channel列表
+                $user = AuthApi::current($request);
+                if($user){
+                    $channelById = [];
+                    $channelId = [];
+                    //获取共享channel
+                    $allSharedChannels = ShareApi::getResList($user['user_uid'],2);
+                    foreach ($allSharedChannels as $key => $value) {
+                        # code...
+                        $channelId[] = $value['res_id'];
+                        $channelById[$value['res_id']] = $value;
+                    }
+                    //获取全网公开channel
+                    $chapter = PaliTextApi::getChapterStartEnd($request->get('book'),$request->get('para'));
+                    $publicChannelsWithContent = Sentence::where('book_id',$request->get('book'))
+                                                ->whereBetween('paragraph',$chapter)
+                                                ->where('strlen','>',0)
+                                                ->where('status',30)
+                                                ->groupBy('channel_uid')
+                                                ->select('channel_uid')
+                                                ->get();
+                    foreach ($publicChannelsWithContent as $key => $value) {
+                        # code...
+                        $value['res_id']=$value->channel_uid;
+                        $value['power'] = 10;
+                        $value['type'] = 2;
+                        if(!isset($channelById[$value['res_id']])){
+                            $channelId[] = $value['res_id'];
+                            $channelById[$value['res_id']] = $value;
+                        }
+                    }
+                    $table = Channel::select($indexCol)
+                            ->whereIn('uid', $channelId)
+                            ->orWhere('owner_uid',$user['user_uid']);
+                }else{
+                    return $this->error(__('auth.failed'));
+                }
+                break;
+
+        }
+        //处理搜索
+        if(isset($_GET["search"])){
+            $table = $table->where('title', 'like', $_GET["search"]."%");
+        }
+        //获取记录总条数
+        $count = $table->count();
+        //处理排序
+        if(isset($_GET["order"]) && isset($_GET["dir"])){
+            $table = $table->orderBy($_GET["order"],$_GET["dir"]);
+        }else{
+            //默认排序
+            $table = $table->orderBy('updated_at','desc');
+        }
+        //处理分页
+        if($request->has("limit")){
+
+            if($request->has("offset")){
+                $offset = $request->get("offset");
+            }else{
+                $offset = 0;
+            }
+            $table = $table->skip($offset)->take($request->get("limit"));
+        }
+        //获取数据
+        $result = $table->get();
+        if($result){
+            if($request->has('progress')){
+                //获取进度
+                //获取单句长度
+                $sentLen = PaliSentence::where('book',$request->get('book'))
+                ->whereBetween('paragraph',$chapter)
+                ->orderBy('word_begin')
+                ->select(['book','paragraph','word_begin','word_end','length'])
+                ->get();
+            }
+            foreach ($result as $key => $value) {
+                if($request->has('progress')){
+                    //获取进度
+                    $finalTable = Sentence::where('book_id',$request->get('book'))
+                    ->whereBetween('paragraph',$chapter)
+                    ->where('channel_uid',$value->uid)
+                    ->where('strlen','>',0)
+                    ->select(['strlen','book_id','paragraph','word_start','word_end']);
+                    if($finalTable->count()>0){
+                        $finished = $finalTable->get();
+                        $final=[];
+                        foreach ($sentLen as  $sent) {
+                            # code...
+                            $first = Arr::first($finished, function ($value, $key) use($sent) {
+                                return ($value->book_id==$sent->book &&
+                                        $value->paragraph==$sent->paragraph &&
+                                        $value->word_start==$sent->word_begin &&
+                                        $value->word_end==$sent->word_end);
+                            });
+                            $final[] = [$sent->length,$first?true:false];
+                        }
+                        $value['final'] = $final;
+                    }
+
+                }
+                if($value->owner_uid===$user['user_uid']){
+                    $value['role'] = 'owner';
+                }else{
+                    if(isset($channelById[$value->uid])){
+                        switch ($channelById[$value->uid]['power']) {
+                            case 10:
+                                # code...
+                                $value['role'] = 'member';
+                                break;
+                            case 20:
+                                $value['role'] = 'editor';
+                                break;
+                            case 30:
+                                $value['role'] = 'owner';
+                                break;
+                            default:
+                                # code...
+                                $value['role'] = $channelById[$value->uid]['power'];
+                                break;
+                        }
+                    }
+                }
+                # 获取studio信息
+                $studio = $userinfo->getName($value->owner_uid);
+                $value->studio = [
+                    'id'=>$value->owner_uid,
+                    'nickName'=>$studio['nickname'],
+                    'studioName'=>$studio['username'],
+                    'avatar'=>'',
+                    'owner' => [
+                        'id'=>$value->owner_uid,
+                        'nickName'=>$studio['nickname'],
+                        'userName'=>$studio['username'],
+                        'avatar'=>'',
+                    ]
+                ];
+            }
+			return $this->ok(["rows"=>$result,"count"=>$count]);
+		}else{
+			return $this->error("没有查询到数据");
+		}
+
     }
 
     /**
@@ -28,6 +198,33 @@ class ChannelController extends Controller
     public function store(Request $request)
     {
         //
+        $user = AuthApi::current($request);
+        if($user){
+            //判断当前用户是否有指定的studio的权限
+            if($user['user_uid'] === StudioApi::getIdByName($request->get('studio'))){
+                //查询是否重复
+                if(Channel::where('name',$request->get('name'))->where('owner_uid',$user['user_uid'])->exists()){
+                    return $this->error(__('validation.exists',['name']));
+                }else{
+
+                    $channel = new Channel;
+                    $channel->id = app('snowflake')->id();
+                    $channel->name = $request->get('name');
+                    $channel->owner_uid = $user['user_uid'];
+                    $channel->type = $request->get('type');
+                    $channel->lang = $request->get('lang');
+                    $channel->editor_id = $user['user_id'];
+                    $channel->create_time = time()*1000;
+                    $channel->modify_time = time()*1000;
+                    $channel->save();
+                    return $this->ok($channel);
+                }
+            }else{
+                return $this->error(__('auth.failed'));
+            }
+        }else{
+            return $this->error(__('auth.failed'));
+        }
     }
 
     /**
@@ -39,9 +236,23 @@ class ChannelController extends Controller
     public function show($id)
     {
         //
-		$channel = Channel::where("uid",$id)->select(['name','owner_uid'])->first();
+        $indexCol = ['uid','name','summary','type','owner_uid','lang','status','updated_at','created_at'];
+		$channel = Channel::where("uid",$id)->select($indexCol)->first();
 		$userinfo = new \UserInfo();
-		$channel->owner_info = $userinfo->getName($channel->owner_uid);
+        $studio = $userinfo->getName($channel->owner_uid);
+		$channel->owner_info = $studio;
+        $channel->studio = [
+            'id'=>$channel->owner_uid,
+            'nickName'=>$studio['nickname'],
+            'studioName'=>$studio['username'],
+            'avastar'=>'',
+            'owner' => [
+                'id'=>$channel->owner_uid,
+                'nickName'=>$studio['nickname'],
+                'userName'=>$studio['username'],
+                'avastar'=>'',
+            ]
+        ];
 		return $this->ok($channel);
     }
 
@@ -54,7 +265,22 @@ class ChannelController extends Controller
      */
     public function update(Request $request, Channel $channel)
     {
-        //
+        //鉴权
+        $user = AuthApi::current($request);
+        if($user && $channel->owner_uid === $user["user_uid"]){
+            $channel->name = $request->get('name');
+            $channel->type = $request->get('type');
+            $channel->summary = $request->get('summary');
+            $channel->lang = $request->get('lang');
+            $channel->status = $request->get('status');
+            $channel->save();
+            return $this->ok($channel);
+        }else{
+            //非所有者鉴权失败
+            //TODO 判断是否为协作
+            return $this->error(__('auth.failed'));
+        }
+
     }
 
     /**

+ 236 - 0
app/Http/Controllers/CollectionController.php

@@ -0,0 +1,236 @@
+<?php
+
+namespace App\Http\Controllers;
+
+use App\Models\Collection;
+use Illuminate\Http\Request;
+use Illuminate\Support\Str;
+use Illuminate\Support\Facades\Log;
+
+require_once __DIR__.'/../../../public/app/ucenter/function.php';
+
+
+class CollectionController extends Controller
+{
+    /**
+     * Display a listing of the resource.
+     *
+     * @return \Illuminate\Http\Response
+     */
+    public function index(Request $request)
+    {
+        //
+                //
+        $userinfo = new \UserInfo();
+		$result=false;
+		$indexCol = ['uid','title','subtitle','summary','article_list','owner','status','lang','updated_at','created_at'];
+		switch ($request->get('view')) {
+            case 'studio_list':
+		        $indexCol = ['owner'];
+                $table = Collection::select($indexCol)->selectRaw('count(*) as count')->where('status', 30)->groupBy('owner');
+                break;
+			case 'studio':
+				# code...
+				//$table = Collection::select($indexCol)->where('owner', $_COOKIE["user_uid"]);
+                # 获取studio内所有channel
+                $user = \App\Http\Api\AuthApi::current($request);
+                if($user){
+                    //判断当前用户是否有指定的studio的权限
+                    if($user['user_uid'] === \App\Http\Api\StudioApi::getIdByName($request->get('name'))){
+                        $table = Collection::select($indexCol)->where('owner', $user["user_uid"]);
+                    }else{
+                        return $this->error(__('auth.failed'));
+                    }
+                }else{
+                    return $this->error(__('auth.failed'));
+                }
+				break;
+			case 'public':
+				$table = Collection::select($indexCol)->where('status', 30);
+				break;
+            case 'public_studio':
+                $user = $userinfo->getUserByName($request->get('studio'));
+                $table = Collection::select($indexCol)->where('status', 30)->where('owner',$user['userid']);
+                break;
+			default:
+				# code...
+			    return $this->error("没有查询到数据");
+				break;
+		}
+        if(isset($_GET["search"])){
+            $table = $table->where('title', 'like', $_GET["search"]."%");
+        }
+        $count = $table->count();
+        if(isset($_GET["order"]) && isset($_GET["dir"])){
+            $table = $table->orderBy($_GET["order"],$_GET["dir"]);
+        }else{
+            if($request->get('view') === 'studio_list'){
+                $table = $table->orderBy('count','desc');
+            }else{
+                $table = $table->orderBy('updated_at','desc');
+            }
+        }
+
+        if(isset($_GET["limit"])){
+            $offset = 0;
+            if(isset($_GET["offset"])){
+                $offset = $_GET["offset"];
+            }
+            $table = $table->skip($offset)->take($_GET["limit"]);
+        }
+        $result = $table->get();
+		if($result){
+            foreach ($result as $key => $value) {
+                # code...
+                if(is_array(\json_decode($value->article_list))){
+                    $value->childrenNumber = count(\json_decode($value->article_list));
+                }else{
+                    $value->childrenNumber = 0;
+                }
+
+                if(isset($value->article_list)){
+                    $result[$key]->article_list = array_slice(\json_decode($value->article_list),0,4);
+                }
+                $value->studio = [
+                    'id'=>$value->owner,
+                    'nickName'=>$userinfo->getName($value->owner)['nickname'],
+                    'studioName'=>$userinfo->getName($value->owner)['username'],
+                    'avastar'=>'',
+                    'owner' => [
+                        'id'=>$value->owner,
+                        'nickName'=>$userinfo->getName($value->owner)['nickname'],
+                        'userName'=>$userinfo->getName($value->owner)['username'],
+                        'avastar'=>'',
+                    ]
+                ];
+            }
+			return $this->ok(["rows"=>$result,"count"=>$count]);
+		}else{
+			return $this->error("没有查询到数据");
+		}
+    }
+
+    /**
+     * Store a newly created resource in storage.
+     *
+     * @param  \Illuminate\Http\Request  $request
+     * @return \Illuminate\Http\Response
+     */
+    public function store(Request $request)
+    {
+        $user = \App\Http\Api\AuthApi::current($request);
+        if($user){
+            //判断当前用户是否有指定的studio的权限
+            if($user['user_uid'] === \App\Http\Api\StudioApi::getIdByName($request->get('studio'))){
+                //查询是否重复
+                if(Collection::where('title',$request->get('title'))->where('owner',$user['user_uid'])->exists()){
+                    return $this->error(__('validation.exists'));
+                }else{
+                    $newOne = new Collection;
+                    $newOne->id = app('snowflake')->id();
+                    $newOne->uid = Str::uuid();
+                    $newOne->title = $request->get('title');
+                    $newOne->lang = $request->get('lang');
+                    $newOne->article_list = "[]";
+                    $newOne->owner = $user['user_uid'];
+                    $newOne->owner_id = $user['user_id'];
+                    $newOne->editor_id = $user['user_id'];
+                    $newOne->create_time = time()*1000;
+                    $newOne->modify_time = time()*1000;
+                    $newOne->save();
+                    return $this->ok($newOne);
+                }
+            }else{
+                return $this->error(__('auth.failed'));
+            }
+        }else{
+            return $this->error(__('auth.failed'));
+        }
+
+    }
+
+    /**
+     * Display the specified resource.
+     * @param  \Illuminate\Http\Request  $request
+     * @param  string  $id
+     * @return \Illuminate\Http\Response
+     */
+    public function show(Request  $request,$id)
+    {
+        //
+		$indexCol = ['uid','title','subtitle','summary','article_list','owner','lang','updated_at','created_at'];
+
+		$result  = Collection::select($indexCol)->where('uid', $id)->first();
+		if($result){
+            if($result->status<30){
+                //私有文章,判断权限
+                $user = \App\Http\Api\AuthApi::current($request);
+                if($user){
+                    //判断当前用户是否有指定的studio的权限
+                    if($user['user_uid'] !== $result->owner){
+                        //非所有者
+                        //TODO 判断是否协作
+                        return $this->error(__('auth.failed'));
+                    }
+                }else{
+                    return $this->error(__('auth.failed'));
+                }
+            }
+			if(!empty($result->article_list)){
+				$result->article_list = \json_decode($result->article_list);
+			}
+			return $this->ok($result);
+		}else{
+			return $this->error("没有查询到数据");
+		}
+    }
+
+    /**
+     * Update the specified resource in storage.
+     *
+     * @param  \Illuminate\Http\Request  $request
+     * @param  string  $id
+     * @return \Illuminate\Http\Response
+     */
+    public function update(Request $request, $id)
+    {
+        //
+        $collection  = Collection::where('uid', $id)->first();
+        if($collection){
+            //鉴权
+            Log::info("找到文集");
+            $user = \App\Http\Api\AuthApi::current($request);
+            if($user && $collection->owner === $user["user_uid"]){
+                $collection->title = $request->get('title');
+                $collection->subtitle = $request->get('subtitle');
+                $collection->summary = $request->get('summary');
+                $collection->article_list = \json_encode($request->get('aritcle_list')) ;
+                $collection->lang = $request->get('lang');
+                $collection->status = $request->get('status');
+                $collection->modify_time = time()*1000;
+                $collection->save();
+                return $this->ok($collection);
+            }else{
+                //鉴权失败
+                Log::info("鉴权失败");
+
+                //TODO 判断是否为协作
+                return $this->error(__('auth.failed'));
+            }
+
+        }else{
+            return $this->error("no recorder");
+        }
+    }
+
+    /**
+     * Remove the specified resource from storage.
+     *
+     * @param  \App\Models\Collection  $collection
+     * @return \Illuminate\Http\Response
+     */
+    public function destroy(Collection $collection)
+    {
+        //
+    }
+}

+ 2 - 1
app/Http/Controllers/Controller.php

@@ -17,7 +17,8 @@ class Controller extends BaseController
 			'data'=>$result,
 			'message'=> $message,
 		];
-		return response()->json($response,200);
+		return response()->json($response,200,['Content-Type' => 'application/json;charset=UTF-8',
+	'Charset' => 'utf-8'],JSON_UNESCAPED_UNICODE);
 	}
     public function ok($result,$message=""){
         return $this->sendResponse($result,$message);

+ 486 - 0
app/Http/Controllers/CorpusController.php

@@ -0,0 +1,486 @@
+<?php
+
+namespace App\Http\Controllers;
+
+use App\Models\Sentence;
+use App\Models\Channel;
+use App\Models\PaliText;
+use App\Models\WbwTemplate;
+use App\Models\WbwBlock;
+use App\Models\Wbw;
+use App\Models\Discussion;
+use Illuminate\Http\Request;
+use Illuminate\Support\Facades\Cache;
+use App\Http\Api\MdRender;
+use App\Http\Api\SuggestionApi;
+use App\Http\Api\ChannelApi;
+use Illuminate\Support\Facades\Log;
+
+class CorpusController extends Controller
+{
+    protected $result = [
+        "uid"=> '',
+        "title"=> '',
+        "path"=>[],
+        "sub_title"=> '',
+        "summary"=> '',
+        "content"=> '',
+        "content_type"=> "html",
+        "status"=>30,
+        "lang"=> "",
+        "created_at"=> "",
+        "updated_at"=> "",
+    ];
+    protected $wbwChannels = [];
+    protected $selectCol = ['book_id','paragraph','word_start',"word_end",'channel_uid','content','updated_at'];
+    public function __construct()
+    {
+
+
+    }
+    /**
+     * Display a listing of the resource.
+     *
+     * @return \Illuminate\Http\Response
+     */
+    public function index()
+    {
+        //
+    }
+
+    /**
+     * Store a newly created resource in storage.
+     *
+     * @param  \Illuminate\Http\Request  $request
+     * @return \Illuminate\Http\Response
+     */
+    public function store(Request $request)
+    {
+        //
+    }
+
+    /**
+     * Display the specified resource.
+     *
+     * @param  \App\Models\Sentence  $sentence
+     * @return \Illuminate\Http\Response
+     */
+    public function show(Sentence $sentence)
+    {
+        //
+    }
+    public function getSentTpl($id,$channels){
+        $sent = [];
+        $sentId = \explode('-',$id);
+        $channelId = ChannelApi::getSysChannel('_System_Wbw_VRI_');
+        if($channelId !== false){
+            array_push($channels,$channelId);
+        }
+        $record = Sentence::select($this->selectCol)
+        ->where('book_id',$sentId[0])
+        ->where('paragraph',$sentId[1])
+        ->where('word_start',$sentId[2])
+        ->where('word_end',$sentId[3])
+        ->whereIn('channel_uid',$channels)
+        ->get();
+        Log::info("sent count:".count($record));
+        $channelIndex = $this->getChannelIndex($channels);
+
+        $content = $this->makeContent($record,"edit",$channelIndex);
+        return $content;
+    }
+    /**
+     * Display the specified resource.
+     *
+     * @param  string  $id
+     * @return \Illuminate\Http\Response
+     */
+    public function showSent($id)
+    {
+        //
+        $param = \explode('_',$id);
+        if(count($param)>1){
+            $channels = array_slice($param,1);
+        }else{
+            $channels = [];
+        }
+        $this->result['content'] = getSentTpl($param[0],$channels);
+        return $this->ok($this->result);
+    }
+
+    public function showSentences($type,$id,$mode='read'){
+        $param = \explode('_',$id);
+        $sentId = \explode('-',$param[0]);
+        $channels = [];
+
+		#获取channel类型
+        $sentChannel = Sentence::select('channel_uid')
+                    ->where('book_id',$sentId[0])
+                    ->where('paragraph',$sentId[1])
+                    ->where('word_start',$sentId[2])
+                    ->where('word_end',$sentId[3])
+                    ->get();
+        foreach ($sentChannel as $key => $value) {
+            # code...
+            $channels[] = $value->channel_uid;
+        }
+		$channelInfo = Channel::whereIn("uid",$channels)->select(['uid','type','name'])->get();
+		$indexChannel = [];
+        $channels = [];
+		foreach ($channelInfo as $key => $value) {
+			# code...
+            if($value->type === $type){
+                $indexChannel[$value->uid] = $value;
+                $channels[] = $value->uid;
+            }
+		}
+		//获取句子数据
+        $record = Sentence::select($this->selectCol)
+                    ->where('book_id',$sentId[0])
+                    ->where('paragraph',$sentId[1])
+                    ->where('word_start',$sentId[2])
+                    ->where('word_end',$sentId[3])
+                    ->whereIn('channel_uid',$channels)
+                    ->orderBy('paragraph')
+                    ->orderBy('word_start')
+                    ->get();
+        if(count($record) ===0){
+            return $this->error("no data");
+        }
+
+        $this->result['content'] = $this->makeContent($record,$mode,$indexChannel);
+        return $this->ok($this->result);
+    }
+    public function showChapter($id,$mode='read')
+    {
+        //
+        $param = \explode('_',$id);
+        $sentId = \explode('-',$param[0]);
+        $channels = [];
+        if(count($param)>1){
+            $channels = array_slice($param,1);
+        }
+        if($mode === 'read'){
+            //阅读模式加载md格式原文
+            $channelId = ChannelApi::getSysChannel('_System_Pali_VRI_');
+        }else{
+            //翻译模式加载json格式原文
+            $channelId = ChannelApi::getSysChannel('_System_Wbw_VRI_');
+        }
+
+        if($channelId !== false){
+            $channels[] = $channelId;
+        }
+
+        $chapter = PaliText::where('book',$sentId[0])->where('paragraph',$sentId[1])->first();
+        if(!$chapter){
+            return $this->error("no data");
+        }
+        if(empty($chapter->toc)){
+            $this->result['title'] = "unknown";
+        }else{
+            $this->result['title'] = $chapter->toc;
+            $this->result['sub_title'] = $chapter->toc;
+            $this->result['path'] = json_decode($chapter->path);
+        }
+
+        $paraFrom = $sentId[1];
+        $paraTo = $sentId[1]+$chapter->chapter_len-1;
+        //获取标题
+        $heading = PaliText::select(["book","paragraph","level"])
+        ->where('book',$sentId[0])
+        ->whereBetween('paragraph',[$paraFrom,$paraTo])
+        ->where('level','<',8)
+        ->get();
+        //将标题段落转成索引数组 以便输出标题层级
+        $indexedHeading = [];
+        foreach ($heading as $key => $value) {
+            # code...
+            $indexedHeading["{$value->book}-{$value->paragraph}"] = $value->level;
+        }
+		#获取channel索引表
+        $tranChannels = [];
+		$channelInfo = Channel::whereIn("uid",$channels)->select(['uid','type','name'])->get();
+		$indexChannel = [];
+		foreach ($channelInfo as $key => $value) {
+			# code...
+			$indexChannel[$value->uid] = $value;
+            if($value->type==="translation" ){
+                $tranChannels[] = $value->uid;
+            }
+		}
+        //获取wbw channel
+        //目前默认的 wbw channel 是第一个translation channel
+        foreach ($channels as $key => $value) {
+            # code...
+            if($indexChannel[$value]->type==='translation'){
+                $this->wbwChannels[] = $value;
+                break;
+            }
+        }
+        $title = Sentence::select($this->selectCol)
+                    ->where('book_id',$sentId[0])
+                    ->where('paragraph',$sentId[1])
+                    ->whereIn('channel_uid',$tranChannels)
+                    ->first();
+        if($title){
+            $this->result['title'] = MdRender::render($title->content,$title->channel_uid);
+        }
+
+		//获取句子数据
+        $record = Sentence::select($this->selectCol)
+                    ->where('book_id',$sentId[0])
+                    ->whereBetween('paragraph',[$paraFrom,$paraTo])
+                    ->whereIn('channel_uid',$channels)
+                    ->orderBy('paragraph')
+                    ->orderBy('word_start')
+                    ->get();
+        if(count($record) ===0){
+            return $this->error("no data");
+        }
+
+        $this->result['content'] = $this->makeContent($record,$mode,$indexChannel,$indexedHeading);
+        return $this->ok($this->result);
+    }
+
+    private function getChannelIndex($channels){
+        #获取channel索引表
+        $channelInfo = Channel::whereIn("uid",$channels)->select(['uid','type','name'])->get();
+        $indexChannel = [];
+        foreach ($channelInfo as $key => $value) {
+            # code...
+            $indexChannel[$value->uid] = $value;
+        }
+        return $indexChannel;
+    }
+    /**
+     * 根据句子库数据生成文章内容
+     * $record 句子数据
+     * $mode read | edit | wbw
+     * $indexChannel channel索引
+     * $indexedHeading 标题索引 用于给段落加标题标签 <h1> ect.
+     */
+    private function makeContent($record,$mode,$indexChannel,$indexedHeading=[]){
+        $content = [];
+		$lastSent = "0-0";
+		$sentCount = 0;
+        $sent = [];
+        $sent["origin"] = [];
+        $sent["translation"] = [];
+        foreach ($record as $key => $value) {
+            # 遍历结果生成html文件
+            $currSentId = $value->book_id.'-'.$value->paragraph.'-'.$value->word_start.'-'.$value->word_end;
+			if($currSentId !== $lastSent){
+				if($sentCount > 0){
+					//保存上一个句子
+					//增加标题的html标记
+					$level = 0;
+					if(isset($indexedHeading["{$value->book_id}-{$value->paragraph}"])){
+						$level = $indexedHeading["{$value->book_id}-{$value->paragraph}"];
+					}
+					$content = $this->pushSent($content,$sent,$level,$mode);
+				}
+				//新建句子
+				$sent = $this->newSent($value->book_id,$value->paragraph,$value->word_start,$value->word_end);
+
+				$lastSent = $currSentId;
+			}
+			$sentContent=$value->content;
+			$channelType = $indexChannel[$value->channel_uid]->type;
+			if($indexChannel[$value->channel_uid]->type==="original" && $mode !== 'read'){
+                //非阅读模式下。原文使用逐词解析数据。优先加载第一个translation channel 如果没有。加载默认逐词解析。
+				$channelType = 'wbw';
+                $html = "";
+
+                if(count($this->wbwChannels)>0){
+                    //获取逐词解析数据
+                    $wbwBlock = WbwBlock::where('channel_uid',$this->wbwChannels[0])
+                                        ->where('book_id',$value->book_id)
+                                        ->where('paragraph',$value->paragraph)
+                                        ->select('uid')
+                                        ->first();
+                    if($wbwBlock){
+                        //找到逐词解析数据
+                        $wbwData = Wbw::where('block_uid',$wbwBlock->uid)
+                                      ->whereBetween('wid',[$value->word_start,$value->word_end])
+                                      ->select(['data','uid'])
+                                      ->orderBy('wid')
+                                      ->get();
+                        $wbwContent = [];
+                        foreach ($wbwData as $wbwrow) {
+                            $wbw = str_replace("&nbsp;",' ',$wbwrow->data);
+                            $wbw = str_replace("<br>",' ',$wbw);
+
+                            $xmlString = "<root>" . $wbw . "</root>";
+                            try{
+                                $xmlWord = simplexml_load_string($xmlString);
+                            }catch(Exception $e){
+                                continue;
+                            }
+                            $wordsList = $xmlWord->xpath('//word');
+                            foreach ($wordsList as $word) {
+                                $case = \str_replace(['#','.'],['$',''],$word->case->__toString());
+                                $case = \str_replace('$$','$',$case);
+                                $case = trim($case);
+                                $case = trim($case,"$");
+                                $wbwContent[] = [
+                                    'uid'=>$wbwrow->uid,
+                                    'word'=>['value'=>$word->pali->__toString(),'status'=>0],
+                                    'real'=> ['value'=>$word->real->__toString(),'status'=>0],
+                                    'meaning'=> ['value'=>\explode('$',$word->mean->__toString()) ,'status'=>0],
+                                    'type'=> ['value'=>$word->type->__toString(),'status'=>0],
+                                    'grammar'=> ['value'=>$word->gramma->__toString(),'status'=>0],
+                                    'case'=> ['value'=>\explode('$',$case),'status'=>0],
+                                    'parent'=> ['value'=>$word->parent->__toString(),'status'=>0],
+                                    'style'=> ['value'=>$word->style->__toString(),'status'=>0],
+                                    'factors'=> ['value'=>$word->org->__toString(),'status'=>0],
+                                    'factorMeaning'=> ['value'=>$word->om->__toString(),'status'=>0],
+                                    'confidence'=> 0.5,
+                                    'hasComment'=>Discussion::where('res_id',$wbwrow->uid)->exists(),
+                                ];
+                            }
+                        }
+                        $sentContent = \json_encode($wbwContent);
+                    }
+                }
+			}else{
+                $html = Cache::remember("/sent/{$value->channel_uid}/{$currSentId}",10,
+                function() use($value){
+                    return MdRender::render($value->content,$value->channel_uid);
+                });
+            }
+
+            $newSent = [
+                "content"=>$sentContent,
+                "html"=> $html,
+                "book"=> $value->book_id,
+                "para"=> $value->paragraph,
+                "wordStart"=> $value->word_start,
+                "wordEnd"=> $value->word_end,
+                "editor"=> [
+                    'id'=>$value->editor_uid,
+                    'nickName'=>'nickname',
+                    'realName'=>'realName',
+                    'avatar'=>'',
+                ],
+                "channel"=> [
+                    "name"=>$indexChannel[$value->channel_uid]->name,
+                    "type"=>$channelType,
+	                "id"=> $value->channel_uid,
+                ],
+                "updateAt"=> $value->updated_at,
+                "suggestionCount" => SuggestionApi::getCountBySent($value->book_id,$value->paragraph,$value->word_start,$value->word_end,$value->channel_uid),
+            ];
+			switch ($indexChannel[$value->channel_uid]->type) {
+				case 'original';
+				case 'wbw';
+					array_push($sent["origin"],$newSent);
+					break;
+				default:
+					array_push($sent["translation"],$newSent);
+					break;
+			}
+
+			$sentCount++;
+        }
+		$content = $this->pushSent($content,$sent,0,$mode);
+        return \implode("",$content);
+    }
+	private function pushSent($result,$sent,$level=0,$mode='read'){
+
+		$sentProps = base64_encode(\json_encode($sent)) ;
+        if($mode === 'read'){
+            $sentWidget = "<MdTpl tpl='sentread' props='{$sentProps}' />";
+        }else{
+            $sentWidget = "<MdTpl tpl='sentedit' props='{$sentProps}' />";
+        }
+		//增加标题的html标记
+		if($level>0){
+			$sentWidget = "<h{$level}>".$sentWidget."</h{$level}>";
+		}
+		array_push($result,$sentWidget);
+        return $result;
+	}
+	private function newSent($book,$para,$word_start,$word_end){
+		$sent = [
+            "id"=>"{$book}-{$para}-{$word_start}-{$word_end}",
+			"origin"=>[],
+			"translation"=>[],
+		];
+
+		#生成channel 数量列表
+		$sentId = "{$book}-{$para}-{$word_start}-{$word_end}";
+		$channelCount = Cache::remember("/sent1/{$sentId}/channels/count",
+                          60,
+                          function() use($book,$para,$word_start,$word_end){
+			$channels =  Sentence::where('book_id',$book)
+							->where('paragraph',$para)
+							->where('word_start',$word_start)
+							->where('word_end',$word_end)
+							->select('channel_uid')
+                            ->groupBy('channel_uid')
+							->get();
+            $channelList = [];
+            foreach ($channels as $key => $value) {
+                # code...
+                $channelList[] = $value->channel_uid;
+            }
+            $channelInfo = Channel::whereIn("uid",$channelList)->select('type')->get();
+            $output["tranNum"]=0;
+            $output["nissayaNum"]=0;
+            $output["commNum"]=0;
+            $output["originNum"]=0;
+            foreach ($channelInfo as $key => $value) {
+                # code...
+                switch($value->type){
+                    case "translation":
+                        $output["tranNum"]++;
+                        break;
+                    case "nissaya":
+                        $output["nissayaNum"]++;
+                        break;
+                    case "commentary":
+                        $output["commNum"]++;
+                        break;
+                    case "original":
+                        $output["originNum"]++;
+                        break;
+                }
+            }
+			return $output;
+
+		});
+
+		$sent["tranNum"] = $channelCount['tranNum'];
+		$sent["nissayaNum"] = $channelCount['nissayaNum'];
+		$sent["commNum"] = $channelCount['commNum'];
+		$sent["originNum"] = $channelCount['originNum'];
+		return $sent;
+	}
+
+    private function markdownRender($input){
+
+    }
+    /**
+     * Update the specified resource in storage.
+     *
+     * @param  \Illuminate\Http\Request  $request
+     * @param  \App\Models\Sentence  $sentence
+     * @return \Illuminate\Http\Response
+     */
+    public function update(Request $request, Sentence $sentence)
+    {
+        //
+    }
+
+    /**
+     * Remove the specified resource from storage.
+     *
+     * @param  \App\Models\Sentence  $sentence
+     * @return \Illuminate\Http\Response
+     */
+    public function destroy(Sentence $sentence)
+    {
+        //
+    }
+}

+ 182 - 0
app/Http/Controllers/CourseController.php

@@ -0,0 +1,182 @@
+<?php
+
+namespace App\Http\Controllers;
+
+use App\Models\Course;
+use App\Models\CourseMember;
+use Illuminate\Http\Request;
+use App\Http\Api\AuthApi;
+use App\Http\Api\StudioApi;
+
+class CourseController extends Controller
+{
+    /**
+     * Display a listing of the resource.
+     *
+     * @return \Illuminate\Http\Response
+     */
+    public function index(Request $request)
+    {
+        //
+		$result=false;
+		$indexCol = ['id','title','subtitle','cover','content','content_type','teacher','start_at','end_at','updated_at','created_at'];
+		switch ($request->get('view')) {
+            case 'create':
+	            # 获取 studio 建立的所有 course
+                $user = AuthApi::current($request);
+                if(!$user){
+                    return $this->error(__('auth.failed'));
+                }
+                //判断当前用户是否有指定的studio的权限
+                if($user['user_uid'] !== StudioApi::getIdByName($request->get('name'))){
+                    return $this->error(__('auth.failed'));
+                }
+
+                $table = Course::where('studio_id', $user["user_uid"]);
+				break;
+            case 'study':
+                //我学习的课程
+                $course = CourseMember::where('user_id',$user["user_uid"])
+                                      ->where('role','member')
+                                      ->select('course_id')
+                                      ->get();
+                $courseId = [];
+                foreach ($course as $key => $value) {
+                    # code...
+                    $courseId[] = $value->course_id;
+                }
+                $table = Course::whereIn('id', $courseId);
+                break;
+        }
+        $table = $table->select($indexCol);
+        if(isset($_GET["search"])){
+            $table = $table->where('title', 'like', $_GET["search"]."%");
+        }
+        $count = $table->count();
+        if(isset($_GET["order"]) && isset($_GET["dir"])){
+            $table = $table->orderBy($_GET["order"],$_GET["dir"]);
+        }else{
+            if($request->get('view') === 'studio_list'){
+                $table = $table->orderBy('count','desc');
+            }else{
+                $table = $table->orderBy('updated_at','desc');
+            }
+        }
+
+        if(isset($_GET["limit"])){
+            $offset = 0;
+            if(isset($_GET["offset"])){
+                $offset = $_GET["offset"];
+            }
+            $table = $table->skip($offset)->take($_GET["limit"]);
+        }
+        $result = $table->get();
+		if($result){
+			return $this->ok(["rows"=>$result,"count"=>$count]);
+		}else{
+			return $this->error("没有查询到数据");
+		}
+    }
+
+    /**
+     * Store a newly created resource in storage.
+     *
+     * @param  \Illuminate\Http\Request  $request
+     * @return \Illuminate\Http\Response
+     */
+    public function store(Request $request)
+    {
+        //
+        $user = AuthApi::current($request);
+        if(!$user){
+            return $this->error(__('auth.failed'));
+        }
+        //判断当前用户是否有指定的studio的权限
+        if($user['user_uid'] !== StudioApi::getIdByName($request->get('studio'))){
+            return $this->error(__('auth.failed'));
+        }
+        //查询是否重复
+        if(Course::where('title',$request->get('title'))->where('studio_id',$user['user_uid'])->exists()){
+            return $this->error(__('validation.exists',['name']));
+        }
+
+        $course = new Course;
+        $course->title = $request->get('title');
+        $course->studio_id = $user['user_uid'];
+        $course->save();
+        return $this->ok($course);
+    }
+
+    /**
+     * Display the specified resource.
+     *
+     * @param  \App\Models\Course  $course
+     * @return \Illuminate\Http\Response
+     */
+    public function show(Course $course)
+    {
+        //
+        return $this->ok($course);
+
+    }
+
+    /**
+     * Update the specified resource in storage.
+     *
+     * @param  \Illuminate\Http\Request  $request
+     * @param  \App\Models\Course  $course
+     * @return \Illuminate\Http\Response
+     */
+    public function update(Request $request, Course $course)
+    {
+        //
+        $user = AuthApi::current($request);
+        if(!$user){
+            return $this->error(__('auth.failed'));
+        }
+        //判断当前用户是否有指定的studio的权限
+        if($user['user_uid'] !== StudioApi::getIdByName($request->get('studio'))){
+            return $this->error(__('auth.failed'));
+        }
+        //查询标题是否重复
+        if(Course::where('title',$request->get('title'))->where('studio_id',$user['user_uid'])->exists()){
+            return $this->error(__('validation.exists',['name']));
+        }
+        $course->title = $request->get('title');
+        $course->subtitle = $request->get('subtitle');
+        $course->cover = $request->get('cover');
+        $course->content = $request->get('content');
+        $course->teacher = $request->get('teacher');
+        $course->start_at = $request->get('start_at');
+        $course->end_at = $request->get('end_at');
+        $course->save();
+        return $this->ok($course);
+    }
+
+    /**
+     * Remove the specified resource from storage.
+     *
+     * @param  \App\Models\Course  $course
+     * @return \Illuminate\Http\Response
+     */
+    public function destroy(Course $course)
+    {
+        //
+        $user = AuthApi::current($request);
+        if(!$user){
+            return $this->error(__('auth.failed'));
+        }
+        //判断当前用户是否有指定的studio的权限
+        if($user['user_uid'] !== StudioApi::getIdByName($request->get('studio'))){
+            return $this->error(__('auth.failed'));
+        }
+        $delete = 0;
+        DB::transaction(function() use($delete){
+            //删除group member
+            $memberDelete = CourseMember::where('course_id',$course->id)->delete();
+            $delete = $course->delete();
+        });
+
+        $this->ok($delete);
+    }
+}

+ 138 - 0
app/Http/Controllers/CourseMemberController.php

@@ -0,0 +1,138 @@
+<?php
+
+namespace App\Http\Controllers;
+
+use App\Models\CourseMember;
+use Illuminate\Http\Request;
+use App\Http\Resources\CourseMemberResource;
+use App\Http\Api\AuthApi;
+
+class CourseMemberController extends Controller
+{
+    /**
+     * Display a listing of the resource.
+     *
+     * @return \Illuminate\Http\Response
+     */
+    public function index(Request $request)
+    {
+        //
+        $result=false;
+		$indexCol = ['id','user_id','course_id','role','status','updated_at','created_at'];
+		switch ($request->get('view')) {
+            case 'course':
+	            # 获取 course 内所有 成员
+                $user = AuthApi::current($request);
+                if($user){
+                    return $this->error(__('auth.failed'));
+                }
+                //TODO 判断当前用户是否有指定的 course 的权限
+                $table = CourseMember::where('course_id', $request->get('id'));
+				break;
+        }
+        if(isset($_GET["search"])){
+            $table = $table->where('title', 'like', $_GET["search"]."%");
+        }
+        $count = $table->count();
+        if(isset($_GET["order"]) && isset($_GET["dir"])){
+            $table = $table->orderBy($_GET["order"],$_GET["dir"]);
+        }else{
+            $table = $table->orderBy('updated_at','desc');
+        }
+
+        if(isset($_GET["limit"])){
+            $offset = 0;
+            if(isset($_GET["offset"])){
+                $offset = $_GET["offset"];
+            }
+            $table = $table->skip($offset)->take($_GET["limit"]);
+        }
+        $result = $table->get();
+
+		if($result){
+			return $this->ok(["rows"=>GroupMemberResource::collection($result),"count"=>$count]);
+		}else{
+			return $this->error("没有查询到数据");
+		}
+    }
+
+    /**
+     * Store a newly created resource in storage.
+     *
+     * @param  \Illuminate\Http\Request  $request
+     * @return \Illuminate\Http\Response
+     */
+    public function store(Request $request)
+    {
+        //
+        $validated = $request->validate([
+            'user_id' => 'required',
+            'course_id' => 'required',
+            'role' => 'required',
+        ]);
+        //查找重复的项目
+        if(CourseMember::where('course_id', $validated['course_id'])
+                      ->where('user_id',$validated['user_id'])
+                      ->exists()){
+            return $this->error('member exists');
+        }
+        $newMember = new CourseMember();
+        $newMember->user_id = $validated['user_id'];
+        $newMember->course_id = $validated['course_id'];
+        $newMember->role = $validated['role'];
+        $newMember->save();
+        return $this->ok(new CourseMemberResource($newMember));
+
+    }
+
+    /**
+     * Display the specified resource.
+     *
+     * @param  \App\Models\CourseMember  $courseMember
+     * @return \Illuminate\Http\Response
+     */
+    public function show(CourseMember $courseMember)
+    {
+        //
+    }
+
+    /**
+     * Update the specified resource in storage.
+     *
+     * @param  \Illuminate\Http\Request  $request
+     * @param  \App\Models\CourseMember  $courseMember
+     * @return \Illuminate\Http\Response
+     */
+    public function update(Request $request, CourseMember $courseMember)
+    {
+        //
+    }
+
+    /**
+     * Remove the specified resource from storage.
+     *
+     * @param  \Illuminate\Http\Request  $request
+     * @param  \App\Models\CourseMember  $courseMember
+     * @return \Illuminate\Http\Response
+     */
+    public function destroy(Request $request,CourseMember $courseMember)
+    {
+        //查看删除者有没有删除权限
+        //查询删除者的权限
+        $currUser = AuthApi::current($request);
+        if(!$currUser){
+            return $this->error(__('auth.failed'));
+        }
+
+        $currUser = CourseMember::where('course_id',$courseMember->course_id)
+                        ->where('user_id',$currUser["user_uid"])
+                        ->select('role')->first();
+        if(!$currUser || $currUser->role ==="member"){
+            //普通成员没有删除权限
+            return $this->error(__('auth.failed'));
+        }
+
+        $delete = $courseMember->delete();
+        return $this->ok($delete);
+    }
+}

+ 139 - 66
app/Http/Controllers/DhammaTermController.php

@@ -3,10 +3,13 @@
 namespace App\Http\Controllers;
 
 use App\Models\DhammaTerm;
+use App\Models\Channel;
 use Illuminate\Http\Request;
 use Illuminate\Support\Facades\Cache;
 use Illuminate\Support\Facades\DB;
 use Illuminate\Support\Str;
+use App\Http\Api\AuthApi;
+use App\Http\Api\StudioApi;
 
 class DhammaTermController extends Controller
 {
@@ -18,9 +21,72 @@ class DhammaTermController extends Controller
     public function index(Request $request)
     {
         $result=false;
-		$indexCol = ['id','guid','word','word_en','meaning','other_meaning','note','language','channal','updated_at'];
+		$indexCol = ['id','guid','word','meaning','other_meaning','note','language','channal','created_at','updated_at'];
 
 		switch ($request->get('view')) {
+            case 'create-by-channel':
+                # 新建术语时。根据术语所在channel 给出新建术语所需数据。如语言,备选意思等。
+                #获取channel信息
+                $currChannel = Channel::where('uid',$request->get('channel'))->first();
+                if(!$currChannel){
+                    return $this->error(__('auth.failed'));
+                }
+                #TODO 查询studio信息
+                #获取同studio的channel列表
+                $studioChannels = Channel::where('owner_uid',$currChannel->owner_uid)
+                                        ->select(['name','uid'])
+                                        ->get();
+                #获取全网意思列表
+                $meanings = DhammaTerm::where('word',$request->get('word'))
+                                        ->where('language',$currChannel->lang)
+                                        ->select(['meaning','other_meaning'])
+                                        ->get();
+                $meaningList=[];
+                foreach ($meanings as $key => $value) {
+                    # code...
+                    $meaning1 = [$value->meaning];
+
+                    if(!empty($value->other_meaning)){
+                        $meaning2 = \explode(',',$value->other_meaning);
+                        $meaning1 = array_merge($meaning1,$meaning2);
+                    }
+                    foreach ($meaning1 as $key => $value) {
+                        # code...
+                        if(isset($meaningList[$value])){
+                            $meaningList[$value]++;
+                        }else{
+                            $meaningList[$value] = 1;
+                        }
+                    }
+                }
+                $meaningCount = [];
+                foreach ($meaningList as $key => $value) {
+                    # code...
+                    $meaningCount[] = ['meaning'=>$key,'count'=>$value];
+                }
+                return $this->ok([
+                    "word"=>$request->get('word'),
+                    "meaningCount"=>$meaningCount,
+                    "studioChannels"=>$studioChannels,
+                    "language"=>$currChannel->lang,
+                ]);
+                break;
+            case 'studio':
+				# 获取studio内所有channel
+                $search = $request->get('search');
+                $user = AuthApi::current($request);
+                if($user){
+                    //判断当前用户是否有指定的studio的权限
+                    if($user['user_uid'] === StudioApi::getIdByName($request->get('name'))){
+                        $table = DhammaTerm::select($indexCol)
+                                    ->where('owner', $user["user_uid"]);
+                    }else{
+                        return $this->error(__('auth.failed'));
+                    }
+                }else{
+                    return $this->error(__('auth.failed'));
+                }
+				break;
             case 'show':
                 return $this->ok(DhammaTerm::find($request->get('id')));
                 break;
@@ -30,32 +96,10 @@ class DhammaTermController extends Controller
                 $search = $request->get('search');
 				$table = DhammaTerm::select($indexCol)
 									->where('owner', $userUid);
-				if(!empty($search)){
-					$table->where('word', 'like', $search."%")
-                          ->orWhere('word_en', 'like', $search."%")
-                          ->orWhere('meaning', 'like', "%".$search."%");
-				}
-				if(!empty($request->get('order')) && !empty($request->get('dir'))){
-					$table->orderBy($request->get('order'),$request->get('dir'));
-				}else{
-					$table->orderBy('updated_at','desc');
-				}
-				$count = $table->count();
-				if(!empty($request->get('limit'))){
-					$offset = 0;
-					if(!empty($request->get("offset"))){
-						$offset = $request->get("offset");
-					}
-					$table->skip($offset)->take($request->get('limit'));
-				}
-				$result = $table->get();
 				break;
 			case 'word':
-				$result = DhammaTerm::select($indexCol)
-									->where('word', $request->get("word"))
-									->orderBy('created_at','desc')
-									->get();
-                $count = count($result);
+				$table = DhammaTerm::select($indexCol)
+									->where('word', $request->get("word"));
 				break;
             case 'hot-meaning':
                 $key='term/hot_meaning';
@@ -65,7 +109,7 @@ class DhammaTermController extends Controller
                                 ->where('language',$request->get("language"))
                                 ->groupby('word')
                                 ->get();
-                    
+
                     foreach ($words as $key => $word) {
                         # code...
                         $result = DhammaTerm::select(DB::raw('count(*) as word_count, meaning'))
@@ -92,6 +136,26 @@ class DhammaTermController extends Controller
 				# code...
 				break;
 		}
+        if(!empty($search)){
+            $table->where('word', 'like', $search."%")
+                  ->orWhere('word_en', 'like', $search."%")
+                  ->orWhere('meaning', 'like', "%".$search."%");
+        }
+        if(!empty($request->get('order')) && !empty($request->get('dir'))){
+            $table->orderBy($request->get('order'),$request->get('dir'));
+        }else{
+            $table->orderBy('updated_at','desc');
+        }
+        $count = $table->count();
+        if(!empty($request->get('limit'))){
+            $offset = 0;
+            if(!empty($request->get("offset"))){
+                $offset = $request->get("offset");
+            }
+            $table->skip($offset)->take($request->get('limit'));
+        }
+        $result = $table->get();
+
 		if($result){
 			return $this->ok(["rows"=>$result,"count"=>$count]);
 		}else{
@@ -119,57 +183,66 @@ class DhammaTermController extends Controller
         // process the login
         if ($validator->fails()) {
             return $this->error($validator);
-        } else {
-            #查询重复的
-            /*
-            重复判定:
-            一个channel下面word+tag+language 唯一
-            */
-            $table = DhammaTerm::where('owner', $_COOKIE["user_uid"])
-                    ->where('word',$request->get("word"))
-                    ->where('tag',$request->get("tag"));
-            if($request->get("channel")){
-                $isDoesntExist = $table->where('channel',$request->get("channel"))
-                      ->doesntExist();
-            }else{
-                $isDoesntExist = $table->where('language',$request->get("language"))
+        }
+
+        #查询重复的
+        /*
+        重复判定:
+        一个channel下面word+tag+language 唯一
+        */
+        $table = DhammaTerm::where('owner', $_COOKIE["user_uid"])
+                ->where('word',$request->get("word"))
+                ->where('tag',$request->get("tag"));
+        if($request->get("channel")){
+            $isDoesntExist = $table->where('channel',$request->get("channel"))
                     ->doesntExist();
-            }
-	
-            if($isDoesntExist){
-                #不存在插入数据
-                $term = new DhammaTerm;
-                $term->id=app('snowflake')->id();
-                $term->guid=Str::uuid();
-                $term->word=$request->get("word");
-                $term->meaning=$request->get("meaning");
-                $term->save();
-                return $this->ok($data);
-
-            }else{
-                return $this->error("word existed");
-            }
-            // store
-            /*
-            $data = $request->all();
-            $data['id'] = app('snowflake')->id();
-            $data['guid'] = Str::uuid();
-            DhammaTerm::create($data);
-            */
-            
+        }else{
+            $isDoesntExist = $table->where('language',$request->get("language"))
+                ->doesntExist();
         }
+
+        if($isDoesntExist){
+            #不存在插入数据
+            $term = new DhammaTerm;
+            $term->id=app('snowflake')->id();
+            $term->guid=Str::uuid();
+            $term->word=$request->get("word");
+            $term->meaning=$request->get("meaning");
+            $term->save();
+            return $this->ok($data);
+
+        }else{
+            return $this->error("word existed");
+        }
+        // store
+        /*
+        $data = $request->all();
+        $data['id'] = app('snowflake')->id();
+        $data['guid'] = Str::uuid();
+        DhammaTerm::create($data);
+        */
+
+
     }
 
     /**
      * Display the specified resource.
      *
-     * @param  \App\Models\DhammaTerm  $dhammaTerm
+     * @param  string  $id
      * @return \Illuminate\Http\Response
      */
-    public function show(DhammaTerm $dhammaTerm)
+    public function show(Request  $request,$id)
     {
         //
-        return $dhammaTerm;
+		$indexCol = ['id','guid','word','meaning','other_meaning','note','language','channal','created_at','updated_at'];
+
+		$result  = DhammaTerm::select($indexCol)->where('guid', $id)->first();
+		if($result){
+			return $this->ok($result);
+		}else{
+			return $this->error("没有查询到数据");
+		}
+
     }
 
     /**

+ 136 - 0
app/Http/Controllers/DictController.php

@@ -0,0 +1,136 @@
+<?php
+
+namespace App\Http\Controllers;
+
+use App\Models\UserDict;
+use App\Models\DictInfo;
+use Illuminate\Http\Request;
+
+require_once __DIR__."/../../../public/app/dict/grm_abbr.php";
+
+
+class DictController extends Controller
+{
+    /**
+     * Display a listing of the resource.
+     *
+     * @return \Illuminate\Http\Response
+     */
+    public function index(Request $request)
+    {
+        //
+        $output = [];
+        $wordDataOutput = [];
+        $dictListOutput = [];
+        $caseListOutput = [];
+		$indexCol = ['word','note','dict_id'];
+
+        $word = $request->get('word');
+        $result = UserDict::select($indexCol)->where('word',$word)->where('source','_PAPER_')->get();
+        $anchor = $word;
+        $wordData=[
+            'word'=> $word,
+            'factors'=> "",
+            'parents'=> "",
+            'case'=> [],
+            'anchor'=> $anchor,
+            'dict' => [],
+        ];
+        $dictList=[
+            'href'=> '#'.$anchor,
+            'title'=> "{$word}",
+        ];
+        foreach ($result as $key => $value) {
+            # code...
+            $dictInfo= DictInfo::find($value->dict_id);
+
+            $anchor = "{$word}-{$dictInfo->shortname}";
+            $wordData['dict'][] = [
+                'dictname'=> $dictInfo->name,
+                'word'=> $word,
+                'note'=> $this->GrmAbbr($value->note,0),
+                'anchor'=> $anchor,
+            ];
+            $dictList['children'][] = [
+                'href'=> '#'.$anchor,
+                'title'=> "{$dictInfo->shortname}",
+            ];
+        }
+        $wordDataOutput[]=$wordData;
+        $dictListOutput[]=$dictList;
+
+
+        $output['words'] = $wordDataOutput;
+        $output['dictlist'] = $dictListOutput;
+        $output['caselist'] = $caseListOutput;
+        //TODO 加变格查询
+        //$result = UserDict::select('word')->where('word','like',"{$word}%")->groupBy('word')->get();
+        //$output['like'] = $result;
+
+        return $this->ok($output);
+    }
+
+    /**
+     * Store a newly created resource in storage.
+     *
+     * @param  \Illuminate\Http\Request  $request
+     * @return \Illuminate\Http\Response
+     */
+    public function store(Request $request)
+    {
+        //
+    }
+
+    /**
+     * Display the specified resource.
+     *
+     * @param  \App\Models\UserDict  $userDict
+     * @return \Illuminate\Http\Response
+     */
+    public function show(UserDict $userDict)
+    {
+        //
+    }
+
+    /**
+     * Update the specified resource in storage.
+     *
+     * @param  \Illuminate\Http\Request  $request
+     * @param  \App\Models\UserDict  $userDict
+     * @return \Illuminate\Http\Response
+     */
+    public function update(Request $request, UserDict $userDict)
+    {
+        //
+    }
+
+    /**
+     * Remove the specified resource from storage.
+     *
+     * @param  \App\Models\UserDict  $userDict
+     * @return \Illuminate\Http\Response
+     */
+    public function destroy(UserDict $userDict)
+    {
+        //
+    }
+
+    private function GrmAbbr($input,$dictid){
+        $mean = $input;
+
+        foreach (GRM_ABBR as $key => $value) {
+            # code...
+            if($dictid !== 0){
+                if($value["dictid"]=== $dictid && strpos($input,$value["abbr"]."|") == false){
+                    $mean = str_ireplace($value["abbr"],"|@{$value["abbr"]}-grammar_{$value["replace"]}",$mean);
+                }
+            }else{
+                if( strpos($mean,"|@".$value["abbr"]) == false){
+                    $mean = str_ireplace($value["abbr"],"|@{$value["abbr"]}-grammar_{$value["replace"]}|",$mean);
+                }
+            }
+
+        }
+        return $mean;
+    }
+}

+ 211 - 0
app/Http/Controllers/DiscussionController.php

@@ -0,0 +1,211 @@
+<?php
+
+namespace App\Http\Controllers;
+
+use App\Models\Discussion;
+use App\Models\Wbw;
+use App\Models\WbwBlock;
+use App\Models\PaliSentence;
+use Illuminate\Http\Request;
+use App\Http\Resources\DiscussionResource;
+use App\Http\Api\MdRender;
+
+class DiscussionController extends Controller
+{
+    /**
+     * Display a listing of the resource.
+     *
+     * @return \Illuminate\Http\Response
+     */
+    public function index(Request $request)
+    {
+        //
+		switch ($request->get('view')) {
+            case 'question-by-topic':
+                $topic = Discussion::where('id',$request->get('id'))->select('res_id')->first();
+                if(!$topic){
+			        return $this->error("无效的id");
+                }
+                $table = Discussion::where('res_id',$topic->res_id)->where('parent',null);
+                break;
+            case 'question':
+                $table = Discussion::where('res_id',$request->get('id'))->where('parent',null);
+                break;
+            case 'answer':
+                $table = Discussion::where('parent',$request->get('id'));
+                break;
+            case 'all':
+                $table = Discussion::where('parent',null);
+                break;
+        }
+        if(!empty($search)){
+            $table->where('title', 'like', $search."%");
+        }
+        if(!empty($request->get('order')) && !empty($request->get('dir'))){
+            $table->orderBy($request->get('order'),$request->get('dir'));
+        }else{
+            $table->orderBy('updated_at','asc');
+        }
+        $count = $table->count();
+        if(!empty($request->get('limit'))){
+            $offset = 0;
+            if(!empty($request->get("offset"))){
+                $offset = $request->get("offset");
+            }
+            $table->skip($offset)->take($request->get('limit'));
+        }
+        $result = $table->get();
+        if($result){
+			return $this->ok(["rows"=>DiscussionResource::collection($result),"count"=>$count]);
+		}else{
+			return $this->error("没有查询到数据");
+		}
+    }
+
+    /**
+     * Store a newly created resource in storage.
+     *
+     * @param  \Illuminate\Http\Request  $request
+     * @return \Illuminate\Http\Response
+     */
+    public function store(Request $request)
+    {
+        $user = \App\Http\Api\AuthApi::current($request);
+        if(!$user){
+            return $this->error(__('auth.failed'));
+        }
+        //
+        // validate
+        // read more on validation at http://laravel.com/docs/validation
+        $rules = array(
+            'res_id' => 'required',
+            'res_type' => 'required',
+        );
+        if(!$request->has('parent')){
+            $rules['title'] = 'required';
+        }
+
+        $validated = $request->validate($rules);
+
+        $discussion = new Discussion;
+        $discussion->res_id = $request->get('res_id');
+        $discussion->res_type = $request->get('res_type');
+        $discussion->title = $request->get('title',null);
+        $discussion->content = $request->get('content',null);
+        $discussion->parent = $request->get('parent',null);
+        $discussion->editor_uid = $user['user_uid'];
+        $discussion->save();
+        //更新parent children_count
+        if($request->has('parent')){
+            $parent = Discussion::find($request->get('parent'));
+            if($parent){
+                $parent->increment('children_count',1);
+                $parent->save();
+            }
+        }
+
+        return $this->ok(new DiscussionResource($discussion));
+    }
+
+    /**
+     * Display the specified resource.
+     *
+     * @param  \App\Models\Discussion  $discussion
+     * @return \Illuminate\Http\Response
+     */
+    public function show(Discussion $discussion)
+    {
+        //
+        return $this->ok(new DiscussionResource($discussion));
+
+    }
+
+        /**
+     * 获取discussion 锚点的数据。以句子为最小单位,逐词解析也要显示单词所在的句子
+     *
+     * @param  string  $id
+     * @return \Illuminate\Http\Response
+     */
+    public function anchor($id)
+    {
+        //
+        $discussion = Discussion::find($id);
+        switch ($discussion->res_type) {
+            case 'wbw':
+                # 从逐词解析表获取逐词解析数据
+                $wbw = Wbw::where('uid',$discussion->res_id)->first();
+                if(!$wbw){
+                    return $this->error('no wbw data');
+                }
+                $wbwBlock = WbwBlock::where('uid',$wbw->block_uid)->first();
+                if(!$wbwBlock){
+                    return $this->error('no wbwBlock data');
+                }
+                $sent = PaliSentence::where('book',$wbw->book_id)
+                                    ->where('paragraph',$wbw->paragraph)
+                                    ->where('word_begin','<=',$wbw->wid)
+                                    ->where('word_end','>=',$wbw->wid)
+                                    ->first();
+                if(!$sent){
+                    return $this->error('no sent data');
+                }
+                $sentId = "{$sent['book']}-{$sent['paragraph']}-{$sent['word_begin']}-{$sent['word_end']}";
+                $channel = $wbwBlock->channel_uid;
+                $content = MdRender::render("{{".$sentId."}}",$channel);
+                return $this->ok($content);
+                break;
+
+            default:
+                # code...
+                break;
+        }
+        return $this->ok();
+
+    }
+    /**
+     * Update the specified resource in storage.
+     *
+     * @param  \Illuminate\Http\Request  $request
+     * @param  \App\Models\Discussion  $discussion
+     * @return \Illuminate\Http\Response
+     */
+    public function update(Request $request, Discussion $discussion)
+    {
+        //
+        $user = \App\Http\Api\AuthApi::current($request);
+        if(!$user){
+            return $this->error(__('auth.failed'));
+        }
+        //
+        if($discussion->editor !== $user['user_uid']){
+            return $this->error(__('auth.failed'));
+        }
+        $discussion->title = $request->get('title',null);
+        $discussion->content = $request->get('content',null);
+        $discussion->editor_uid = $user['user_uid'];
+        $discussion->save();
+        return $this->ok($discussion);
+
+    }
+
+    /**
+     * Remove the specified resource from storage.
+     *
+     * @param  \App\Models\Discussion  $discussion
+     * @return \Illuminate\Http\Response
+     */
+    public function destroy(Discussion $discussion)
+    {
+        //
+        $user = \App\Http\Api\AuthApi::current($request);
+        if(!$user){
+            return $this->error(__('auth.failed'));
+        }
+        //TODO 其他有权限的人也可以删除
+        if($discussion->editor !== $user['user_uid']){
+            return $this->error(__('auth.failed'));
+        }
+        $delete = $discussion->delete();
+        return $this->ok($delete);
+    }
+}

+ 121 - 0
app/Http/Controllers/ExportWbwController.php

@@ -0,0 +1,121 @@
+<?php
+
+namespace App\Http\Controllers;
+
+use App\Models\Wbw;
+use App\Models\WbwBlock;
+use Illuminate\Http\Request;
+
+class ExportWbwController extends Controller
+{
+    /**
+     * Display a listing of the resource.
+     *
+     * @return \Illuminate\Http\Response
+     */
+    public function index(Request $request)
+    {
+        //
+        $sent = explode("\n",$request->get("sent"));
+        $output = [];
+        foreach ($sent as $key => $value) {
+            # code...
+            $sent = [];
+            $value = trim($value);
+            $sentId = explode("-",$value);
+            //先查wbw block 拿到block id
+            $block = WbwBlock::where('book_id',$sentId[0])
+                        ->where('paragraph',$sentId[1])
+                        ->select('uid')
+                        ->where('channel_uid',$request->get("channel"))->first();
+            if(!$block){
+                continue;
+            }
+            $wbwdata = Wbw::where('book_id',$sentId[0])
+                        ->where('paragraph',$sentId[1])
+                        ->where('wid','>=',$sentId[2])
+                        ->where('wid','<=',$sentId[3])
+                        ->where('block_uid',$block->uid)
+                        ->get();
+            $sent['sid']=$value;
+            $sent['data']=[];
+            foreach ($wbwdata as  $wbw) {
+                # code...
+                $data = str_replace("&nbsp;",' ',$wbw->data);
+                $data = str_replace("<br>",' ',$data);
+
+                $xmlString = "<root>" . $data . "</root>";
+                try{
+                    $xmlWord = simplexml_load_string($xmlString);
+                }catch(Exception $e){
+                    continue;
+                }
+
+                $wordsList = $xmlWord->xpath('//word');
+                foreach ($wordsList as $word) {
+                    $type = $word->type->__toString();
+                    $style = $word->style->__toString();
+                    if($type !== '.ctl.' && $style !== 'note'){
+                        $sent['data'][]=[
+                        'pali'=>$word->real->__toString(),
+                    'mean' => $word->mean->__toString(),
+                    'type' => ltrim($type,'.'),
+                    'grammar' => ltrim(str_replace('$.',',',$word->gramma->__toString()),'.') ,
+                    'parent' => $word->parent->__toString(),
+                    'factors' => $word->org->__toString(),
+                    'factormeaning' => $word->om->__toString()
+                    ];
+                    }
+
+                }
+            }
+            $output[]=$sent;
+        }
+        return view('export_wbw',['sentences' => $output] );
+    }
+
+    /**
+     * Store a newly created resource in storage.
+     *
+     * @param  \Illuminate\Http\Request  $request
+     * @return \Illuminate\Http\Response
+     */
+    public function store(Request $request)
+    {
+        //
+    }
+
+    /**
+     * Display the specified resource.
+     *
+     * @param  \App\Models\Wbw  $wbw
+     * @return \Illuminate\Http\Response
+     */
+    public function show(Wbw $wbw)
+    {
+        //
+    }
+
+    /**
+     * Update the specified resource in storage.
+     *
+     * @param  \Illuminate\Http\Request  $request
+     * @param  \App\Models\Wbw  $wbw
+     * @return \Illuminate\Http\Response
+     */
+    public function update(Request $request, Wbw $wbw)
+    {
+        //
+    }
+
+    /**
+     * Remove the specified resource from storage.
+     *
+     * @param  \App\Models\Wbw  $wbw
+     * @return \Illuminate\Http\Response
+     */
+    public function destroy(Wbw $wbw)
+    {
+        //
+    }
+}

+ 206 - 0
app/Http/Controllers/GroupController.php

@@ -0,0 +1,206 @@
+<?php
+
+namespace App\Http\Controllers;
+
+use App\Models\GroupInfo;
+use App\Models\GroupMember;
+use Illuminate\Http\Request;
+use Illuminate\Support\Str;
+use Illuminate\Support\Facades\Log;
+use Illuminate\Support\Facades\DB;
+use App\Http\Api\AuthApi;
+use App\Http\Api\StudioApi;
+
+
+require_once __DIR__.'/../../../public/app/ucenter/function.php';
+class GroupController extends Controller
+{
+    /**
+     * Display a listing of the resource.
+     *
+     * @return \Illuminate\Http\Response
+     */
+    public function index(Request $request)
+    {
+        //
+        $userinfo = new \UserInfo();
+		$result=false;
+		$indexCol = ['uid','name','description','owner','updated_at','created_at'];
+		switch ($request->get('view')) {
+            case 'studio':
+	            # 获取studio内所有channel
+                $user = AuthApi::current($request);
+                if($user){
+                    //判断当前用户是否有指定的studio的权限
+                    if($user['user_uid'] === StudioApi::getIdByName($request->get('name'))){
+                        $table = GroupInfo::select($indexCol)->where('owner', $user["user_uid"]);
+                    }else{
+                        return $this->error(__('auth.failed'));
+                    }
+                }else{
+                    return $this->error(__('auth.failed'));
+                }
+				break;
+        }
+        if(isset($_GET["search"])){
+            $table = $table->where('title', 'like', $_GET["search"]."%");
+        }
+        $count = $table->count();
+        if(isset($_GET["order"]) && isset($_GET["dir"])){
+            $table = $table->orderBy($_GET["order"],$_GET["dir"]);
+        }else{
+            if($request->get('view') === 'studio_list'){
+                $table = $table->orderBy('count','desc');
+            }else{
+                $table = $table->orderBy('updated_at','desc');
+            }
+        }
+
+        if(isset($_GET["limit"])){
+            $offset = 0;
+            if(isset($_GET["offset"])){
+                $offset = $_GET["offset"];
+            }
+            $table = $table->skip($offset)->take($_GET["limit"]);
+        }
+        $result = $table->get();
+		if($result){
+            foreach ($result as $key => $value) {
+                # code...
+                $value->role = 'owner';
+                $value->studio = [
+                    'id'=>$value->owner,
+                    'nickName'=>$userinfo->getName($value->owner)['nickname'],
+                    'studioName'=>$userinfo->getName($value->owner)['username'],
+                    'avastar'=>'',
+                    'owner' => [
+                        'id'=>$value->owner,
+                        'nickName'=>$userinfo->getName($value->owner)['nickname'],
+                        'userName'=>$userinfo->getName($value->owner)['username'],
+                        'avastar'=>'',
+                    ]
+                ];
+            }
+			return $this->ok(["rows"=>$result,"count"=>$count]);
+		}else{
+			return $this->error("没有查询到数据");
+		}
+
+    }
+
+    /**
+     * Store a newly created resource in storage.
+     *
+     * @param  \Illuminate\Http\Request  $request
+     * @return \Illuminate\Http\Response
+     */
+    public function store(Request $request)
+    {
+        //
+        $user = AuthApi::current($request);
+        if(!$user){
+            return $this->error(__('auth.failed'));
+        }
+        //判断当前用户是否有指定的studio的权限
+        if($user['user_uid'] !== StudioApi::getIdByName($request->get('studio'))){
+            return $this->error(__('auth.failed'));
+        }
+        //查询是否重复
+        if(GroupInfo::where('name',$request->get('name'))->where('owner',$user['user_uid'])->exists()){
+            return $this->error(__('validation.exists',['name']));
+        }
+
+        $group = new GroupInfo;
+        $group->id = app('snowflake')->id();
+        $group->name = $request->get('name');
+        $group->owner = $user['user_uid'];
+        $group->create_time = time()*1000;
+        $group->modify_time = time()*1000;
+        $group->save();
+        return $this->ok($group);
+    }
+
+    /**
+     * Display the specified resource.
+     *
+     * @param  string  $id
+     * @return \Illuminate\Http\Response
+     */
+    public function show(Request  $request,$id)
+    {
+        //
+		$indexCol = ['uid','name','description','owner','updated_at','created_at'];
+
+		$result  = GroupInfo::select($indexCol)->where('uid', $id)->first();
+		if(!$result){
+            return $this->error("没有查询到数据");
+		}
+        if($result->status<30){
+            //私有,判断权限
+            $user = AuthApi::current($request);
+            if(!$user){
+                return $this->error(__('auth.failed'));
+            }
+            //判断当前用户是否有指定的studio的权限
+            if($user['user_uid'] !== $result->owner){
+                //非所有者
+                //TODO 判断是否协作
+                return $this->error(__('auth.failed'));
+            }
+        }
+        return $this->ok($result);
+    }
+
+    /**
+     * Update the specified resource in storage.
+     *
+     * @param  \Illuminate\Http\Request  $request
+     * @param  \App\Models\Group  $group
+     * @return \Illuminate\Http\Response
+     */
+    public function update(Request $request, Group $group)
+    {
+        //
+        $user = AuthApi::current($request);
+        if(!$user){
+            return $this->error(__('auth.failed'));
+        }
+        //判断当前用户是否有指定的studio的权限
+        if($user['user_uid'] !== StudioApi::getIdByName($request->get('studio'))){
+            return $this->error(__('auth.failed'));
+        }
+        $group->name = $request->get('name');
+        $group->description = $request->get('description');
+        $group->status = $request->get('status');
+        $group->create_time = time()*1000;
+        $group->modify_time = time()*1000;
+        $group->save();
+        return $this->ok($group);
+    }
+
+    /**
+     * Remove the specified resource from storage.
+     *
+     * @param  \App\Models\Group  $group
+     * @return \Illuminate\Http\Response
+     */
+    public function destroy(Group $group)
+    {
+        //
+        $user = AuthApi::current($request);
+        if(!$user){
+            return $this->error(__('auth.failed'));
+        }
+        //判断当前用户是否有指定的studio的权限
+        if($user['user_uid'] !== StudioApi::getIdByName($request->get('studio'))){
+            return $this->error(__('auth.failed'));
+        }
+        DB::transaction(function(){
+            //删除group member
+            $memberDelete = GroupMember::where('group_id',$group->uid)->delete();
+            $delete = $group->delete();
+        });
+
+        $this->ok('ok');
+    }
+}

+ 164 - 0
app/Http/Controllers/GroupMemberController.php

@@ -0,0 +1,164 @@
+<?php
+
+namespace App\Http\Controllers;
+
+use App\Models\GroupMember;
+use App\Models\GroupInfo;
+use Illuminate\Http\Request;
+use App\Http\Resources\GroupMemberResource;
+use App\Http\Api\AuthApi;
+
+class GroupMemberController extends Controller
+{
+    /**
+     * Display a listing of the resource.
+     *
+     * @return \Illuminate\Http\Response
+     */
+    public function index(Request $request)
+    {
+        //
+		$result=false;
+		$indexCol = ['id','user_id','group_id','power','level','status','updated_at','created_at'];
+		switch ($request->get('view')) {
+            case 'group':
+	            # 获取 group 内所有 成员
+                $user = AuthApi::current($request);
+                if($user){
+                    //TODO 判断当前用户是否有指定的 group 的权限
+
+                    if(GroupInfo::where('uid',$request->get('id'))->where('owner',$user['user_uid'])->exists()){
+                        $table = GroupMember::where('group_id', $request->get('id'));
+                    }else{
+                        return $this->error(__('auth.failed'));
+                    }
+                }else{
+                    return $this->error(__('auth.failed'));
+                }
+				break;
+        }
+        if(isset($_GET["search"])){
+            $table = $table->where('title', 'like', $_GET["search"]."%");
+        }
+        $count = $table->count();
+        if(isset($_GET["order"]) && isset($_GET["dir"])){
+            $table = $table->orderBy($_GET["order"],$_GET["dir"]);
+        }else{
+            $table = $table->orderBy('updated_at','desc');
+        }
+
+        if(isset($_GET["limit"])){
+            $offset = 0;
+            if(isset($_GET["offset"])){
+                $offset = $_GET["offset"];
+            }
+            $table = $table->skip($offset)->take($_GET["limit"]);
+        }
+        $result = $table->get();
+        foreach ($result as $key => $value) {
+            # 找到当前用户
+            if($user["user_uid"]===$value->user_id){
+                switch ($value->power) {
+                    case 0:
+                        $role = "owner";
+                        break;
+                    case 1:
+                        $role = "manager";
+                        break;
+                    case 2:
+                        $role = "member";
+                        break;
+                    default:
+                        $role="unknown";
+                        break;
+                }
+            }
+        }
+
+		if($result){
+			return $this->ok(["rows"=>GroupMemberResource::collection($result),"count"=>$count,'role'=>$role]);
+		}else{
+			return $this->error("没有查询到数据");
+		}
+    }
+
+    /**
+     * Store a newly created resource in storage.
+     *
+     * @param  \Illuminate\Http\Request  $request
+     * @return \Illuminate\Http\Response
+     */
+    public function store(Request $request)
+    {
+        //
+        $validated = $request->validate([
+            'user_id' => 'required',
+            'group_id' => 'required',
+        ]);
+        //查找重复的项目
+        if(GroupMember::where('group_id', $validated['group_id'])->where('user_id',$validated['user_id'])->exists()){
+            return $this->error('member exists');
+        }
+        $newMember = new GroupMember();
+        $newMember->id=app('snowflake')->id();
+        $newMember->user_id = $validated['user_id'];
+        $newMember->group_id = $validated['group_id'];
+        $newMember->power = 2;
+        $newMember->group_name = GroupInfo::find($validated['group_id'])->name;
+        $newMember->save();
+        return $this->ok(new GroupMemberResource($newMember));
+    }
+
+    /**
+     * Display the specified resource.
+     *
+     * @param  \App\Models\GroupMember  $groupMember
+     * @return \Illuminate\Http\Response
+     */
+    public function show(GroupMember $groupMember)
+    {
+        //
+
+    }
+
+    /**
+     * Update the specified resource in storage.
+     *
+     * @param  \Illuminate\Http\Request  $request
+     * @param  \App\Models\GroupMember  $groupMember
+     * @return \Illuminate\Http\Response
+     */
+    public function update(Request $request, GroupMember $groupMember)
+    {
+        //
+    }
+
+    /**
+     * Remove the specified resource from storage.
+     *@param  \Illuminate\Http\Request  $request
+     * @param  \App\Models\GroupMember  $groupMember
+     * @return \Illuminate\Http\Response
+     */
+    public function destroy(Request $request, GroupMember $groupMember)
+    {
+        //
+        //查看删除者有没有删除权限
+        //查询删除者的权限
+        $currUser = AuthApi::current($request);
+        if(!$currUser){
+            return $this->error(__('auth.failed'));
+        }
+
+        $power = GroupMember::where('group_id',$groupMember->group_id)
+                        ->where('user_id',$currUser["user_uid"])
+                        ->select('power')->first();
+        if(!$power || $power->power>=2){
+            //普通成员没有删除权限
+            return $this->error(__('auth.failed'));
+        }
+
+        $delete = $groupMember->delete();
+        return $this->ok($delete);
+
+    }
+}

+ 70 - 21
app/Http/Controllers/PaliTextController.php

@@ -18,11 +18,12 @@ class PaliTextController extends Controller
     public function index(Request $request)
     {
         //
+        $all_count = 0;
         switch ($request->get('view')) {
             case 'chapter-tag':
                 $tm = (new TagMap)->getTable();
-                $tg = (new Tag)->getTable();     
-                $pt = (new PaliText)->getTable();  
+                $tg = (new Tag)->getTable();
+                $pt = (new PaliText)->getTable();
                 if($request->get('tags') && $request->get('tags')!==''){
                     $tags = explode(',',$request->get('tags'));
                     foreach ($tags as $tag) {
@@ -32,7 +33,7 @@ class PaliTextController extends Controller
                         }
                     }
                 }
-                
+
                 if(isset($tagNames)){
                     $where1 = " where co = ".count($tagNames);
                     $a = implode(",",array_fill(0, count($tagNames), '?')) ;
@@ -43,7 +44,7 @@ class PaliTextController extends Controller
                     $in1 = " ";
                 }
                 $query = "
-                    select tags.id,tags.name,co as count 
+                    select tags.id,tags.name,co as count
                         from (
                             select tm.tag_id,count(*) as co from (
                                 select anchor_id as id from (
@@ -51,13 +52,13 @@ class PaliTextController extends Controller
                                         from $tm as  tm
                                         left join $tg as t on tm.tag_id = t.id
                                         left join $pt as pc on tm.anchor_id = pc.uid
-                                        where tm.table_name  = 'pali_texts' 
+                                        where tm.table_name  = 'pali_texts'
                                         $in1
                                         group by tm.anchor_id
-                                ) T 
+                                ) T
                                     $where1
-                            ) CID 
-                            left join $tm as tm on tm.anchor_id = CID.id 
+                            ) CID
+                            left join $tm as tm on tm.anchor_id = CID.id
                             group by tm.tag_id
                         ) tid
                         left join $tg on $tg.id = tid.tag_id
@@ -73,8 +74,8 @@ class PaliTextController extends Controller
 
             case 'chapter':
                 $tm = (new TagMap)->getTable();
-                $tg = (new Tag)->getTable();     
-                $pt = (new PaliText)->getTable();  
+                $tg = (new Tag)->getTable();
+                $pt = (new PaliText)->getTable();
                 if($request->get('tags') && $request->get('tags')!==''){
                     $tags = explode(',',$request->get('tags'));
                     foreach ($tags as $tag) {
@@ -84,8 +85,8 @@ class PaliTextController extends Controller
                         }
                     }
                 }
-                
-                
+
+
                 if(isset($tagNames)){
                     $where1 = " where co = ".count($tagNames);
                     $a = implode(",",array_fill(0, count($tagNames), '?')) ;
@@ -100,19 +101,19 @@ class PaliTextController extends Controller
                 $query = "
                         select uid as id,book,paragraph,level,toc as title,chapter_strlen,parent,path from (
                             select anchor_id as cid from (
-                                select tm.anchor_id , count(*) as co 
+                                select tm.anchor_id , count(*) as co
                                     from $tm as  tm
                                     left join $tg as t on tm.tag_id = t.id
                                     where tm.table_name  = 'pali_texts'
                                     $in1
                                     group by tm.anchor_id
-                            ) T 
-                                $where1 
-                        ) CID 
-                        left join $pt as pt on CID.cid = pt.uid 
+                            ) T
+                                $where1
+                        ) CID
+                        left join $pt as pt on CID.cid = pt.uid
                         $where2
                         order by book,paragraph";
-                        
+
                     if(isset($param)){
                         $chapters = DB::select($query,$param);
                     }else{
@@ -121,7 +122,54 @@ class PaliTextController extends Controller
 
                 $all_count = count($chapters);
                 break;
-        }
+            case 'chapter_children':
+                $table = PaliText::where('book',$request->get('book'))
+                                ->where('parent',$request->get('para'))
+                                ->where('level','<',8);
+                $all_count = $table->count();
+                $chapters = $table->orderBy('paragraph')->get();
+                break;
+            case 'paragraph':
+                $result = PaliText::where('book',$request->get('book'))->where('paragraph',$request->get('para'))->first();
+                if($result){
+                    return $this->ok($result);
+                }else{
+                    return $this->error("no data");
+                }
+                break;
+
+            case 'book-toc':
+                //获取全书目录
+                $path = PaliText::where('book',$request->get('book'))
+                                ->where('paragraph',$request->get('para'))
+                                ->select('path')->first();
+                if(!$path){
+                    return $this->error("no data");
+                }
+                $json = \json_decode($path->path);
+                $root = null;
+                foreach ($json as $key => $value) {
+                    # code...
+                    if( $value->level == 1 ){
+                        $root = $value;
+                        break;
+                    }
+                }
+                if($root===null){
+                    return $this->error("no data");
+                }
+                //查询书起始段落
+                $rootPara = PaliText::where('book',$root->book)
+                                ->where('paragraph',$root->paragraph)
+                                ->first();
+
+                $table = PaliText::where('book',$rootPara->book)
+                                ->whereBetween('paragraph',[$rootPara->paragraph,($rootPara->paragraph+$rootPara->chapter_len-1)])
+                                ->where('level','<',8);
+                $all_count = $table->count();
+                $chapters = $table->select(['book','paragraph','toc','level'])->orderBy('paragraph')->get();
+                break;
+            }
         if($chapters){
             return $this->ok(["rows"=>$chapters,"count"=>$all_count]);
         }else{
@@ -143,12 +191,13 @@ class PaliTextController extends Controller
     /**
      * Display the specified resource.
      *
-     * @param  \App\Models\PaliText  $paliText
+     * @param  \Illuminate\Http\Request  $request
      * @return \Illuminate\Http\Response
      */
-    public function show(PaliText $paliText)
+    public function show(Request $request)
     {
         //
+
     }
 
     /**

+ 27 - 10
app/Http/Controllers/SentPrController.php

@@ -6,6 +6,7 @@ namespace App\Http\Controllers;
 use App\Models\SentPr;
 use App\Models\Channel;
 use App\Models\PaliSentence;
+use App\Http\Resources\SentPrResource;
 use Illuminate\Http\Request;
 use Illuminate\Support\Facades\Http;
 use Illuminate\Support\Facades\Log;
@@ -19,9 +20,25 @@ class SentPrController extends Controller
      *
      * @return \Illuminate\Http\Response
      */
-    public function index()
+    public function index(Request $request)
     {
         //
+        switch ($request->get('view')) {
+            case 'sent-info':
+                $table = SentPr::where('book_id',$request->get('book'))
+                                ->where('paragraph',$request->get('para'))
+                                ->where('word_start',$request->get('start'))
+                                ->where('word_end',$request->get('end'))
+                                ->where('channel_uid',$request->get('channel'));
+                $all_count = $table->count();
+                $chapters = $table->orderBy('paragraph')->get();
+                break;
+        }
+        if($chapters){
+            return $this->ok(["rows"=>SentPrResource::collection($chapters),"count"=>$all_count]);
+        }else{
+            return $this->error("no data");
+        }
     }
 
     /**
@@ -41,8 +58,8 @@ class SentPrController extends Controller
 
         $data = $request->all();
 
-		
-		#查询是否存在 
+
+		#查询是否存在
 		#同样的内容只能提交一次
 		$exists = SentPr::where('book_id',$data['book'])
 						->where('paragraph',$data['para'])
@@ -67,7 +84,7 @@ class SentPrController extends Controller
 			$new->strlen = mb_strlen($data['text'],"UTF-8");
 			$new->create_time = time()*1000;
 			$new->modify_time = time()*1000;
-			$new->save();			
+			$new->save();
 		}
 
 		$robotMessageOk=false;
@@ -130,13 +147,13 @@ class SentPrController extends Controller
 					default:
 						$strMessage = "";
 						break;
-				}		
+				}
 				$url = "https://qyapi.weixin.qq.com/cgi-bin/webhook/send?key=25dbd74f-c89c-40e5-8cbc-48b1ef7710b8";
 				$param = [
 						"msgtype"=>"markdown",
 						"markdown"=> [
-							"content"=> $strMessage, 
-						], 
+							"content"=> $strMessage,
+						],
 					];
 				Log::info("message:{$strMessage}");
 				if(!empty($strMessage)){
@@ -147,7 +164,7 @@ class SentPrController extends Controller
 					}else{
 						$webHookMessage = "消息发送失败";
 						$robotMessageOk = false;
-					}         					
+					}
 				}else{
 					$webHookMessage = "channel不符";
 					$robotMessageOk = false;
@@ -171,7 +188,7 @@ class SentPrController extends Controller
 						->count();
 		Log::info("count:{$count} webhook-ok={$robotMessageOk}");
 		return $this->ok(["new"=>$info,"count"=>$count,"webhook"=>["message"=>$webHookMessage,"ok"=>$robotMessageOk]]);
-        
+
     }
 
     /**
@@ -213,7 +230,7 @@ class SentPrController extends Controller
 			}else{
 				return $this->error('没有更新');
 			}
-			
+
 		}else{
 			return $this->error('not power');
 		}

+ 38 - 3
app/Http/Controllers/SentenceController.php

@@ -3,7 +3,10 @@
 namespace App\Http\Controllers;
 
 use App\Models\Sentence;
+use App\Models\Channel;
 use Illuminate\Http\Request;
+use Illuminate\Support\Str;
+use App\Http\Resources\SentResource;
 
 class SentenceController extends Controller
 {
@@ -84,7 +87,7 @@ class SentenceController extends Controller
                                 ->where('language',$request->get("language"))
                                 ->groupby('word')
                                 ->get();
-                    
+
                     foreach ($words as $key => $word) {
                         # code...
                         $result = Sentence::select(DB::raw('count(*) as word_count, meaning'))
@@ -165,12 +168,44 @@ class SentenceController extends Controller
      * Update the specified resource in storage.
      *
      * @param  \Illuminate\Http\Request  $request
-     * @param  \App\Models\Sentence  $sentence
+     * @param  string  $id book_para_start_end_channel
      * @return \Illuminate\Http\Response
      */
-    public function update(Request $request, Sentence $sentence)
+    public function update(Request $request,  $id)
     {
         //
+        $param = \explode('_',$id);
+
+        //鉴权
+        $user = \App\Http\Api\AuthApi::current($request);
+        if($user ){
+            $channel = Channel::where('uid',$param[4])->first();
+            if($channel && $channel->owner_uid === $user["user_uid"]){
+                $sent = Sentence::firstOrNew([
+                    "book_id"=>$param[0],
+                    "paragraph"=>$param[1],
+                    "word_start"=>$param[2],
+                    "word_end"=>$param[3],
+                    "channel_uid"=>$param[4],
+                ],[
+                    "id"=>app('snowflake')->id(),
+                    "uid"=>Str::orderedUuid(),
+                ]);
+                $sent->content = $request->get('content');
+                $sent->language = $channel->lang;
+                $sent->status = $channel->status;
+                $sent->editor_uid = $user["user_uid"];
+                $sent->save();
+                return $this->ok(new SentResource($sent));
+            }else{
+                //TODO 判断是否为协作
+                return $this->error(__('auth.failed'));
+            }
+        }else{
+            //非所有者鉴权失败
+
+            return $this->error(__('auth.failed'));
+        }
     }
 
     /**

+ 114 - 0
app/Http/Controllers/ShareController.php

@@ -0,0 +1,114 @@
+<?php
+
+namespace App\Http\Controllers;
+
+use App\Models\Share;
+use App\Models\GroupInfo;
+use Illuminate\Http\Request;
+use App\Http\Resources\ShareResource;
+
+class ShareController extends Controller
+{
+    /**
+     * Display a listing of the resource.
+     *
+     * @return \Illuminate\Http\Response
+     */
+    public function index(Request $request)
+    {
+        //
+        $result=false;
+		$indexCol = ['id','res_id','res_type','power','updated_at','created_at'];
+		switch ($request->get('view')) {
+            case 'group':
+	            # 获取 group 内所有 成员
+                $user = \App\Http\Api\AuthApi::current($request);
+                if($user){
+                    //TODO 判断当前用户是否有指定的 group 的权限
+
+                    if(GroupInfo::where('uid',$request->get('id'))->where('owner',$user['user_uid'])->exists()){
+                        $table = Share::where('cooperator_id', $request->get('id'));
+                    }else{
+                        return $this->error(__('auth.failed'));
+                    }
+                }else{
+                    return $this->error(__('auth.failed'));
+                }
+				break;
+        }
+        if(isset($_GET["search"])){
+            //TODO 搜索资源标题
+            $table = $table->where('title', 'like', $_GET["search"]."%");
+        }
+        $count = $table->count();
+        if(isset($_GET["order"]) && isset($_GET["dir"])){
+            $table = $table->orderBy($_GET["order"],$_GET["dir"]);
+        }else{
+            $table = $table->orderBy('updated_at','desc');
+        }
+
+        if(isset($_GET["limit"])){
+            $offset = 0;
+            if(isset($_GET["offset"])){
+                $offset = $_GET["offset"];
+            }
+            $table = $table->skip($offset)->take($_GET["limit"]);
+        }
+        $result = $table->get();
+        //TODO 获取当前用户的身份
+        $role = "member";
+
+		if($result){
+			return $this->ok(["rows"=>ShareResource::collection($result),"count"=>$count,'role'=>$role]);
+		}else{
+			return $this->error("没有查询到数据");
+		}
+
+
+    }
+
+    /**
+     * Store a newly created resource in storage.
+     *
+     * @param  \Illuminate\Http\Request  $request
+     * @return \Illuminate\Http\Response
+     */
+    public function store(Request $request)
+    {
+        //
+    }
+
+    /**
+     * Display the specified resource.
+     *
+     * @param  \App\Models\Share  $share
+     * @return \Illuminate\Http\Response
+     */
+    public function show(Share $share)
+    {
+        //
+    }
+
+    /**
+     * Update the specified resource in storage.
+     *
+     * @param  \Illuminate\Http\Request  $request
+     * @param  \App\Models\Share  $share
+     * @return \Illuminate\Http\Response
+     */
+    public function update(Request $request, Share $share)
+    {
+        //
+    }
+
+    /**
+     * Remove the specified resource from storage.
+     *
+     * @param  \App\Models\Share  $share
+     * @return \Illuminate\Http\Response
+     */
+    public function destroy(Share $share)
+    {
+        //
+    }
+}

+ 74 - 0
app/Http/Controllers/SuggestionController.php

@@ -0,0 +1,74 @@
+<?php
+
+namespace App\Http\Controllers;
+
+use App\Models\SentPr;
+use App\Http\Api\PaliTextApi;
+use Illuminate\Http\Request;
+
+class SuggestionController extends Controller
+{
+    /**
+     * Display a listing of the resource.
+     *
+     * @return \Illuminate\Http\Response
+     */
+    public function index()
+    {
+        //
+        switch ($request->get('view')) {
+            case 'chapter':
+                $chapter = PaliTextApi::getChapterStartEnd($request->get('book'),$request->get('para'));
+                if(!$chapter){
+                    return $this->error("no data");
+                }
+
+                break;
+        }
+    }
+
+    /**
+     * Store a newly created resource in storage.
+     *
+     * @param  \Illuminate\Http\Request  $request
+     * @return \Illuminate\Http\Response
+     */
+    public function store(Request $request)
+    {
+        //
+    }
+
+    /**
+     * Display the specified resource.
+     *
+     * @param  \App\Models\Article  $article
+     * @return \Illuminate\Http\Response
+     */
+    public function show(Article $article)
+    {
+        //
+    }
+
+    /**
+     * Update the specified resource in storage.
+     *
+     * @param  \Illuminate\Http\Request  $request
+     * @param  \App\Models\Article  $article
+     * @return \Illuminate\Http\Response
+     */
+    public function update(Request $request, Article $article)
+    {
+        //
+    }
+
+    /**
+     * Remove the specified resource from storage.
+     *
+     * @param  \App\Models\Article  $article
+     * @return \Illuminate\Http\Response
+     */
+    public function destroy(Article $article)
+    {
+        //
+    }
+}

+ 81 - 0
app/Http/Controllers/UploadController.php

@@ -0,0 +1,81 @@
+<?php
+
+namespace App\Http\Controllers;
+
+use Illuminate\Http\Request;
+use Illuminate\Support\Str;
+
+
+class UploadController extends Controller
+{
+    /**
+     * Display a listing of the resource.
+     *
+     * @return \Illuminate\Http\Response
+     */
+    public function index()
+    {
+        //
+    }
+
+    /**
+     * Store a newly created resource in storage.
+     *
+     * @param  \Illuminate\Http\Request  $request
+     * @return \Illuminate\Http\Response
+     */
+    public function store(Request $request)
+    {
+        //
+        $request->validate([
+            'file' => 'required',
+        ]);
+        $file = $request->file('file');
+
+       //Move Uploaded File
+        $filename = $file->store('public/upload');
+
+        $json = array(
+            'name' => $filename,
+            'size' => $file->getSize(),
+            'type' => $file->getMimeType(),
+            'url' => str_replace('public','storage',$filename),
+            'uid' => Str::uuid(),
+            );
+        return $this->ok($json);
+    }
+
+    /**
+     * Display the specified resource.
+     *
+     * @param  int  $id
+     * @return \Illuminate\Http\Response
+     */
+    public function show($id)
+    {
+        //
+    }
+
+    /**
+     * Update the specified resource in storage.
+     *
+     * @param  \Illuminate\Http\Request  $request
+     * @param  int  $id
+     * @return \Illuminate\Http\Response
+     */
+    public function update(Request $request, $id)
+    {
+        //
+    }
+
+    /**
+     * Remove the specified resource from storage.
+     *
+     * @param  int  $id
+     * @return \Illuminate\Http\Response
+     */
+    public function destroy($id)
+    {
+        //
+    }
+}

+ 76 - 0
app/Http/Controllers/UserController.php

@@ -0,0 +1,76 @@
+<?php
+
+namespace App\Http\Controllers;
+require_once __DIR__.'/../../../public/app/ucenter/function.php';
+
+use Illuminate\Http\Request;
+use App\Http\Resources\UserResource;
+
+class UserController extends Controller
+{
+    /**
+     * Display a listing of the resource.
+     *
+     * @return \Illuminate\Http\Response
+     */
+    public function index(Request $request)
+    {
+        //
+        switch ($request->get("view")) {
+            case 'key':
+                $userInfo = new \UserInfo();
+                $users = $userInfo->getUserList($request->get("key"));
+                if($users){
+                    return $this->ok(['rows'=>UserResource::collection($users),'count'=>count($users)]);
+                }else{
+                    return $this->error();
+                }
+                break;
+        }
+    }
+
+    /**
+     * Store a newly created resource in storage.
+     *
+     * @param  \Illuminate\Http\Request  $request
+     * @return \Illuminate\Http\Response
+     */
+    public function store(Request $request)
+    {
+        //
+    }
+
+    /**
+     * Display the specified resource.
+     *
+     * @param  int  $id
+     * @return \Illuminate\Http\Response
+     */
+    public function show($id)
+    {
+        //
+    }
+
+    /**
+     * Update the specified resource in storage.
+     *
+     * @param  \Illuminate\Http\Request  $request
+     * @param  int  $id
+     * @return \Illuminate\Http\Response
+     */
+    public function update(Request $request, $id)
+    {
+        //
+    }
+
+    /**
+     * Remove the specified resource from storage.
+     *
+     * @param  int  $id
+     * @return \Illuminate\Http\Response
+     */
+    public function destroy($id)
+    {
+        //
+    }
+}

+ 47 - 30
app/Http/Controllers/UserDictController.php

@@ -6,6 +6,7 @@ use App\Models\UserDict;
 use Illuminate\Http\Request;
 use Illuminate\Support\Facades\Redis;
 use Illuminate\Support\Facades\Log;
+use App\Http\Api;
 
 class UserDictController extends Controller
 {
@@ -18,41 +19,56 @@ class UserDictController extends Controller
     {
         //
 		$result=false;
-		$indexCol = ['id','word','type','grammar','mean','factors','confidence','updated_at','creator_id'];
+		$indexCol = ['id','word','type','grammar','mean','parent','note','factors','confidence','updated_at','creator_id'];
 		switch ($request->get('view')) {
+            case 'studio':
+				# 获取studio内所有channel
+                $user = \App\Http\Api\AuthApi::current($request);
+                if($user){
+                    //判断当前用户是否有指定的studio的权限
+                    if($user['user_uid'] === \App\Http\Api\StudioApi::getIdByName($request->get('name'))){
+                        $table = UserDict::select($indexCol)
+                                    ->where('creator_id', $user["user_id"])
+                                    ->where('source', "_USER_WBW_");
+                    }else{
+                        return $this->error(__('auth.failed'));
+                    }
+                }else{
+                    return $this->error(__('auth.failed'));
+                }
+				break;
 			case 'user':
 				# code...
 				$table = UserDict::select($indexCol)
 									->where('creator_id', $_COOKIE["user_id"])
 									->where('source', '<>', "_SYS_USER_WBW_");
-				if(isset($_GET["search"])){
-					$table->where('word', 'like', $_GET["search"]."%");
-				}
-				if(isset($_GET["order"]) && isset($_GET["dir"])){
-					$table->orderBy($_GET["order"],$_GET["dir"]);
-				}else{
-					$table->orderBy('updated_at','desc');
-				}
-				$count = $table->count();
-				if(isset($_GET["limit"])){
-					$offset = 0;
-					if(isset($_GET["offset"])){
-						$offset = $_GET["offset"];
-					}
-					$table->skip($offset)->take($_GET["limit"]);
-				}			
-				$result = $table->get();
+
 				break;
 			case 'word':
-				$result = UserDict::select($indexCol)
-									->where('word', $_GET["word"])
-									->orderBy('created_at','desc')
-									->get();				
+				$table = UserDict::select($indexCol)
+									->where('word', $_GET["word"]);
 				break;
 			default:
 				# code...
 				break;
 		}
+        if(isset($_GET["search"])){
+            $table->where('word', 'like', $_GET["search"]."%");
+        }
+        if(isset($_GET["order"]) && isset($_GET["dir"])){
+            $table->orderBy($_GET["order"],$_GET["dir"]);
+        }else{
+            $table->orderBy('updated_at','desc');
+        }
+        $count = $table->count();
+        if(isset($_GET["limit"])){
+            $offset = 0;
+            if(isset($_GET["offset"])){
+                $offset = $_GET["offset"];
+            }
+            $table->skip($offset)->take($_GET["limit"]);
+        }
+        $result = $table->get();
 		if($result){
 			return $this->ok(["rows"=>$result,"count"=>$count]);
 		}else{
@@ -72,7 +88,6 @@ class UserDictController extends Controller
 		if(!isset($_COOKIE["user_id"])){
 			$this->error("not login");
 		}
-        $snowflake = new SnowFlakeId();
 
 		$_data = json_decode($_POST["data"],true);
 		switch($request->get('view')){
@@ -92,7 +107,7 @@ class UserDictController extends Controller
 										->where('factormean',$word["factormean"])
 										->where('source','_USER_WBW_')
 										->doesntExist();
-					
+
 					if($isDoesntExist){
 						#不存在插入数据
 						$word["id"]=app('snowflake')->id();
@@ -123,9 +138,9 @@ class UserDictController extends Controller
         //
 		$result = UserDict::find($id);
 		if($result){
-			$this->ok($result);
+			return $this->ok($result);
 		}else{
-			$this->error("没有查询到数据");
+			return $this->error("没有查询到数据");
 		}
     }
 
@@ -140,14 +155,16 @@ class UserDictController extends Controller
     {
         //
 		$newData = $request->all();
+        Log::info("id={$id}");
+        Log::info($newData);
 		$result = UserDict::where('id', $id)
 				->update($newData);
 		if($result){
 			$updateOk = $this->update_sys_wbw($newData);
 			$this->update_redis($newData);
-			$this->ok([$result,$updateOk]);
+			return $this->ok([$result,$updateOk]);
 		}else{
-		$this->error("没有查询到数据");
+		    return $this->error("没有查询到数据");
 		}
     }
 
@@ -187,7 +204,7 @@ class UserDictController extends Controller
 		foreach ($arrId as $key => $id) {
 			$data = UserDict::where('id',$id)->first();
 			if($data){
-				# 找到对应数据 
+				# 找到对应数据
 				Log::info('creator_id:'.$data->creator_id);
 				$param = [
 					"id"=>$id,
@@ -197,7 +214,7 @@ class UserDictController extends Controller
 				$del = UserDict::where($param)->delete();
 				$count += $del;
 				$updateOk = $this->update_sys_wbw($data);
-				$this->update_redis($data);				
+				$this->update_redis($data);
 			}
 		}
 		Log::info("delete:".$count);

+ 169 - 0
app/Http/Controllers/WbwLookupController.php

@@ -0,0 +1,169 @@
+<?php
+
+namespace App\Http\Controllers;
+
+use App\Models\UserDict;
+use App\Models\WbwTemplate;
+use Illuminate\Http\Request;
+use App\Tools\CaseMan;
+use Illuminate\Support\Facades\Log;
+use Illuminate\Support\Facades\Cache;
+
+
+
+class WbwLookupController extends Controller
+{
+	private $dictList = [
+		'85dcc61c-c9e1-4ae0-9b44-cd6d9d9f0d01',//社区汇总
+		'4d3a0d92-0adc-4052-80f5-512a2603d0e8',// system irregular
+		'57afac99-0887-455c-b18e-67c8682158b0',// system regular
+		'ef620a93-a55d-4756-89c5-e188ab009e45',//社区字典
+		'8359757e-9575-455b-a772-cc6f036caea0',// system sandhi
+		'c42980f0-5967-4833-b695-84183344f68f',// robot compound
+		'61f23efb-b526-4a8e-999e-076965034e60',// pali myanmar grammar
+		'eae9fd6f-7bac-4940-b80d-ad6cd6f433bf',// Concise P-E Dict
+		'2f93d0fe-3d68-46ee-a80b-11fa445a29c6',// unity
+		'beb45062-7c20-4047-bcd4-1f636ba443d1',// U Hau Sein
+		'8833de18-0978-434c-b281-a2e7387f69be',// 巴汉增订
+		'3acf0c0f-59a7-4d25-a3d9-bf394a266ebd',// 汉译パーリ语辞典-黃秉榮
+	];
+    /**
+     * Display a listing of the resource.
+     * @param  \Illuminate\Http\Request  $request
+     *
+     * @return \Illuminate\Http\Response
+     */
+    public function index(Request $request)
+    {
+        //
+		$startAt = microtime(true);
+		$caseman = new CaseMan();
+		$output  = array();
+		$wordPool = array();
+		$input = \explode(',',$request->get("word"));
+		foreach ($input as $word) {
+			$wordPool[$word] = ['base' => false,'done' => false,'apply' => false];
+		}
+		Log::info("query start ".$request->get("word"));
+		if(empty($request->get("deep"))){
+			$deep = 2;
+		}else{
+			$deep = $request->get("deep");
+		}
+		for ($i=0; $i < $deep; $i++) {
+			# code...
+			foreach ($wordPool as $word => $info) {
+				# code...
+				if($info['done'] == false){
+					$wordPool[$word]['done'] = true;
+					$count = 0;
+					foreach ($this->dictList as  $dictId) {
+						# code...
+						$result = Cache::remember("dict/{$dictId}/".$word,1000,function() use($word,$dictId){
+							return UserDict::where('word',$word)->where('dict_id',$dictId)->orderBy('confidence','desc')->get();
+						});
+						$count += count($result);
+						if(count($result)>0){
+							foreach ($result as  $dictword) {
+								# code...
+								array_push($output,$dictword);
+								if(!isset($wordPool[$word]['factors']) && !empty($dictword->factors)){
+									//将第一个拆分作为最佳拆分存储
+									$wordPool[$word]['factors'] = $dictword->factors;
+									Log::info("best factor:{$dictword->factors}");
+								}
+							}
+						}
+					}
+
+					Log::info("query {$word} ".((microtime(true)-$startAt)*1000)."s.");
+					if($count == 0){
+						//没查到 去尾查
+						Log::info("没查到 去尾查");
+						$newBase = array();
+						$parents = $caseman->WordToBase($word);
+						foreach ($parents as $base => $rows) {
+							Log::info("found:{$base}");
+							array_push($output,$rows);
+						}
+						Log::info("去尾查结束");
+					}
+				}
+			}
+
+			//查询结果中的拆分信息
+			$newWordPart = array();
+			foreach ($wordPool as $word => $info) {
+				if(!empty($info['factors'])){
+					$factors = \explode('+',$info['factors']);
+					foreach ($factors as $factor) {
+						# 将没有的拆分放入单词查询列表
+						if(!isset($wordPool[$factor])){
+							$newWordPart[$factor] = 0;
+						}
+					}
+				}
+			}
+			foreach ($newWordPart as $part => $value) {
+				# 将拆分放入池中
+				$wordPool[$part] = ['base' => false,'done' => false,'apply' => false];
+			}
+			Log::info("loop {$i} ".((microtime(true)-$startAt)*1000)."s.");
+		}
+
+		return $this->ok(["rows"=>$output,'count'=>count($output)]);
+    }
+
+    /**
+     * Store a newly created resource in storage.
+     *
+     * @param  \Illuminate\Http\Request  $request
+     * @return \Illuminate\Http\Response
+     */
+    public function store(Request $request)
+    {
+        //
+    }
+
+    /**
+     * Display the words best match in specified sentence .
+     *
+     * @param  string  $sentId
+     * @return \Illuminate\Http\Response
+     */
+    public function show(string $sentId)
+    {
+        //查询句子中的单词
+        $sent = \explode('-',$sentId);
+        WbwTemplate::where('book',$sent[0])
+                ->where('paragraph',$sent[1])
+                ->whereBetween('wid',[$sent[2],$sent[3]])
+                ->orderBy('wid')
+                ->get();
+
+
+    }
+
+    /**
+     * Update the specified resource in storage.
+     *
+     * @param  \Illuminate\Http\Request  $request
+     * @param  \App\Models\UserDict  $userDict
+     * @return \Illuminate\Http\Response
+     */
+    public function update(Request $request, UserDict $userDict)
+    {
+        //
+    }
+
+    /**
+     * Remove the specified resource from storage.
+     *
+     * @param  \App\Models\UserDict  $userDict
+     * @return \Illuminate\Http\Response
+     */
+    public function destroy(UserDict $userDict)
+    {
+        //
+    }
+}

+ 2 - 2
app/Http/Kernel.php

@@ -15,13 +15,13 @@ class Kernel extends HttpKernel
      */
     protected $middleware = [
         // \App\Http\Middleware\TrustHosts::class,
-        \App\Http\Middleware\TrustProxies::class,
         \Fruitcake\Cors\HandleCors::class,
+        \App\Http\Middleware\TrustProxies::class,
+        \App\Http\Middleware\ApiLog::class,
         \App\Http\Middleware\PreventRequestsDuringMaintenance::class,
         \Illuminate\Foundation\Http\Middleware\ValidatePostSize::class,
         \App\Http\Middleware\TrimStrings::class,
         \Illuminate\Foundation\Http\Middleware\ConvertEmptyStringsToNull::class,
-        \App\Http\Middleware\EnableCrossRequestMiddleware::class,
     ];
 
     /**

+ 32 - 0
app/Http/Middleware/ApiLog.php

@@ -0,0 +1,32 @@
+<?php
+
+namespace App\Http\Middleware;
+
+use Closure;
+use Illuminate\Http\Request;
+use Illuminate\Support\Facades\Storage;
+
+class ApiLog
+{
+    /**
+     * Handle an incoming request.
+     *
+     * @param  \Illuminate\Http\Request  $request
+     * @param  \Closure(\Illuminate\Http\Request): (\Illuminate\Http\Response|\Illuminate\Http\RedirectResponse)  $next
+     * @return \Illuminate\Http\Response|\Illuminate\Http\RedirectResponse
+     */
+    public function handle(Request $request, Closure $next)
+    {
+        $response = $next($request);
+        if (defined('LARAVEL_START'))
+        {
+            $api = [];
+            $api[] = date("h:i:sa",LARAVEL_START);
+            $api[] = round((microtime(true) - LARAVEL_START)*1000,2);
+            $api[] = $request->method();
+            $api[] = $request->path();
+            Storage::disk('local')->append("logs/api/".date("Y-m-d").".log",\implode(',',$api) );
+        }
+        return $response;
+    }
+}

+ 44 - 0
app/Http/Requests/CollectionRequest.php

@@ -0,0 +1,44 @@
+<?php
+
+namespace App\Http\Requests;
+
+use Illuminate\Foundation\Http\FormRequest;
+
+class CollectionRequest extends FormRequest
+{
+    /**
+     * Determine if the user is authorized to make this request.
+     *
+     * @return bool
+     */
+    public function authorize()
+    {
+        return true;
+    }
+
+    /**
+     * Get the validation rules that apply to the request.
+     *
+     * @return array
+     */
+    public function rules()
+    {
+        return [
+            /*
+            string Id        = 1;
+            string Title     = 2;
+            string Subtitle  = 3;
+            string Summary   = 4;
+            string ArticleList   = 5;
+            repeated Tag Tags = 6;
+
+            string Lang = 51;
+            string EditorId = 52;
+            EnumPublicity Publicity = 53;
+             */
+            'id' => 'required|unique:posts',
+            'title' => 'required|max:512',
+            'subtitle' => 'nullable|max:512',
+        ];
+    }
+}

+ 22 - 0
app/Http/Resources/CollectionListResource.php

@@ -0,0 +1,22 @@
+<?php
+
+namespace App\Http\Resources;
+
+use Illuminate\Http\Resources\Json\JsonResource;
+
+class CollectionListResource extends JsonResource
+{
+    /**
+     * Transform the resource into an array.
+     *
+     * @param  \Illuminate\Http\Request  $request
+     * @return array|\Illuminate\Contracts\Support\Arrayable|\JsonSerializable
+     */
+    public function toArray($request)
+    {
+        return [
+            'id' => $this->uid,
+            'title' => $this->title,
+        ];
+    }
+}

+ 19 - 0
app/Http/Resources/CourseMemberResource.php

@@ -0,0 +1,19 @@
+<?php
+
+namespace App\Http\Resources;
+
+use Illuminate\Http\Resources\Json\JsonResource;
+
+class CourseMemberResource extends JsonResource
+{
+    /**
+     * Transform the resource into an array.
+     *
+     * @param  \Illuminate\Http\Request  $request
+     * @return array|\Illuminate\Contracts\Support\Arrayable|\JsonSerializable
+     */
+    public function toArray($request)
+    {
+        return parent::toArray($request);
+    }
+}

+ 19 - 0
app/Http/Resources/CourseResource.php

@@ -0,0 +1,19 @@
+<?php
+
+namespace App\Http\Resources;
+
+use Illuminate\Http\Resources\Json\JsonResource;
+
+class CourseResource extends JsonResource
+{
+    /**
+     * Transform the resource into an array.
+     *
+     * @param  \Illuminate\Http\Request  $request
+     * @return array|\Illuminate\Contracts\Support\Arrayable|\JsonSerializable
+     */
+    public function toArray($request)
+    {
+        return parent::toArray($request);
+    }
+}

+ 31 - 0
app/Http/Resources/DiscussionResource.php

@@ -0,0 +1,31 @@
+<?php
+
+namespace App\Http\Resources;
+use App\Http\Api\StudioApi;
+
+use Illuminate\Http\Resources\Json\JsonResource;
+
+class DiscussionResource extends JsonResource
+{
+    /**
+     * Transform the resource into an array.
+     *
+     * @param  \Illuminate\Http\Request  $request
+     * @return array|\Illuminate\Contracts\Support\Arrayable|\JsonSerializable
+     */
+    public function toArray($request)
+    {
+        return [
+            "id"=>$this->id,
+            "title"=> $this->title,
+            "content"=> $this->content,
+            "parent"=> $this->parent,
+            "children_count"=> $this->children_count,
+            "editor"=> StudioApi::getById($this->editor_uid),
+            "res_id"=>$this->res_id,
+            "res_type"=> $this->res_type,
+            "created_at"=> $this->created_at,
+            "updated_at"=> $this->updated_at,
+        ];
+    }
+}

+ 30 - 0
app/Http/Resources/GroupMemberResource.php

@@ -0,0 +1,30 @@
+<?php
+
+namespace App\Http\Resources;
+
+use App\Http\Api\UserApi;
+use Illuminate\Http\Resources\Json\JsonResource;
+
+class GroupMemberResource extends JsonResource
+{
+    /**
+     * Transform the resource into an array.
+     *
+     * @param  \Illuminate\Http\Request  $request
+     * @return array|\Illuminate\Contracts\Support\Arrayable|\JsonSerializable
+     */
+    public function toArray($request)
+    {
+        return [
+            "id"=>$this->id,
+            "user_id"=> $this->user_id,
+            "group_id"=> $this->group_id,
+            "power"=> $this->power,
+            "level"=> $this->level,
+            "status"=> $this->status,
+            "user"=> UserApi::getById($this->user_id),
+            "created_at"=> $this->created_at,
+            "updated_at"=> $this->updated_at,
+        ];
+    }
+}

+ 42 - 0
app/Http/Resources/SentPrResource.php

@@ -0,0 +1,42 @@
+<?php
+
+namespace App\Http\Resources;
+
+use Illuminate\Http\Resources\Json\JsonResource;
+use App\Http\Api\MdRender;
+use App\Http\Api\StudioApi;
+use App\Http\Api\AuthApi;
+use App\Http\Api\ChannelApi;
+
+class SentPrResource extends JsonResource
+{
+    /**
+     * Transform the resource into an array.
+     *
+     * @param  \Illuminate\Http\Request  $request
+     * @return array|\Illuminate\Contracts\Support\Arrayable|\JsonSerializable
+     */
+    public function toArray($request)
+    {
+        //获取用户信息
+        $user = AuthApi::current($request);
+        $role = 'reader';
+        if($user && $user["user_uid"] === $this->editor_uid ){
+            $role = 'owner';
+        }
+        return [
+            "id"=>$this->id,
+            "book"=> $this->book_id,
+            "paragraph"=> $this->paragraph,
+            "word_start"=> $this->word_start,
+            "word_end"=> $this->word_end,
+            "editor"=> StudioApi::getById($this->editor_uid),
+            "channel"=> ChannelApi::getById($this->channel_uid),
+            "content"=>$this->content,
+            "html"=> MdRender::render($this->content,$this->channel_uid),
+            "role"=>$role,
+            "created_at"=> $this->created_at,
+            "updated_at"=> $this->updated_at,
+        ];
+    }
+}

+ 34 - 0
app/Http/Resources/SentResource.php

@@ -0,0 +1,34 @@
+<?php
+
+namespace App\Http\Resources;
+
+use Illuminate\Support\Str;
+use App\Http\Api\MdRender;
+use Illuminate\Http\Resources\Json\JsonResource;
+
+class SentResource extends JsonResource
+{
+    /**
+     * Transform the resource into an array.
+     *
+     * @param  \Illuminate\Http\Request  $request
+     * @return array|\Illuminate\Contracts\Support\Arrayable|\JsonSerializable
+     */
+    public function toArray($request)
+    {
+        return [
+                "content"=>$this->content,
+                "html"=> MdRender::render($this->content,$this->channel_uid),
+                "book"=> $this->book_id,
+                "paragraph"=> $this->paragraph,
+                "word_start"=> $this->word_start,
+                "word_end"=> $this->word_end,
+                "editor"=> \App\Http\Api\StudioApi::getById($this->editor_uid),
+                "channel"=> [
+                    "name"=>"channel",
+	                "id"=> $this->channel_uid,
+                ],
+                "updated_at"=> $this->updated_at,
+            ];
+    }
+}

+ 69 - 0
app/Http/Resources/ShareResource.php

@@ -0,0 +1,69 @@
+<?php
+
+namespace App\Http\Resources;
+
+use Illuminate\Http\Resources\Json\JsonResource;
+use App\Models\Channel;
+use App\Models\Article;
+use App\Http\Api\StudioApi;
+
+class ShareResource extends JsonResource
+{
+    /**
+     * Transform the resource into an array.
+     *
+     * @param  \Illuminate\Http\Request  $request
+     * @return array|\Illuminate\Contracts\Support\Arrayable|\JsonSerializable
+     */
+    public function toArray($request)
+    {
+        //获取资源信息
+        $res_name="";
+        $owner="";
+        switch ($this->res_type) {
+            case 1:
+                # PCS 文档
+                break;
+            case 2:
+                # Channel 版本
+                $res = Channel::where('uid',$this->res_id)->first();
+                if($res){
+                    $res_name = $channel->name;
+                    $owner = StudioApi::getById($res->owner_uid);
+                }
+                break;
+            case 3:
+                # Article 文章
+                $res = Article::where('uid',$this->res_id)->first();
+                if($res){
+                    $res_name = $res->title;
+                    $owner = StudioApi::getById($res->owner);
+                }
+                break;
+            case 4:
+                # Collection 文集
+                $res = Collection::where('uid',$this->res_id)->first();
+                if($res){
+                    $res_name = $res->title;
+                    $owner = StudioApi::getById($res->owner);
+                }
+                break;
+            case 5:
+                # 版本片段 不支持
+                break;
+            default:
+                # code...
+                break;
+        }
+        return [
+            "id"=>$this->id,
+            "res_id"=> $this->res_id,
+            "res_type"=> $this->res_type,
+            "power"=> $this->power,
+            'res_name'=>$res_name,
+            'owner'=>$owner,
+            "created_at"=> $this->created_at,
+            "updated_at"=> $this->updated_at,
+        ];
+    }
+}

+ 23 - 0
app/Http/Resources/UserResource.php

@@ -0,0 +1,23 @@
+<?php
+
+namespace App\Http\Resources;
+
+use Illuminate\Http\Resources\Json\JsonResource;
+
+class UserResource extends JsonResource
+{
+    /**
+     * Transform the resource into an array.
+     *
+     * @param  \Illuminate\Http\Request  $request
+     * @return array|\Illuminate\Contracts\Support\Arrayable|\JsonSerializable
+     */
+    public function toArray($request)
+    {
+        return [
+            "id"=>$this['userid'],
+            "userName"=> $this['username'],
+            "nickName"=> $this['nickname'],
+        ];
+    }
+}

+ 5 - 0
app/Models/Article.php

@@ -8,4 +8,9 @@ use Illuminate\Database\Eloquent\Model;
 class Article extends Model
 {
     use HasFactory;
+    protected $primaryKey = 'uid';
+    protected $casts = [
+        'uid' => 'string'
+    ];
+    public  $incrementing = false;
 }

+ 7 - 0
app/Models/Channel.php

@@ -8,4 +8,11 @@ use Illuminate\Database\Eloquent\Model;
 class Channel extends Model
 {
     use HasFactory;
+    protected $fillable = ['name','summary','type','lang','status','updated_at','created_at'];
+
+    protected $primaryKey = 'uid';
+    protected $casts = [
+        'uid' => 'string'
+    ];
+    public  $incrementing = false;
 }

+ 5 - 0
app/Models/Collection.php

@@ -8,4 +8,9 @@ use Illuminate\Database\Eloquent\Model;
 class Collection extends Model
 {
     use HasFactory;
+    protected $primaryKey = 'uid';
+    protected $casts = [
+        'uid' => 'string'
+    ];
+    public  $incrementing = false;
 }

+ 11 - 0
app/Models/Course.php

@@ -0,0 +1,11 @@
+<?php
+
+namespace App\Models;
+
+use Illuminate\Database\Eloquent\Factories\HasFactory;
+use Illuminate\Database\Eloquent\Model;
+
+class Course extends Model
+{
+    use HasFactory;
+}

+ 16 - 0
app/Models/CourseMember.php

@@ -0,0 +1,16 @@
+<?php
+
+namespace App\Models;
+
+use Illuminate\Database\Eloquent\Factories\HasFactory;
+use Illuminate\Database\Eloquent\Model;
+
+class CourseMember extends Model
+{
+    use HasFactory;
+    protected $primaryKey = 'id';
+    protected $casts = [
+        'id' => 'string'
+    ];
+    public  $incrementing = false;
+}

+ 2 - 2
app/Models/DhammaTerm.php

@@ -10,9 +10,9 @@ class DhammaTerm extends Model
     use HasFactory;
 
     protected $primaryKey = 'guid';
-    public  $incrementing = false;
-    //protected $keyType = "string";
     protected $casts = [
         'guid' => 'string'
     ];
+    public  $incrementing = false;
+
 }

+ 18 - 0
app/Models/DictInfo.php

@@ -0,0 +1,18 @@
+<?php
+
+namespace App\Models;
+
+use Illuminate\Database\Eloquent\Factories\HasFactory;
+use Illuminate\Database\Eloquent\Model;
+
+class DictInfo extends Model
+{
+    use HasFactory;
+    protected $primaryKey = 'id';
+    public  $incrementing = false;
+	protected $casts = [
+		'id' => 'string'
+	];
+	protected $fillable = ['id' , 'name', 'shortname','src_lang','dest_lang','rows','owner_id'];
+
+}

+ 15 - 0
app/Models/Discussion.php

@@ -0,0 +1,15 @@
+<?php
+
+namespace App\Models;
+
+use Illuminate\Database\Eloquent\Factories\HasFactory;
+use Illuminate\Database\Eloquent\Model;
+
+class Discussion extends Model
+{
+    use HasFactory;
+    protected $primaryKey = 'id';
+	protected $casts = [
+		'id' => 'string'
+	];
+}

+ 11 - 0
app/Models/Group.php

@@ -0,0 +1,11 @@
+<?php
+
+namespace App\Models;
+
+use Illuminate\Database\Eloquent\Factories\HasFactory;
+use Illuminate\Database\Eloquent\Model;
+
+class Group extends Model
+{
+    use HasFactory;
+}

+ 4 - 0
app/Models/GroupInfo.php

@@ -8,4 +8,8 @@ use Illuminate\Database\Eloquent\Model;
 class GroupInfo extends Model
 {
     use HasFactory;
+    protected $primaryKey = 'uid';
+	protected $casts = [
+		'uid' => 'string'
+	];
 }

+ 4 - 0
app/Models/GroupMember.php

@@ -8,4 +8,8 @@ use Illuminate\Database\Eloquent\Model;
 class GroupMember extends Model
 {
     use HasFactory;
+    protected $primaryKey = 'id';
+	protected $casts = [
+		'id' => 'string'
+	];
 }

+ 3 - 0
app/Models/UserDict.php

@@ -8,7 +8,10 @@ use Illuminate\Database\Eloquent\Model;
 class UserDict extends Model
 {
     use HasFactory;
+    protected $primaryKey = 'id';
+    public  $incrementing = false;
 	protected $casts = [
 		'id' => 'string'
 	];
+	protected $fillable = ['id','word','type','grammar','parent','mean','note','factors','factor_mean','source','create_time','creator_id','dict_id'];
 }

+ 13 - 0
app/Models/WordPart.php

@@ -0,0 +1,13 @@
+<?php
+
+namespace App\Models;
+
+use Illuminate\Database\Eloquent\Factories\HasFactory;
+use Illuminate\Database\Eloquent\Model;
+
+class WordPart extends Model
+{
+    use HasFactory;
+	protected $fillable = ['word' , 'weight'];
+
+}

+ 3371 - 0
app/Tools/CaseMan.php

@@ -0,0 +1,3371 @@
+<?php
+namespace App\Tools;
+
+use Illuminate\Support\Facades\Cache;
+use Illuminate\Support\Facades\Log;
+use App\Models\UserDict;
+
+
+class CaseMan
+{
+	/**
+     * Create a new class instance.
+     * 
+     * @return void
+     */
+    public function __construct()
+    {
+        return;
+    }
+
+	/**
+     * 从词干到单词的变化
+     * 
+     * @return void
+     */
+	public function BaseToWord($base){
+
+	}
+
+	/**
+     * 从单词到词干的变化
+     * 小蝌蚪找妈妈
+     * @return void
+     */
+	public function WordToBase($word,$deep=1,$verify=true){
+		$newWords = array();
+		$newBase = array();
+		$input[$word] = true;
+		$case = new CaseEnding();
+		for ($i=0; $i < $deep; $i++) {
+			# code...
+			foreach ($input as $currWord => $status) {
+				# code...
+				if($status){
+					$input[$currWord] = false;
+					foreach ($case->ending as  $ending) {
+						# code...
+						$endingLen = mb_strlen($ending[1], "UTF-8");
+						$wordEnd = mb_substr($currWord, 0 - $endingLen, null, "UTF-8");
+						if ($wordEnd == $ending[1]) {
+							//匹配成功
+							$base = mb_substr($currWord, 0, mb_strlen($currWord, "UTF-8") - $endingLen, "UTF-8") . $ending[0];
+							if(!isset($newBase[$base])){
+								$newBase[$base] = array();
+							}
+							array_push($newBase[$base],[
+								'word'=>$currWord,
+								'type'=>$ending[2],
+								'grammar'=>$ending[3],
+								'parent'=>$base,
+								'factors'=>"{$base}+[{$ending[1]}]",
+								'confidence'=>$ending[4],
+							]);
+						}
+					}				
+				}
+			}
+			foreach ($newBase as $currWord => $value) {
+				# 把新词加入列表
+				if(!isset($input[$currWord])){
+					$input[$currWord] = true;
+				}
+			}
+		}
+
+		if($verify){
+			$output = array();
+			foreach ($newBase as $base => $rows) {
+				# code...
+				if(($verify = $this->VerifyBase($base,$rows)) !== false){
+					if(count($verify)>0){
+						$output[$base] = $verify;
+					}
+				}
+			}
+			if(count($output)==0){
+				//如果验证失败 输出最可能的结果
+				$short = 10000;
+				$shortBase = "";
+				foreach ($newBase as $base => $rows) {
+					if(mb_strlen($base,"UTF-8") < $short){
+						$short = mb_strlen($base,"UTF-8");
+						$shortBase = $base;
+					}
+				}
+				foreach ($newBase as $base => $rows) {
+					if($base == $shortBase){
+						$output[$base] = $rows;
+					}
+				}
+			}
+			return $output;
+		}else{
+			return $newBase;
+		}
+
+		
+	}
+	/**
+	 * 验证base在字典中是否存在
+	 */
+	public function VerifyBase($base,$rows){
+		# 
+		$output = array();
+		$dictWords = UserDict::where('word',$base)->select(['type','grammar'])->groupBy(['type','grammar'])->get();
+		if(count($dictWords)>0){
+			$newBase[$base] = 1;
+			$case = array(); 
+			//字典中这个拼写的单词的语法信息
+			foreach ($dictWords as $value) {
+				# code...
+				$case["{$value->type}{$value->grammar}"] = 1;
+			}
+			foreach ($rows as $value) {
+				//根据输入的猜测的type,grammar拼接合理的 parent 语法信息 
+				switch ($value['type']) {
+					case '.n.':
+						$parentType = '.n:base.';
+						break;
+					case '.ti.':
+						$parentType = '.ti:base.';
+						break;
+					case '.v.':
+						$parentType = '.v:base.';
+						break;
+					default:
+						$parentType = '';
+						break;
+				}
+				if(!empty($value['grammar']) && $value['type'] !== ".v."){
+					$arrGrammar = explode('$',$value['grammar']);
+					$parentType .=  $arrGrammar[0];										
+				}
+				# 只保存语法信息合理的数据
+				if(isset($case[$parentType])){
+					Log::info("found:{$value['type']}-{$value['grammar']}-{$value['parent']}");
+					array_push($output,$value);
+				}
+			}
+			return $output;
+		}else{
+			return false;
+		}
+	}
+}
+
+class CaseEnding{
+	public $ending = [
+		["ti","tuṃ",".v:ind.",".inf.",0.99],
+		["ati","ituṃ",".v:ind.",".inf.",0.99],
+		["ati","itvā",".v:ind.",".abs.",0.99],
+		["ati","atvā",".v:ind.",".abs.",0.99],
+		["ti","tvā",".v:ind.",".abs.",0.99],
+		["ant","antā",".ti.",".m.$.pl.$.nom.",0.99],
+		["ant","antā",".ti.",".m.$.pl.$.voc.",0.3],
+		["ant","antā",".ti.",".m.$.sg.$.abl.",0.99],
+		["ant","anta",".ti.",".m.$.sg.$.voc.",0.3],
+		["ant","antā",".ti.",".m.$.sg.$.voc.",0.3],
+		["ant","anta",".ti.",".nt.$.pl.$.acc.",0.99],
+		["ant","antā",".ti.",".nt.$.pl.$.acc.",0.99],
+		["ant","anta",".ti.",".nt.$.pl.$.nom.",0.99],
+		["ant","antā",".ti.",".nt.$.pl.$.nom.",0.99],
+		["ant","anta",".ti.",".nt.$.pl.$.voc.",0.3],
+		["ant","antā",".ti.",".nt.$.pl.$.voc.",0.3],
+		["ant","antā",".ti.",".nt.$.sg.$.abl.",0.99],
+		["ant","anta",".ti.",".nt.$.sg.$.voc.",0.3],
+		["ant","antā",".ti.",".nt.$.sg.$.voc.",0.3],
+		["ant","antaṃ",".ti.",".m.$.sg.$.acc.",0.99],
+		["ant","antaṃ",".ti.",".nt.$.sg.$.acc.",0.99],
+		["ant","antaṃ",".ti.",".nt.$.sg.$.nom.",0.99],
+		["ant","antaṃ",".ti.",".nt.$.sg.$.nom.",0.99],
+		["ant","antaṃ",".ti.",".m.$.sg.$.acc.",0.99],
+		["ant","antaṃ",".ti.",".nt.$.sg.$.acc.",0.99],
+		["ant","antamhā",".ti.",".m.$.sg.$.abl.",0.99],
+		["ant","antamhā",".ti.",".nt.$.sg.$.abl.",0.99],
+		["ant","antamhā",".ti.",".m.$.sg.$.abl.",0.99],
+		["ant","antamhā",".ti.",".nt.$.sg.$.abl.",0.99],
+		["ant","antamhi",".ti.",".m.$.sg.$.loc.",0.99],
+		["ant","antamhi",".ti.",".nt.$.sg.$.loc.",0.99],
+		["ant","antamhi",".ti.",".m.$.sg.$.loc.",0.99],
+		["ant","antamhi",".ti.",".nt.$.sg.$.loc.",0.99],
+		["ant","antānaṃ",".ti.",".m.$.pl.$.dat.",0.99],
+		["ant","antānaṃ",".ti.",".m.$.pl.$.gen.",0.99],
+		["ant","antānaṃ",".ti.",".nt.$.pl.$.dat.",0.99],
+		["ant","antānaṃ",".ti.",".nt.$.pl.$.gen.",0.99],
+		["ant","antānaṃ",".ti.",".nt.$.pl.$.dat.",0.99],
+		["ant","antānaṃ",".ti.",".nt.$.pl.$.gen.",0.99],
+		["ant","antani",".ti.",".nt.$.pl.$.acc.",0.99],
+		["ant","antāni",".ti.",".nt.$.pl.$.acc.",0.99],
+		["ant","antani",".ti.",".nt.$.pl.$.nom.",0.99],
+		["ant","antāni",".ti.",".nt.$.pl.$.nom.",0.99],
+		["ant","antani",".ti.",".nt.$.pl.$.voc.",0.3],
+		["ant","antāni",".ti.",".nt.$.pl.$.voc.",0.3],
+		["ant","antasmā",".ti.",".m.$.sg.$.abl.",0.99],
+		["ant","antasmā",".ti.",".nt.$.sg.$.abl.",0.99],
+		["ant","antasmā",".ti.",".m.$.sg.$.abl.",0.99],
+		["ant","antasmā",".ti.",".nt.$.sg.$.abl.",0.99],
+		["ant","antasmiṃ",".ti.",".m.$.sg.$.loc.",0.99],
+		["ant","antasmiṃ",".ti.",".nt.$.sg.$.loc.",0.99],
+		["ant","antasmiṃ",".ti.",".m.$.sg.$.loc.",0.99],
+		["ant","antasmiṃ",".ti.",".nt.$.sg.$.loc.",0.99],
+		["ant","antassa",".ti.",".m.$.sg.$.dat.",0.99],
+		["ant","antassa",".ti.",".m.$.sg.$.gen.",0.99],
+		["ant","antassa",".ti.",".nt.$.sg.$.dat.",0.99],
+		["ant","antassa",".ti.",".nt.$.sg.$.gen.",0.99],
+		["ant","antassa",".ti.",".m.$.sg.$.dat.",0.99],
+		["ant","antassa",".ti.",".m.$.sg.$.gen.",0.99],
+		["ant","antassa",".ti.",".nt.$.sg.$.dat.",0.99],
+		["ant","antassa",".ti.",".nt.$.sg.$.gen.",0.99],
+		["ant","ante",".ti.",".m.$.pl.$.acc.",0.99],
+		["ant","ante",".ti.",".m.$.sg.$.loc.",0.99],
+		["ant","ante",".ti.",".nt.$.pl.$.acc.",0.99],
+		["ant","ante",".ti.",".nt.$.sg.$.loc.",0.99],
+		["ant","antebhi",".ti.",".m.$.pl.$.abl.",0.99],
+		["ant","antebhi",".ti.",".m.$.pl.$.inst.",0.99],
+		["ant","antebhi",".ti.",".nt.$.pl.$.abl.",0.99],
+		["ant","antebhi",".ti.",".nt.$.pl.$.inst.",0.99],
+		["ant","antehi",".ti.",".m.$.pl.$.abl.",0.99],
+		["ant","antehi",".ti.",".m.$.pl.$.inst.",0.99],
+		["ant","antehi",".ti.",".nt.$.pl.$.abl.",0.99],
+		["ant","antehi",".ti.",".nt.$.pl.$.inst.",0.99],
+		["ant","antesu",".ti.",".m.$.pl.$.loc.",0.99],
+		["ant","antesu",".ti.",".nt.$.pl.$.loc.",0.99],
+		["ant","antesu",".ti.",".nt.$.pl.$.loc.",0.99],
+		["ant","antī",".ti.",".f.$.pl.$.acc.",0.99],
+		["ant","antī",".ti.",".f.$.pl.$.nom.",0.99],
+		["ant","antī",".ti.",".f.$.pl.$.voc.",0.3],
+		["ant","antī",".ti.",".f.$.sg.$.nom.",0.99],
+		["ant","antī",".ti.",".f.$.sg.$.voc.",0.3],
+		["ant","antībhi",".ti.",".f.$.pl.$.abl.",0.99],
+		["ant","antībhi",".ti.",".f.$.pl.$.inst.",0.99],
+		["ant","antīhi",".ti.",".f.$.pl.$.abl.",0.99],
+		["ant","antīhi",".ti.",".f.$.pl.$.inst.",0.99],
+		["ant","antiṃ",".ti.",".f.$.sg.$.acc.",0.99],
+		["ant","antīnaṃ",".ti.",".f.$.pl.$.dat.",0.99],
+		["ant","antīnaṃ",".ti.",".f.$.pl.$.gen.",0.99],
+		["ant","antīsu",".ti.",".f.$.pl.$.loc.",0.99],
+		["ant","antiyā",".ti.",".f.$.sg.$.abl.",0.99],
+		["ant","antiyā",".ti.",".f.$.sg.$.dat.",0.99],
+		["ant","antiyā",".ti.",".f.$.sg.$.gen.",0.99],
+		["ant","antiyā",".ti.",".f.$.sg.$.inst.",0.99],
+		["ant","antiyā",".ti.",".f.$.sg.$.loc.",0.99],
+		["ant","antiyaṃ",".ti.",".f.$.sg.$.loc.",0.99],
+		["ant","antiyo",".ti.",".f.$.pl.$.acc.",0.99],
+		["ant","antiyo",".ti.",".f.$.pl.$.nom.",0.99],
+		["ant","antiyo",".ti.",".f.$.pl.$.voc.",0.3],
+		["ant","anto",".ti.",".m.$.pl.$.nom.",0.99],
+		["ant","anto",".ti.",".m.$.pl.$.voc.",0.3],
+		["ant","anto",".ti.",".m.$.sg.$.nom.",0.99],
+		["ant","anto",".ti.",".nt.$.pl.$.nom.",0.99],
+		["ant","anto",".ti.",".nt.$.pl.$.voc.",0.3],
+		["ant","anto",".ti.",".nt.$.sg.$.nom.",0.99],
+		["ant","atā",".ti.",".m.$.sg.$.abl.",0.99],
+		["ant","atā",".ti.",".m.$.sg.$.inst.",0.99],
+		["ant","atā",".ti.",".nt.$.sg.$.abl.",0.99],
+		["ant","atā",".ti.",".nt.$.sg.$.inst.",0.99],
+		["ant","atā",".ti.",".m.$.sg.$.abl.",0.99],
+		["ant","atā",".ti.",".m.$.sg.$.inst.",0.99],
+		["ant","atā",".ti.",".nt.$.sg.$.abl.",0.99],
+		["ant","atā",".ti.",".nt.$.sg.$.inst.",0.99],
+		["ant","ataṃ",".ti.",".m.$.pl.$.dat.",0.99],
+		["ant","ataṃ",".ti.",".m.$.pl.$.gen.",0.99],
+		["ant","ataṃ",".ti.",".nt.$.pl.$.dat.",0.99],
+		["ant","ataṃ",".ti.",".nt.$.pl.$.gen.",0.99],
+		["ant","ataṃ",".ti.",".nt.$.pl.$.dat.",0.99],
+		["ant","ataṃ",".ti.",".nt.$.pl.$.gen.",0.99],
+		["ant","atena",".ti.",".m.$.sg.$.inst.",0.99],
+		["ant","atena",".ti.",".nt.$.sg.$.inst.",0.99],
+		["ant","atena",".ti.",".m.$.sg.$.inst.",0.99],
+		["ant","atena",".ti.",".nt.$.sg.$.inst.",0.99],
+		["ant","atī",".ti.",".f.$.pl.$.acc.",0.99],
+		["ant","atī",".ti.",".f.$.pl.$.nom.",0.99],
+		["ant","atī",".ti.",".f.$.pl.$.voc.",0.3],
+		["ant","atī",".ti.",".f.$.sg.$.nom.",0.99],
+		["ant","atī",".ti.",".f.$.sg.$.voc.",0.3],
+		["ant","ati",".ti.",".m.$.sg.$.loc.",0.99],
+		["ant","ati",".ti.",".nt.$.sg.$.loc.",0.99],
+		["ant","ati",".ti.",".m.$.sg.$.loc.",0.99],
+		["ant","ati",".ti.",".nt.$.sg.$.loc.",0.99],
+		["ant","atībhi",".ti.",".f.$.pl.$.abl.",0.99],
+		["ant","atībhi",".ti.",".f.$.pl.$.inst.",0.99],
+		["ant","atīhi",".ti.",".f.$.pl.$.abl.",0.99],
+		["ant","atīhi",".ti.",".f.$.pl.$.inst.",0.99],
+		["ant","atiṃ",".ti.",".f.$.sg.$.acc.",0.99],
+		["ant","atīnaṃ",".ti.",".f.$.pl.$.dat.",0.99],
+		["ant","atīnaṃ",".ti.",".f.$.pl.$.gen.",0.99],
+		["ant","atīsu",".ti.",".f.$.pl.$.loc.",0.99],
+		["ant","atiyā",".ti.",".f.$.sg.$.abl.",0.99],
+		["ant","atiyā",".ti.",".f.$.sg.$.dat.",0.99],
+		["ant","atiyā",".ti.",".f.$.sg.$.gen.",0.99],
+		["ant","atiyā",".ti.",".f.$.sg.$.inst.",0.99],
+		["ant","atiyā",".ti.",".f.$.sg.$.loc.",0.99],
+		["ant","atiyaṃ",".ti.",".f.$.sg.$.loc.",0.99],
+		["ant","atiyo",".ti.",".f.$.pl.$.acc.",0.99],
+		["ant","atiyo",".ti.",".f.$.pl.$.nom.",0.99],
+		["ant","atiyo",".ti.",".f.$.pl.$.voc.",0.3],
+		["ant","ato",".ti.",".m.$.sg.$.dat.",0.99],
+		["ant","ato",".ti.",".m.$.sg.$.gen.",0.99],
+		["ant","ato",".ti.",".nt.$.sg.$.dat.",0.99],
+		["ant","ato",".ti.",".nt.$.sg.$.gen.",0.99],
+		["ant","ato",".ti.",".m.$.sg.$.dat.",0.99],
+		["ant","ato",".ti.",".m.$.sg.$.gen.",0.99],
+		["ant","ato",".ti.",".nt.$.sg.$.dat.",0.99],
+		["ant","ato",".ti.",".nt.$.sg.$.gen.",0.99],
+		["anta","antā",".ti.",".m.$.pl.$.nom.",0.99],
+		["anta","antā",".ti.",".m.$.pl.$.voc.",0.3],
+		["anta","antā",".ti.",".m.$.sg.$.abl.",0.99],
+		["anta","anta",".ti.",".m.$.sg.$.voc.",0.3],
+		["anta","antā",".ti.",".m.$.sg.$.voc.",0.3],
+		["anta","anta",".ti.",".nt.$.pl.$.acc.",0.99],
+		["anta","antā",".ti.",".nt.$.pl.$.acc.",0.99],
+		["anta","anta",".ti.",".nt.$.pl.$.nom.",0.99],
+		["anta","antā",".ti.",".nt.$.pl.$.nom.",0.99],
+		["anta","anta",".ti.",".nt.$.pl.$.voc.",0.3],
+		["anta","antā",".ti.",".nt.$.pl.$.voc.",0.3],
+		["anta","antā",".ti.",".nt.$.sg.$.abl.",0.99],
+		["anta","anta",".ti.",".nt.$.sg.$.voc.",0.3],
+		["anta","antā",".ti.",".nt.$.sg.$.voc.",0.3],
+		["anta","antaṃ",".ti.",".m.$.sg.$.acc.",0.99],
+		["anta","antaṃ",".ti.",".nt.$.sg.$.acc.",0.99],
+		["anta","antaṃ",".ti.",".nt.$.sg.$.nom.",0.99],
+		["anta","antaṃ",".ti.",".nt.$.sg.$.nom.",0.99],
+		["anta","antaṃ",".ti.",".m.$.sg.$.acc.",0.99],
+		["anta","antaṃ",".ti.",".nt.$.sg.$.acc.",0.99],
+		["anta","antamhā",".ti.",".m.$.sg.$.abl.",0.99],
+		["anta","antamhā",".ti.",".nt.$.sg.$.abl.",0.99],
+		["anta","antamhā",".ti.",".m.$.sg.$.abl.",0.99],
+		["anta","antamhā",".ti.",".nt.$.sg.$.abl.",0.99],
+		["anta","antamhi",".ti.",".m.$.sg.$.loc.",0.99],
+		["anta","antamhi",".ti.",".nt.$.sg.$.loc.",0.99],
+		["anta","antamhi",".ti.",".m.$.sg.$.loc.",0.99],
+		["anta","antamhi",".ti.",".nt.$.sg.$.loc.",0.99],
+		["anta","antānaṃ",".ti.",".m.$.pl.$.dat.",0.99],
+		["anta","antānaṃ",".ti.",".m.$.pl.$.gen.",0.99],
+		["anta","antānaṃ",".ti.",".nt.$.pl.$.dat.",0.99],
+		["anta","antānaṃ",".ti.",".nt.$.pl.$.gen.",0.99],
+		["anta","antānaṃ",".ti.",".nt.$.pl.$.dat.",0.99],
+		["anta","antānaṃ",".ti.",".nt.$.pl.$.gen.",0.99],
+		["anta","antani",".ti.",".nt.$.pl.$.acc.",0.99],
+		["anta","antāni",".ti.",".nt.$.pl.$.acc.",0.99],
+		["anta","antani",".ti.",".nt.$.pl.$.nom.",0.99],
+		["anta","antāni",".ti.",".nt.$.pl.$.nom.",0.99],
+		["anta","antani",".ti.",".nt.$.pl.$.voc.",0.3],
+		["anta","antāni",".ti.",".nt.$.pl.$.voc.",0.3],
+		["anta","antasmā",".ti.",".m.$.sg.$.abl.",0.99],
+		["anta","antasmā",".ti.",".nt.$.sg.$.abl.",0.99],
+		["anta","antasmā",".ti.",".m.$.sg.$.abl.",0.99],
+		["anta","antasmā",".ti.",".nt.$.sg.$.abl.",0.99],
+		["anta","antasmiṃ",".ti.",".m.$.sg.$.loc.",0.99],
+		["anta","antasmiṃ",".ti.",".nt.$.sg.$.loc.",0.99],
+		["anta","antasmiṃ",".ti.",".m.$.sg.$.loc.",0.99],
+		["anta","antasmiṃ",".ti.",".nt.$.sg.$.loc.",0.99],
+		["anta","antassa",".ti.",".m.$.sg.$.dat.",0.99],
+		["anta","antassa",".ti.",".m.$.sg.$.gen.",0.99],
+		["anta","antassa",".ti.",".nt.$.sg.$.dat.",0.99],
+		["anta","antassa",".ti.",".nt.$.sg.$.gen.",0.99],
+		["anta","antassa",".ti.",".m.$.sg.$.dat.",0.99],
+		["anta","antassa",".ti.",".m.$.sg.$.gen.",0.99],
+		["anta","antassa",".ti.",".nt.$.sg.$.dat.",0.99],
+		["anta","antassa",".ti.",".nt.$.sg.$.gen.",0.99],
+		["anta","ante",".ti.",".m.$.pl.$.acc.",0.99],
+		["anta","ante",".ti.",".m.$.sg.$.loc.",0.99],
+		["anta","ante",".ti.",".nt.$.pl.$.acc.",0.99],
+		["anta","ante",".ti.",".nt.$.sg.$.loc.",0.99],
+		["anta","antebhi",".ti.",".m.$.pl.$.abl.",0.99],
+		["anta","antebhi",".ti.",".m.$.pl.$.inst.",0.99],
+		["anta","antebhi",".ti.",".nt.$.pl.$.abl.",0.99],
+		["anta","antebhi",".ti.",".nt.$.pl.$.inst.",0.99],
+		["anta","antehi",".ti.",".m.$.pl.$.abl.",0.99],
+		["anta","antehi",".ti.",".m.$.pl.$.inst.",0.99],
+		["anta","antehi",".ti.",".nt.$.pl.$.abl.",0.99],
+		["anta","antehi",".ti.",".nt.$.pl.$.inst.",0.99],
+		["anta","antesu",".ti.",".m.$.pl.$.loc.",0.99],
+		["anta","antesu",".ti.",".nt.$.pl.$.loc.",0.99],
+		["anta","antesu",".ti.",".nt.$.pl.$.loc.",0.99],
+		["anta","antī",".ti.",".f.$.pl.$.acc.",0.99],
+		["anta","antī",".ti.",".f.$.pl.$.nom.",0.99],
+		["anta","antī",".ti.",".f.$.pl.$.voc.",0.3],
+		["anta","antī",".ti.",".f.$.sg.$.nom.",0.99],
+		["anta","antī",".ti.",".f.$.sg.$.voc.",0.3],
+		["anta","antībhi",".ti.",".f.$.pl.$.abl.",0.99],
+		["anta","antībhi",".ti.",".f.$.pl.$.inst.",0.99],
+		["anta","antīhi",".ti.",".f.$.pl.$.abl.",0.99],
+		["anta","antīhi",".ti.",".f.$.pl.$.inst.",0.99],
+		["anta","antiṃ",".ti.",".f.$.sg.$.acc.",0.99],
+		["anta","antīnaṃ",".ti.",".f.$.pl.$.dat.",0.99],
+		["anta","antīnaṃ",".ti.",".f.$.pl.$.gen.",0.99],
+		["anta","antīsu",".ti.",".f.$.pl.$.loc.",0.99],
+		["anta","antiyā",".ti.",".f.$.sg.$.abl.",0.99],
+		["anta","antiyā",".ti.",".f.$.sg.$.dat.",0.99],
+		["anta","antiyā",".ti.",".f.$.sg.$.gen.",0.99],
+		["anta","antiyā",".ti.",".f.$.sg.$.inst.",0.99],
+		["anta","antiyā",".ti.",".f.$.sg.$.loc.",0.99],
+		["anta","antiyaṃ",".ti.",".f.$.sg.$.loc.",0.99],
+		["anta","antiyo",".ti.",".f.$.pl.$.acc.",0.99],
+		["anta","antiyo",".ti.",".f.$.pl.$.nom.",0.99],
+		["anta","antiyo",".ti.",".f.$.pl.$.voc.",0.3],
+		["anta","anto",".ti.",".m.$.pl.$.nom.",0.99],
+		["anta","anto",".ti.",".m.$.pl.$.voc.",0.3],
+		["anta","anto",".ti.",".m.$.sg.$.nom.",0.99],
+		["anta","anto",".ti.",".nt.$.pl.$.nom.",0.99],
+		["anta","anto",".ti.",".nt.$.pl.$.voc.",0.3],
+		["anta","anto",".ti.",".nt.$.sg.$.nom.",0.99],
+		["anta","atā",".ti.",".m.$.sg.$.abl.",0.99],
+		["anta","atā",".ti.",".m.$.sg.$.inst.",0.99],
+		["anta","atā",".ti.",".nt.$.sg.$.abl.",0.99],
+		["anta","atā",".ti.",".nt.$.sg.$.inst.",0.99],
+		["anta","atā",".ti.",".m.$.sg.$.abl.",0.99],
+		["anta","atā",".ti.",".m.$.sg.$.inst.",0.99],
+		["anta","atā",".ti.",".nt.$.sg.$.abl.",0.99],
+		["anta","atā",".ti.",".nt.$.sg.$.inst.",0.99],
+		["anta","ataṃ",".ti.",".m.$.pl.$.dat.",0.99],
+		["anta","ataṃ",".ti.",".m.$.pl.$.gen.",0.99],
+		["anta","ataṃ",".ti.",".nt.$.pl.$.dat.",0.99],
+		["anta","ataṃ",".ti.",".nt.$.pl.$.gen.",0.99],
+		["anta","ataṃ",".ti.",".nt.$.pl.$.dat.",0.99],
+		["anta","ataṃ",".ti.",".nt.$.pl.$.gen.",0.99],
+		["anta","atena",".ti.",".m.$.sg.$.inst.",0.99],
+		["anta","atena",".ti.",".nt.$.sg.$.inst.",0.99],
+		["anta","atena",".ti.",".m.$.sg.$.inst.",0.99],
+		["anta","atena",".ti.",".nt.$.sg.$.inst.",0.99],
+		["anta","atī",".ti.",".f.$.pl.$.acc.",0.99],
+		["anta","atī",".ti.",".f.$.pl.$.nom.",0.99],
+		["anta","atī",".ti.",".f.$.pl.$.voc.",0.3],
+		["anta","atī",".ti.",".f.$.sg.$.nom.",0.99],
+		["anta","atī",".ti.",".f.$.sg.$.voc.",0.3],
+		["anta","ati",".ti.",".m.$.sg.$.loc.",0.99],
+		["anta","ati",".ti.",".nt.$.sg.$.loc.",0.99],
+		["anta","ati",".ti.",".m.$.sg.$.loc.",0.99],
+		["anta","ati",".ti.",".nt.$.sg.$.loc.",0.99],
+		["anta","atībhi",".ti.",".f.$.pl.$.abl.",0.99],
+		["anta","atībhi",".ti.",".f.$.pl.$.inst.",0.99],
+		["anta","atīhi",".ti.",".f.$.pl.$.abl.",0.99],
+		["anta","atīhi",".ti.",".f.$.pl.$.inst.",0.99],
+		["anta","atiṃ",".ti.",".f.$.sg.$.acc.",0.99],
+		["anta","atīnaṃ",".ti.",".f.$.pl.$.dat.",0.99],
+		["anta","atīnaṃ",".ti.",".f.$.pl.$.gen.",0.99],
+		["anta","atīsu",".ti.",".f.$.pl.$.loc.",0.99],
+		["anta","atiyā",".ti.",".f.$.sg.$.abl.",0.99],
+		["anta","atiyā",".ti.",".f.$.sg.$.dat.",0.99],
+		["anta","atiyā",".ti.",".f.$.sg.$.gen.",0.99],
+		["anta","atiyā",".ti.",".f.$.sg.$.inst.",0.99],
+		["anta","atiyā",".ti.",".f.$.sg.$.loc.",0.99],
+		["anta","atiyaṃ",".ti.",".f.$.sg.$.loc.",0.99],
+		["anta","atiyo",".ti.",".f.$.pl.$.acc.",0.99],
+		["anta","atiyo",".ti.",".f.$.pl.$.nom.",0.99],
+		["anta","atiyo",".ti.",".f.$.pl.$.voc.",0.3],
+		["anta","ato",".ti.",".m.$.sg.$.dat.",0.99],
+		["anta","ato",".ti.",".m.$.sg.$.gen.",0.99],
+		["anta","ato",".ti.",".nt.$.sg.$.dat.",0.99],
+		["anta","ato",".ti.",".nt.$.sg.$.gen.",0.99],
+		["anta","ato",".ti.",".m.$.sg.$.dat.",0.99],
+		["anta","ato",".ti.",".m.$.sg.$.gen.",0.99],
+		["anta","ato",".ti.",".nt.$.sg.$.dat.",0.99],
+		["anta","ato",".ti.",".nt.$.sg.$.gen.",0.99],
+		["mant","mā",".ti.",".m.$.pl.$.nom.",0.99],
+		["mant","mā",".ti.",".m.$.pl.$.voc.",0.3],
+		["mant","mā",".ti.",".m.$.sg.$.nom.",0.99],
+		["mant","ma",".ti.",".m.$.sg.$.voc.",0.3],
+		["mant","mā",".ti.",".m.$.sg.$.voc.",0.3],
+		["mant","mā",".ti.",".nt.$.pl.$.nom.",0.99],
+		["mant","mā",".ti.",".nt.$.pl.$.voc.",0.3],
+		["mant","ma",".ti.",".nt.$.sg.$.voc.",0.3],
+		["mant","mā",".ti.",".nt.$.sg.$.voc.",0.3],
+		["mant","mā",".ti.",".m.$.sg.$.voc.",0.3],
+		["mant","mā",".ti.",".nt.$.sg.$.voc.",0.3],
+		["mant","maṃ",".ti.",".m.$.sg.$.acc.",0.99],
+		["mant","maṃ",".ti.",".nt.$.sg.$.acc.",0.99],
+		["mant","maṃ",".ti.",".nt.$.sg.$.nom.",0.99],
+		["mant","maṃ",".ti.",".m.$.sg.$.nom.",0.99],
+		["mant","maṃ",".ti.",".m.$.sg.$.voc.",0.3],
+		["mant","maṃ",".ti.",".nt.$.sg.$.voc.",0.3],
+		["mant","maṃ",".ti.",".m.$.sg.$.voc.",0.3],
+		["mant","maṃ",".ti.",".nt.$.sg.$.voc.",0.3],
+		["mant","mānaṃ",".ti.",".m.$.pl.$.dat.",0.99],
+		["mant","mānaṃ",".ti.",".m.$.pl.$.gen.",0.99],
+		["mant","mantā",".ti.",".m.$.pl.$.nom.",0.99],
+		["mant","mantā",".ti.",".m.$.pl.$.voc.",0.3],
+		["mant","mantā",".ti.",".m.$.sg.$.abl.",0.99],
+		["mant","manta",".ti.",".m.$.sg.$.voc.",0.3],
+		["mant","mantā",".ti.",".m.$.sg.$.voc.",0.3],
+		["mant","manta",".ti.",".nt.$.pl.$.acc.",0.99],
+		["mant","mantā",".ti.",".nt.$.pl.$.acc.",0.99],
+		["mant","manta",".ti.",".nt.$.pl.$.nom.",0.99],
+		["mant","mantā",".ti.",".nt.$.pl.$.nom.",0.99],
+		["mant","manta",".ti.",".nt.$.pl.$.voc.",0.3],
+		["mant","mantā",".ti.",".nt.$.pl.$.voc.",0.3],
+		["mant","mantā",".ti.",".nt.$.sg.$.abl.",0.99],
+		["mant","manta",".ti.",".nt.$.sg.$.voc.",0.3],
+		["mant","mantā",".ti.",".nt.$.sg.$.voc.",0.3],
+		["mant","mantaṃ",".ti.",".m.$.sg.$.acc.",0.99],
+		["mant","mantaṃ",".ti.",".nt.$.sg.$.acc.",0.99],
+		["mant","mantaṃ",".ti.",".nt.$.sg.$.nom.",0.99],
+		["mant","mantaṃ",".ti.",".nt.$.sg.$.nom.",0.99],
+		["mant","mantaṃ",".ti.",".m.$.sg.$.acc.",0.99],
+		["mant","mantaṃ",".ti.",".nt.$.sg.$.acc.",0.99],
+		["mant","mantamhā",".ti.",".m.$.sg.$.abl.",0.99],
+		["mant","mantamhā",".ti.",".nt.$.sg.$.abl.",0.99],
+		["mant","mantamhā",".ti.",".m.$.sg.$.abl.",0.99],
+		["mant","mantamhā",".ti.",".nt.$.sg.$.abl.",0.99],
+		["mant","mantamhi",".ti.",".m.$.sg.$.loc.",0.99],
+		["mant","mantamhi",".ti.",".nt.$.sg.$.loc.",0.99],
+		["mant","mantamhi",".ti.",".m.$.sg.$.loc.",0.99],
+		["mant","mantamhi",".ti.",".nt.$.sg.$.loc.",0.99],
+		["mant","mantānaṃ",".ti.",".m.$.pl.$.dat.",0.99],
+		["mant","mantānaṃ",".ti.",".m.$.pl.$.gen.",0.99],
+		["mant","mantānaṃ",".ti.",".nt.$.pl.$.dat.",0.99],
+		["mant","mantānaṃ",".ti.",".nt.$.pl.$.gen.",0.99],
+		["mant","mantānaṃ",".ti.",".nt.$.pl.$.dat.",0.99],
+		["mant","mantānaṃ",".ti.",".nt.$.pl.$.gen.",0.99],
+		["mant","mantani",".ti.",".nt.$.pl.$.acc.",0.99],
+		["mant","mantāni",".ti.",".nt.$.pl.$.acc.",0.99],
+		["mant","mantani",".ti.",".nt.$.pl.$.nom.",0.99],
+		["mant","mantāni",".ti.",".nt.$.pl.$.nom.",0.99],
+		["mant","mantani",".ti.",".nt.$.pl.$.voc.",0.3],
+		["mant","mantāni",".ti.",".nt.$.pl.$.voc.",0.3],
+		["mant","mantasmā",".ti.",".m.$.sg.$.abl.",0.99],
+		["mant","mantasmā",".ti.",".nt.$.sg.$.abl.",0.99],
+		["mant","mantasmā",".ti.",".m.$.sg.$.abl.",0.99],
+		["mant","mantasmā",".ti.",".nt.$.sg.$.abl.",0.99],
+		["mant","mantasmiṃ",".ti.",".m.$.sg.$.loc.",0.99],
+		["mant","mantasmiṃ",".ti.",".nt.$.sg.$.loc.",0.99],
+		["mant","mantasmiṃ",".ti.",".m.$.sg.$.loc.",0.99],
+		["mant","mantasmiṃ",".ti.",".nt.$.sg.$.loc.",0.99],
+		["mant","mantassa",".ti.",".m.$.sg.$.dat.",0.99],
+		["mant","mantassa",".ti.",".m.$.sg.$.gen.",0.99],
+		["mant","mantassa",".ti.",".nt.$.sg.$.dat.",0.99],
+		["mant","mantassa",".ti.",".nt.$.sg.$.gen.",0.99],
+		["mant","mantassa",".ti.",".m.$.sg.$.dat.",0.99],
+		["mant","mantassa",".ti.",".m.$.sg.$.gen.",0.99],
+		["mant","mantassa",".ti.",".nt.$.sg.$.dat.",0.99],
+		["mant","mantassa",".ti.",".nt.$.sg.$.gen.",0.99],
+		["mant","mante",".ti.",".m.$.pl.$.acc.",0.99],
+		["mant","mante",".ti.",".m.$.sg.$.loc.",0.99],
+		["mant","mante",".ti.",".nt.$.pl.$.acc.",0.99],
+		["mant","mante",".ti.",".nt.$.sg.$.loc.",0.99],
+		["mant","mantebhi",".ti.",".m.$.pl.$.abl.",0.99],
+		["mant","mantebhi",".ti.",".m.$.pl.$.inst.",0.99],
+		["mant","mantebhi",".ti.",".nt.$.pl.$.abl.",0.99],
+		["mant","mantebhi",".ti.",".nt.$.pl.$.inst.",0.99],
+		["mant","mantehi",".ti.",".m.$.pl.$.abl.",0.99],
+		["mant","mantehi",".ti.",".m.$.pl.$.inst.",0.99],
+		["mant","mantehi",".ti.",".nt.$.pl.$.abl.",0.99],
+		["mant","mantehi",".ti.",".nt.$.pl.$.inst.",0.99],
+		["mant","mantesu",".ti.",".m.$.pl.$.loc.",0.99],
+		["mant","mantesu",".ti.",".nt.$.pl.$.loc.",0.99],
+		["mant","mantesu",".ti.",".nt.$.pl.$.loc.",0.99],
+		["mant","mantī",".ti.",".f.$.pl.$.acc.",0.99],
+		["mant","mantī",".ti.",".f.$.pl.$.nom.",0.99],
+		["mant","mantī",".ti.",".f.$.pl.$.voc.",0.3],
+		["mant","mantī",".ti.",".f.$.sg.$.nom.",0.99],
+		["mant","mantī",".ti.",".f.$.sg.$.voc.",0.3],
+		["mant","mantībhi",".ti.",".f.$.pl.$.abl.",0.99],
+		["mant","mantībhi",".ti.",".f.$.pl.$.inst.",0.99],
+		["mant","mantīhi",".ti.",".f.$.pl.$.abl.",0.99],
+		["mant","mantīhi",".ti.",".f.$.pl.$.inst.",0.99],
+		["mant","mantiṃ",".ti.",".f.$.sg.$.acc.",0.99],
+		["mant","mantīnaṃ",".ti.",".f.$.pl.$.dat.",0.99],
+		["mant","mantīnaṃ",".ti.",".f.$.pl.$.gen.",0.99],
+		["mant","mantīsu",".ti.",".f.$.pl.$.loc.",0.99],
+		["mant","mantiyā",".ti.",".f.$.sg.$.abl.",0.99],
+		["mant","mantiyā",".ti.",".f.$.sg.$.dat.",0.99],
+		["mant","mantiyā",".ti.",".f.$.sg.$.gen.",0.99],
+		["mant","mantiyā",".ti.",".f.$.sg.$.inst.",0.99],
+		["mant","mantiyā",".ti.",".f.$.sg.$.loc.",0.99],
+		["mant","mantiyaṃ",".ti.",".f.$.sg.$.loc.",0.99],
+		["mant","mantiyo",".ti.",".f.$.pl.$.acc.",0.99],
+		["mant","mantiyo",".ti.",".f.$.pl.$.nom.",0.99],
+		["mant","mantiyo",".ti.",".f.$.pl.$.voc.",0.3],
+		["mant","manto",".ti.",".m.$.pl.$.nom.",0.99],
+		["mant","manto",".ti.",".m.$.pl.$.voc.",0.3],
+		["mant","manto",".ti.",".m.$.sg.$.nom.",0.99],
+		["mant","manto",".ti.",".nt.$.pl.$.nom.",0.99],
+		["mant","manto",".ti.",".nt.$.pl.$.voc.",0.3],
+		["mant","manto",".ti.",".nt.$.sg.$.nom.",0.99],
+		["mant","matā",".ti.",".m.$.sg.$.abl.",0.99],
+		["mant","matā",".ti.",".m.$.sg.$.inst.",0.99],
+		["mant","matā",".ti.",".nt.$.sg.$.abl.",0.99],
+		["mant","matā",".ti.",".nt.$.sg.$.inst.",0.99],
+		["mant","matā",".ti.",".m.$.sg.$.abl.",0.99],
+		["mant","matā",".ti.",".m.$.sg.$.inst.",0.99],
+		["mant","matā",".ti.",".nt.$.sg.$.abl.",0.99],
+		["mant","matā",".ti.",".nt.$.sg.$.inst.",0.99],
+		["mant","mataṃ",".ti.",".m.$.pl.$.dat.",0.99],
+		["mant","mataṃ",".ti.",".m.$.pl.$.gen.",0.99],
+		["mant","mataṃ",".ti.",".nt.$.pl.$.dat.",0.99],
+		["mant","mataṃ",".ti.",".nt.$.pl.$.gen.",0.99],
+		["mant","mataṃ",".ti.",".nt.$.pl.$.dat.",0.99],
+		["mant","mataṃ",".ti.",".nt.$.pl.$.gen.",0.99],
+		["mant","matena",".ti.",".m.$.sg.$.inst.",0.99],
+		["mant","matena",".ti.",".nt.$.sg.$.inst.",0.99],
+		["mant","matena",".ti.",".m.$.sg.$.inst.",0.99],
+		["mant","matena",".ti.",".nt.$.sg.$.inst.",0.99],
+		["mant","matī",".ti.",".f.$.pl.$.acc.",0.99],
+		["mant","matī",".ti.",".f.$.pl.$.nom.",0.99],
+		["mant","matī",".ti.",".f.$.pl.$.voc.",0.3],
+		["mant","matī",".ti.",".f.$.sg.$.nom.",0.99],
+		["mant","matī",".ti.",".f.$.sg.$.voc.",0.3],
+		["mant","mati",".ti.",".m.$.sg.$.loc.",0.99],
+		["mant","mati",".ti.",".nt.$.sg.$.loc.",0.99],
+		["mant","mati",".ti.",".m.$.sg.$.loc.",0.99],
+		["mant","mati",".ti.",".nt.$.sg.$.loc.",0.99],
+		["mant","matībhi",".ti.",".f.$.pl.$.abl.",0.99],
+		["mant","matībhi",".ti.",".f.$.pl.$.inst.",0.99],
+		["mant","matīhi",".ti.",".f.$.pl.$.abl.",0.99],
+		["mant","matīhi",".ti.",".f.$.pl.$.inst.",0.99],
+		["mant","matiṃ",".ti.",".f.$.sg.$.acc.",0.99],
+		["mant","matīnaṃ",".ti.",".f.$.pl.$.dat.",0.99],
+		["mant","matīnaṃ",".ti.",".f.$.pl.$.gen.",0.99],
+		["mant","matīsu",".ti.",".f.$.pl.$.loc.",0.99],
+		["mant","matiyā",".ti.",".f.$.sg.$.abl.",0.99],
+		["mant","matiyā",".ti.",".f.$.sg.$.dat.",0.99],
+		["mant","matiyā",".ti.",".f.$.sg.$.gen.",0.99],
+		["mant","matiyā",".ti.",".f.$.sg.$.inst.",0.99],
+		["mant","matiyā",".ti.",".f.$.sg.$.loc.",0.99],
+		["mant","matiyaṃ",".ti.",".f.$.sg.$.loc.",0.99],
+		["mant","matiyo",".ti.",".f.$.pl.$.acc.",0.99],
+		["mant","matiyo",".ti.",".f.$.pl.$.nom.",0.99],
+		["mant","matiyo",".ti.",".f.$.pl.$.voc.",0.3],
+		["mant","mato",".ti.",".m.$.sg.$.dat.",0.99],
+		["mant","mato",".ti.",".m.$.sg.$.gen.",0.99],
+		["mant","mato",".ti.",".nt.$.sg.$.dat.",0.99],
+		["mant","mato",".ti.",".nt.$.sg.$.gen.",0.99],
+		["mant","mato",".ti.",".m.$.sg.$.dat.",0.99],
+		["mant","mato",".ti.",".m.$.sg.$.gen.",0.99],
+		["mant","mato",".ti.",".nt.$.sg.$.dat.",0.99],
+		["mant","mato",".ti.",".nt.$.sg.$.gen.",0.99],
+		["mant","me",".ti.",".m.$.pl.$.acc.",0.99],
+		["mant","mebhi",".ti.",".m.$.pl.$.abl.",0.99],
+		["mant","mebhi",".ti.",".m.$.pl.$.inst.",0.99],
+		["mant","mehi",".ti.",".m.$.pl.$.abl.",0.99],
+		["mant","mehi",".ti.",".m.$.pl.$.inst.",0.99],
+		["mant","mesu",".ti.",".m.$.pl.$.loc.",0.99],
+		["vant","vā",".ti.",".m.$.pl.$.nom.",0.99],
+		["vant","vā",".ti.",".m.$.pl.$.voc.",0.3],
+		["vant","vā",".ti.",".m.$.sg.$.nom.",0.99],
+		["vant","va",".ti.",".m.$.sg.$.voc.",0.3],
+		["vant","vā",".ti.",".m.$.sg.$.voc.",0.3],
+		["vant","vā",".ti.",".nt.$.pl.$.nom.",0.99],
+		["vant","vā",".ti.",".nt.$.pl.$.voc.",0.3],
+		["vant","va",".ti.",".nt.$.sg.$.voc.",0.3],
+		["vant","vā",".ti.",".nt.$.sg.$.voc.",0.3],
+		["vant","vā",".ti.",".m.$.sg.$.voc.",0.3],
+		["vant","vā",".ti.",".nt.$.sg.$.voc.",0.3],
+		["vant","vaṃ",".ti.",".m.$.sg.$.acc.",0.99],
+		["vant","vaṃ",".ti.",".nt.$.sg.$.acc.",0.99],
+		["vant","vaṃ",".ti.",".nt.$.sg.$.nom.",0.99],
+		["vant","vaṃ",".ti.",".m.$.sg.$.nom.",0.99],
+		["vant","vaṃ",".ti.",".m.$.sg.$.voc.",0.3],
+		["vant","vaṃ",".ti.",".nt.$.sg.$.voc.",0.3],
+		["vant","vaṃ",".ti.",".m.$.sg.$.voc.",0.3],
+		["vant","vaṃ",".ti.",".nt.$.sg.$.voc.",0.3],
+		["vant","vānaṃ",".ti.",".m.$.pl.$.dat.",0.99],
+		["vant","vānaṃ",".ti.",".m.$.pl.$.gen.",0.99],
+		["vant","vantā",".ti.",".m.$.pl.$.nom.",0.99],
+		["vant","vantā",".ti.",".m.$.pl.$.voc.",0.3],
+		["vant","vantā",".ti.",".m.$.sg.$.abl.",0.99],
+		["vant","vanta",".ti.",".m.$.sg.$.voc.",0.3],
+		["vant","vantā",".ti.",".m.$.sg.$.voc.",0.3],
+		["vant","vanta",".ti.",".nt.$.pl.$.acc.",0.99],
+		["vant","vantā",".ti.",".nt.$.pl.$.acc.",0.99],
+		["vant","vanta",".ti.",".nt.$.pl.$.nom.",0.99],
+		["vant","vantā",".ti.",".nt.$.pl.$.nom.",0.99],
+		["vant","vanta",".ti.",".nt.$.pl.$.voc.",0.3],
+		["vant","vantā",".ti.",".nt.$.pl.$.voc.",0.3],
+		["vant","vantā",".ti.",".nt.$.sg.$.abl.",0.99],
+		["vant","vanta",".ti.",".nt.$.sg.$.voc.",0.3],
+		["vant","vantā",".ti.",".nt.$.sg.$.voc.",0.3],
+		["vant","vantaṃ",".ti.",".m.$.sg.$.acc.",0.99],
+		["vant","vantaṃ",".ti.",".nt.$.sg.$.acc.",0.99],
+		["vant","vantaṃ",".ti.",".nt.$.sg.$.nom.",0.99],
+		["vant","vantaṃ",".ti.",".nt.$.sg.$.nom.",0.99],
+		["vant","vantaṃ",".ti.",".m.$.sg.$.acc.",0.99],
+		["vant","vantaṃ",".ti.",".nt.$.sg.$.acc.",0.99],
+		["vant","vantamhā",".ti.",".m.$.sg.$.abl.",0.99],
+		["vant","vantamhā",".ti.",".nt.$.sg.$.abl.",0.99],
+		["vant","vantamhā",".ti.",".m.$.sg.$.abl.",0.99],
+		["vant","vantamhā",".ti.",".nt.$.sg.$.abl.",0.99],
+		["vant","vantamhi",".ti.",".m.$.sg.$.loc.",0.99],
+		["vant","vantamhi",".ti.",".nt.$.sg.$.loc.",0.99],
+		["vant","vantamhi",".ti.",".m.$.sg.$.loc.",0.99],
+		["vant","vantamhi",".ti.",".nt.$.sg.$.loc.",0.99],
+		["vant","vantānaṃ",".ti.",".m.$.pl.$.dat.",0.99],
+		["vant","vantānaṃ",".ti.",".m.$.pl.$.gen.",0.99],
+		["vant","vantānaṃ",".ti.",".nt.$.pl.$.dat.",0.99],
+		["vant","vantānaṃ",".ti.",".nt.$.pl.$.gen.",0.99],
+		["vant","vantānaṃ",".ti.",".nt.$.pl.$.dat.",0.99],
+		["vant","vantānaṃ",".ti.",".nt.$.pl.$.gen.",0.99],
+		["vant","vantani",".ti.",".nt.$.pl.$.acc.",0.99],
+		["vant","vantāni",".ti.",".nt.$.pl.$.acc.",0.99],
+		["vant","vantani",".ti.",".nt.$.pl.$.nom.",0.99],
+		["vant","vantāni",".ti.",".nt.$.pl.$.nom.",0.99],
+		["vant","vantani",".ti.",".nt.$.pl.$.voc.",0.3],
+		["vant","vantāni",".ti.",".nt.$.pl.$.voc.",0.3],
+		["vant","vantasmā",".ti.",".m.$.sg.$.abl.",0.99],
+		["vant","vantasmā",".ti.",".nt.$.sg.$.abl.",0.99],
+		["vant","vantasmā",".ti.",".m.$.sg.$.abl.",0.99],
+		["vant","vantasmā",".ti.",".nt.$.sg.$.abl.",0.99],
+		["vant","vantasmiṃ",".ti.",".m.$.sg.$.loc.",0.99],
+		["vant","vantasmiṃ",".ti.",".nt.$.sg.$.loc.",0.99],
+		["vant","vantasmiṃ",".ti.",".m.$.sg.$.loc.",0.99],
+		["vant","vantasmiṃ",".ti.",".nt.$.sg.$.loc.",0.99],
+		["vant","vantassa",".ti.",".m.$.sg.$.dat.",0.99],
+		["vant","vantassa",".ti.",".m.$.sg.$.gen.",0.99],
+		["vant","vantassa",".ti.",".nt.$.sg.$.dat.",0.99],
+		["vant","vantassa",".ti.",".nt.$.sg.$.gen.",0.99],
+		["vant","vantassa",".ti.",".m.$.sg.$.dat.",0.99],
+		["vant","vantassa",".ti.",".m.$.sg.$.gen.",0.99],
+		["vant","vantassa",".ti.",".nt.$.sg.$.dat.",0.99],
+		["vant","vantassa",".ti.",".nt.$.sg.$.gen.",0.99],
+		["vant","vante",".ti.",".m.$.pl.$.acc.",0.99],
+		["vant","vante",".ti.",".m.$.sg.$.loc.",0.99],
+		["vant","vante",".ti.",".nt.$.pl.$.acc.",0.99],
+		["vant","vante",".ti.",".nt.$.sg.$.loc.",0.99],
+		["vant","vantebhi",".ti.",".m.$.pl.$.abl.",0.99],
+		["vant","vantebhi",".ti.",".m.$.pl.$.inst.",0.99],
+		["vant","vantebhi",".ti.",".nt.$.pl.$.abl.",0.99],
+		["vant","vantebhi",".ti.",".nt.$.pl.$.inst.",0.99],
+		["vant","vantehi",".ti.",".m.$.pl.$.abl.",0.99],
+		["vant","vantehi",".ti.",".m.$.pl.$.inst.",0.99],
+		["vant","vantehi",".ti.",".nt.$.pl.$.abl.",0.99],
+		["vant","vantehi",".ti.",".nt.$.pl.$.inst.",0.99],
+		["vant","vantesu",".ti.",".m.$.pl.$.loc.",0.99],
+		["vant","vantesu",".ti.",".nt.$.pl.$.loc.",0.99],
+		["vant","vantesu",".ti.",".nt.$.pl.$.loc.",0.99],
+		["vant","vantī",".ti.",".f.$.pl.$.acc.",0.99],
+		["vant","vantī",".ti.",".f.$.pl.$.nom.",0.99],
+		["vant","vantī",".ti.",".f.$.pl.$.voc.",0.3],
+		["vant","vantī",".ti.",".f.$.sg.$.nom.",0.99],
+		["vant","vantī",".ti.",".f.$.sg.$.voc.",0.3],
+		["vant","vantībhi",".ti.",".f.$.pl.$.abl.",0.99],
+		["vant","vantībhi",".ti.",".f.$.pl.$.inst.",0.99],
+		["vant","vantīhi",".ti.",".f.$.pl.$.abl.",0.99],
+		["vant","vantīhi",".ti.",".f.$.pl.$.inst.",0.99],
+		["vant","vantiṃ",".ti.",".f.$.sg.$.acc.",0.99],
+		["vant","vantīnaṃ",".ti.",".f.$.pl.$.dat.",0.99],
+		["vant","vantīnaṃ",".ti.",".f.$.pl.$.gen.",0.99],
+		["vant","vantīsu",".ti.",".f.$.pl.$.loc.",0.99],
+		["vant","vantiyā",".ti.",".f.$.sg.$.abl.",0.99],
+		["vant","vantiyā",".ti.",".f.$.sg.$.dat.",0.99],
+		["vant","vantiyā",".ti.",".f.$.sg.$.gen.",0.99],
+		["vant","vantiyā",".ti.",".f.$.sg.$.inst.",0.99],
+		["vant","vantiyā",".ti.",".f.$.sg.$.loc.",0.99],
+		["vant","vantiyaṃ",".ti.",".f.$.sg.$.loc.",0.99],
+		["vant","vantiyo",".ti.",".f.$.pl.$.acc.",0.99],
+		["vant","vantiyo",".ti.",".f.$.pl.$.nom.",0.99],
+		["vant","vantiyo",".ti.",".f.$.pl.$.voc.",0.3],
+		["vant","vanto",".ti.",".m.$.pl.$.nom.",0.99],
+		["vant","vanto",".ti.",".m.$.pl.$.voc.",0.3],
+		["vant","vanto",".ti.",".m.$.sg.$.nom.",0.99],
+		["vant","vanto",".ti.",".nt.$.pl.$.nom.",0.99],
+		["vant","vanto",".ti.",".nt.$.pl.$.voc.",0.3],
+		["vant","vanto",".ti.",".nt.$.sg.$.nom.",0.99],
+		["vant","vatā",".ti.",".m.$.sg.$.abl.",0.99],
+		["vant","vatā",".ti.",".m.$.sg.$.inst.",0.99],
+		["vant","vatā",".ti.",".nt.$.sg.$.abl.",0.99],
+		["vant","vatā",".ti.",".nt.$.sg.$.inst.",0.99],
+		["vant","vatā",".ti.",".m.$.sg.$.abl.",0.99],
+		["vant","vatā",".ti.",".m.$.sg.$.inst.",0.99],
+		["vant","vatā",".ti.",".nt.$.sg.$.abl.",0.99],
+		["vant","vatā",".ti.",".nt.$.sg.$.inst.",0.99],
+		["vant","vataṃ",".ti.",".m.$.pl.$.dat.",0.99],
+		["vant","vataṃ",".ti.",".m.$.pl.$.gen.",0.99],
+		["vant","vataṃ",".ti.",".nt.$.pl.$.dat.",0.99],
+		["vant","vataṃ",".ti.",".nt.$.pl.$.gen.",0.99],
+		["vant","vataṃ",".ti.",".nt.$.pl.$.dat.",0.99],
+		["vant","vataṃ",".ti.",".nt.$.pl.$.gen.",0.99],
+		["vant","vatena",".ti.",".m.$.sg.$.inst.",0.99],
+		["vant","vatena",".ti.",".nt.$.sg.$.inst.",0.99],
+		["vant","vatena",".ti.",".m.$.sg.$.inst.",0.99],
+		["vant","vatena",".ti.",".nt.$.sg.$.inst.",0.99],
+		["vant","vatī",".ti.",".f.$.pl.$.acc.",0.99],
+		["vant","vatī",".ti.",".f.$.pl.$.nom.",0.99],
+		["vant","vatī",".ti.",".f.$.pl.$.voc.",0.3],
+		["vant","vatī",".ti.",".f.$.sg.$.nom.",0.99],
+		["vant","vatī",".ti.",".f.$.sg.$.voc.",0.3],
+		["vant","vati",".ti.",".m.$.sg.$.loc.",0.99],
+		["vant","vati",".ti.",".nt.$.sg.$.loc.",0.99],
+		["vant","vati",".ti.",".m.$.sg.$.loc.",0.99],
+		["vant","vati",".ti.",".nt.$.sg.$.loc.",0.99],
+		["vant","vatībhi",".ti.",".f.$.pl.$.abl.",0.99],
+		["vant","vatībhi",".ti.",".f.$.pl.$.inst.",0.99],
+		["vant","vatīhi",".ti.",".f.$.pl.$.abl.",0.99],
+		["vant","vatīhi",".ti.",".f.$.pl.$.inst.",0.99],
+		["vant","vatiṃ",".ti.",".f.$.sg.$.acc.",0.99],
+		["vant","vatīnaṃ",".ti.",".f.$.pl.$.dat.",0.99],
+		["vant","vatīnaṃ",".ti.",".f.$.pl.$.gen.",0.99],
+		["vant","vatīsu",".ti.",".f.$.pl.$.loc.",0.99],
+		["vant","vatiyā",".ti.",".f.$.sg.$.abl.",0.99],
+		["vant","vatiyā",".ti.",".f.$.sg.$.dat.",0.99],
+		["vant","vatiyā",".ti.",".f.$.sg.$.gen.",0.99],
+		["vant","vatiyā",".ti.",".f.$.sg.$.inst.",0.99],
+		["vant","vatiyā",".ti.",".f.$.sg.$.loc.",0.99],
+		["vant","vatiyaṃ",".ti.",".f.$.sg.$.loc.",0.99],
+		["vant","vatiyo",".ti.",".f.$.pl.$.acc.",0.99],
+		["vant","vatiyo",".ti.",".f.$.pl.$.nom.",0.99],
+		["vant","vatiyo",".ti.",".f.$.pl.$.voc.",0.3],
+		["vant","vato",".ti.",".m.$.sg.$.dat.",0.99],
+		["vant","vato",".ti.",".m.$.sg.$.gen.",0.99],
+		["vant","vato",".ti.",".nt.$.sg.$.dat.",0.99],
+		["vant","vato",".ti.",".nt.$.sg.$.gen.",0.99],
+		["vant","vato",".ti.",".m.$.sg.$.dat.",0.99],
+		["vant","vato",".ti.",".m.$.sg.$.gen.",0.99],
+		["vant","vato",".ti.",".nt.$.sg.$.dat.",0.99],
+		["vant","vato",".ti.",".nt.$.sg.$.gen.",0.99],
+		["vant","ve",".ti.",".m.$.pl.$.acc.",0.99],
+		["vant","vebhi",".ti.",".m.$.pl.$.abl.",0.99],
+		["vant","vebhi",".ti.",".m.$.pl.$.inst.",0.99],
+		["vant","vehi",".ti.",".m.$.pl.$.abl.",0.99],
+		["vant","vehi",".ti.",".m.$.pl.$.inst.",0.99],
+		["vant","vesu",".ti.",".m.$.pl.$.loc.",0.99],
+		["mantu","mā",".ti.",".m.$.pl.$.nom.",0.99],
+		["mantu","mā",".ti.",".m.$.pl.$.voc.",0.3],
+		["mantu","mā",".ti.",".m.$.sg.$.nom.",0.99],
+		["mantu","ma",".ti.",".m.$.sg.$.voc.",0.3],
+		["mantu","mā",".ti.",".m.$.sg.$.voc.",0.3],
+		["mantu","mā",".ti.",".nt.$.pl.$.nom.",0.99],
+		["mantu","mā",".ti.",".nt.$.pl.$.voc.",0.3],
+		["mantu","ma",".ti.",".nt.$.sg.$.voc.",0.3],
+		["mantu","mā",".ti.",".nt.$.sg.$.voc.",0.3],
+		["mantu","mā",".ti.",".m.$.sg.$.voc.",0.3],
+		["mantu","mā",".ti.",".nt.$.sg.$.voc.",0.3],
+		["mantu","maṃ",".ti.",".m.$.sg.$.acc.",0.99],
+		["mantu","maṃ",".ti.",".nt.$.sg.$.acc.",0.99],
+		["mantu","maṃ",".ti.",".nt.$.sg.$.nom.",0.99],
+		["mantu","maṃ",".ti.",".m.$.sg.$.nom.",0.99],
+		["mantu","maṃ",".ti.",".m.$.sg.$.voc.",0.3],
+		["mantu","maṃ",".ti.",".nt.$.sg.$.voc.",0.3],
+		["mantu","maṃ",".ti.",".m.$.sg.$.voc.",0.3],
+		["mantu","maṃ",".ti.",".nt.$.sg.$.voc.",0.3],
+		["mantu","mānaṃ",".ti.",".m.$.pl.$.dat.",0.99],
+		["mantu","mānaṃ",".ti.",".m.$.pl.$.gen.",0.99],
+		["mantu","mantā",".ti.",".m.$.pl.$.nom.",0.99],
+		["mantu","mantā",".ti.",".m.$.pl.$.voc.",0.3],
+		["mantu","mantā",".ti.",".m.$.sg.$.abl.",0.99],
+		["mantu","manta",".ti.",".m.$.sg.$.voc.",0.3],
+		["mantu","mantā",".ti.",".m.$.sg.$.voc.",0.3],
+		["mantu","manta",".ti.",".nt.$.pl.$.acc.",0.99],
+		["mantu","mantā",".ti.",".nt.$.pl.$.acc.",0.99],
+		["mantu","manta",".ti.",".nt.$.pl.$.nom.",0.99],
+		["mantu","mantā",".ti.",".nt.$.pl.$.nom.",0.99],
+		["mantu","manta",".ti.",".nt.$.pl.$.voc.",0.3],
+		["mantu","mantā",".ti.",".nt.$.pl.$.voc.",0.3],
+		["mantu","mantā",".ti.",".nt.$.sg.$.abl.",0.99],
+		["mantu","manta",".ti.",".nt.$.sg.$.voc.",0.3],
+		["mantu","mantā",".ti.",".nt.$.sg.$.voc.",0.3],
+		["mantu","mantaṃ",".ti.",".m.$.sg.$.acc.",0.99],
+		["mantu","mantaṃ",".ti.",".nt.$.sg.$.acc.",0.99],
+		["mantu","mantaṃ",".ti.",".nt.$.sg.$.nom.",0.99],
+		["mantu","mantaṃ",".ti.",".nt.$.sg.$.nom.",0.99],
+		["mantu","mantaṃ",".ti.",".m.$.sg.$.acc.",0.99],
+		["mantu","mantaṃ",".ti.",".nt.$.sg.$.acc.",0.99],
+		["mantu","mantamhā",".ti.",".m.$.sg.$.abl.",0.99],
+		["mantu","mantamhā",".ti.",".nt.$.sg.$.abl.",0.99],
+		["mantu","mantamhā",".ti.",".m.$.sg.$.abl.",0.99],
+		["mantu","mantamhā",".ti.",".nt.$.sg.$.abl.",0.99],
+		["mantu","mantamhi",".ti.",".m.$.sg.$.loc.",0.99],
+		["mantu","mantamhi",".ti.",".nt.$.sg.$.loc.",0.99],
+		["mantu","mantamhi",".ti.",".m.$.sg.$.loc.",0.99],
+		["mantu","mantamhi",".ti.",".nt.$.sg.$.loc.",0.99],
+		["mantu","mantānaṃ",".ti.",".m.$.pl.$.dat.",0.99],
+		["mantu","mantānaṃ",".ti.",".m.$.pl.$.gen.",0.99],
+		["mantu","mantānaṃ",".ti.",".nt.$.pl.$.dat.",0.99],
+		["mantu","mantānaṃ",".ti.",".nt.$.pl.$.gen.",0.99],
+		["mantu","mantānaṃ",".ti.",".nt.$.pl.$.dat.",0.99],
+		["mantu","mantānaṃ",".ti.",".nt.$.pl.$.gen.",0.99],
+		["mantu","mantani",".ti.",".nt.$.pl.$.acc.",0.99],
+		["mantu","mantāni",".ti.",".nt.$.pl.$.acc.",0.99],
+		["mantu","mantani",".ti.",".nt.$.pl.$.nom.",0.99],
+		["mantu","mantāni",".ti.",".nt.$.pl.$.nom.",0.99],
+		["mantu","mantani",".ti.",".nt.$.pl.$.voc.",0.3],
+		["mantu","mantāni",".ti.",".nt.$.pl.$.voc.",0.3],
+		["mantu","mantasmā",".ti.",".m.$.sg.$.abl.",0.99],
+		["mantu","mantasmā",".ti.",".nt.$.sg.$.abl.",0.99],
+		["mantu","mantasmā",".ti.",".m.$.sg.$.abl.",0.99],
+		["mantu","mantasmā",".ti.",".nt.$.sg.$.abl.",0.99],
+		["mantu","mantasmiṃ",".ti.",".m.$.sg.$.loc.",0.99],
+		["mantu","mantasmiṃ",".ti.",".nt.$.sg.$.loc.",0.99],
+		["mantu","mantasmiṃ",".ti.",".m.$.sg.$.loc.",0.99],
+		["mantu","mantasmiṃ",".ti.",".nt.$.sg.$.loc.",0.99],
+		["mantu","mantassa",".ti.",".m.$.sg.$.dat.",0.99],
+		["mantu","mantassa",".ti.",".m.$.sg.$.gen.",0.99],
+		["mantu","mantassa",".ti.",".nt.$.sg.$.dat.",0.99],
+		["mantu","mantassa",".ti.",".nt.$.sg.$.gen.",0.99],
+		["mantu","mantassa",".ti.",".m.$.sg.$.dat.",0.99],
+		["mantu","mantassa",".ti.",".m.$.sg.$.gen.",0.99],
+		["mantu","mantassa",".ti.",".nt.$.sg.$.dat.",0.99],
+		["mantu","mantassa",".ti.",".nt.$.sg.$.gen.",0.99],
+		["mantu","mante",".ti.",".m.$.pl.$.acc.",0.99],
+		["mantu","mante",".ti.",".m.$.sg.$.loc.",0.99],
+		["mantu","mante",".ti.",".nt.$.pl.$.acc.",0.99],
+		["mantu","mante",".ti.",".nt.$.sg.$.loc.",0.99],
+		["mantu","mantebhi",".ti.",".m.$.pl.$.abl.",0.99],
+		["mantu","mantebhi",".ti.",".m.$.pl.$.inst.",0.99],
+		["mantu","mantebhi",".ti.",".nt.$.pl.$.abl.",0.99],
+		["mantu","mantebhi",".ti.",".nt.$.pl.$.inst.",0.99],
+		["mantu","mantehi",".ti.",".m.$.pl.$.abl.",0.99],
+		["mantu","mantehi",".ti.",".m.$.pl.$.inst.",0.99],
+		["mantu","mantehi",".ti.",".nt.$.pl.$.abl.",0.99],
+		["mantu","mantehi",".ti.",".nt.$.pl.$.inst.",0.99],
+		["mantu","mantesu",".ti.",".m.$.pl.$.loc.",0.99],
+		["mantu","mantesu",".ti.",".nt.$.pl.$.loc.",0.99],
+		["mantu","mantesu",".ti.",".nt.$.pl.$.loc.",0.99],
+		["mantu","mantī",".ti.",".f.$.pl.$.acc.",0.99],
+		["mantu","mantī",".ti.",".f.$.pl.$.nom.",0.99],
+		["mantu","mantī",".ti.",".f.$.pl.$.voc.",0.3],
+		["mantu","mantī",".ti.",".f.$.sg.$.nom.",0.99],
+		["mantu","mantī",".ti.",".f.$.sg.$.voc.",0.3],
+		["mantu","mantībhi",".ti.",".f.$.pl.$.abl.",0.99],
+		["mantu","mantībhi",".ti.",".f.$.pl.$.inst.",0.99],
+		["mantu","mantīhi",".ti.",".f.$.pl.$.abl.",0.99],
+		["mantu","mantīhi",".ti.",".f.$.pl.$.inst.",0.99],
+		["mantu","mantiṃ",".ti.",".f.$.sg.$.acc.",0.99],
+		["mantu","mantīnaṃ",".ti.",".f.$.pl.$.dat.",0.99],
+		["mantu","mantīnaṃ",".ti.",".f.$.pl.$.gen.",0.99],
+		["mantu","mantīsu",".ti.",".f.$.pl.$.loc.",0.99],
+		["mantu","mantiyā",".ti.",".f.$.sg.$.abl.",0.99],
+		["mantu","mantiyā",".ti.",".f.$.sg.$.dat.",0.99],
+		["mantu","mantiyā",".ti.",".f.$.sg.$.gen.",0.99],
+		["mantu","mantiyā",".ti.",".f.$.sg.$.inst.",0.99],
+		["mantu","mantiyā",".ti.",".f.$.sg.$.loc.",0.99],
+		["mantu","mantiyaṃ",".ti.",".f.$.sg.$.loc.",0.99],
+		["mantu","mantiyo",".ti.",".f.$.pl.$.acc.",0.99],
+		["mantu","mantiyo",".ti.",".f.$.pl.$.nom.",0.99],
+		["mantu","mantiyo",".ti.",".f.$.pl.$.voc.",0.3],
+		["mantu","manto",".ti.",".m.$.pl.$.nom.",0.99],
+		["mantu","manto",".ti.",".m.$.pl.$.voc.",0.3],
+		["mantu","manto",".ti.",".m.$.sg.$.nom.",0.99],
+		["mantu","manto",".ti.",".nt.$.pl.$.nom.",0.99],
+		["mantu","manto",".ti.",".nt.$.pl.$.voc.",0.3],
+		["mantu","manto",".ti.",".nt.$.sg.$.nom.",0.99],
+		["mantu","matā",".ti.",".m.$.sg.$.abl.",0.99],
+		["mantu","matā",".ti.",".m.$.sg.$.inst.",0.99],
+		["mantu","matā",".ti.",".nt.$.sg.$.abl.",0.99],
+		["mantu","matā",".ti.",".nt.$.sg.$.inst.",0.99],
+		["mantu","matā",".ti.",".m.$.sg.$.abl.",0.99],
+		["mantu","matā",".ti.",".m.$.sg.$.inst.",0.99],
+		["mantu","matā",".ti.",".nt.$.sg.$.abl.",0.99],
+		["mantu","matā",".ti.",".nt.$.sg.$.inst.",0.99],
+		["mantu","mataṃ",".ti.",".m.$.pl.$.dat.",0.99],
+		["mantu","mataṃ",".ti.",".m.$.pl.$.gen.",0.99],
+		["mantu","mataṃ",".ti.",".nt.$.pl.$.dat.",0.99],
+		["mantu","mataṃ",".ti.",".nt.$.pl.$.gen.",0.99],
+		["mantu","mataṃ",".ti.",".nt.$.pl.$.dat.",0.99],
+		["mantu","mataṃ",".ti.",".nt.$.pl.$.gen.",0.99],
+		["mantu","matena",".ti.",".m.$.sg.$.inst.",0.99],
+		["mantu","matena",".ti.",".nt.$.sg.$.inst.",0.99],
+		["mantu","matena",".ti.",".m.$.sg.$.inst.",0.99],
+		["mantu","matena",".ti.",".nt.$.sg.$.inst.",0.99],
+		["mantu","matī",".ti.",".f.$.pl.$.acc.",0.99],
+		["mantu","matī",".ti.",".f.$.pl.$.nom.",0.99],
+		["mantu","matī",".ti.",".f.$.pl.$.voc.",0.3],
+		["mantu","matī",".ti.",".f.$.sg.$.nom.",0.99],
+		["mantu","matī",".ti.",".f.$.sg.$.voc.",0.3],
+		["mantu","mati",".ti.",".m.$.sg.$.loc.",0.99],
+		["mantu","mati",".ti.",".nt.$.sg.$.loc.",0.99],
+		["mantu","mati",".ti.",".m.$.sg.$.loc.",0.99],
+		["mantu","mati",".ti.",".nt.$.sg.$.loc.",0.99],
+		["mantu","matībhi",".ti.",".f.$.pl.$.abl.",0.99],
+		["mantu","matībhi",".ti.",".f.$.pl.$.inst.",0.99],
+		["mantu","matīhi",".ti.",".f.$.pl.$.abl.",0.99],
+		["mantu","matīhi",".ti.",".f.$.pl.$.inst.",0.99],
+		["mantu","matiṃ",".ti.",".f.$.sg.$.acc.",0.99],
+		["mantu","matīnaṃ",".ti.",".f.$.pl.$.dat.",0.99],
+		["mantu","matīnaṃ",".ti.",".f.$.pl.$.gen.",0.99],
+		["mantu","matīsu",".ti.",".f.$.pl.$.loc.",0.99],
+		["mantu","matiyā",".ti.",".f.$.sg.$.abl.",0.99],
+		["mantu","matiyā",".ti.",".f.$.sg.$.dat.",0.99],
+		["mantu","matiyā",".ti.",".f.$.sg.$.gen.",0.99],
+		["mantu","matiyā",".ti.",".f.$.sg.$.inst.",0.99],
+		["mantu","matiyā",".ti.",".f.$.sg.$.loc.",0.99],
+		["mantu","matiyaṃ",".ti.",".f.$.sg.$.loc.",0.99],
+		["mantu","matiyo",".ti.",".f.$.pl.$.acc.",0.99],
+		["mantu","matiyo",".ti.",".f.$.pl.$.nom.",0.99],
+		["mantu","matiyo",".ti.",".f.$.pl.$.voc.",0.3],
+		["mantu","mato",".ti.",".m.$.sg.$.dat.",0.99],
+		["mantu","mato",".ti.",".m.$.sg.$.gen.",0.99],
+		["mantu","mato",".ti.",".nt.$.sg.$.dat.",0.99],
+		["mantu","mato",".ti.",".nt.$.sg.$.gen.",0.99],
+		["mantu","mato",".ti.",".m.$.sg.$.dat.",0.99],
+		["mantu","mato",".ti.",".m.$.sg.$.gen.",0.99],
+		["mantu","mato",".ti.",".nt.$.sg.$.dat.",0.99],
+		["mantu","mato",".ti.",".nt.$.sg.$.gen.",0.99],
+		["mantu","me",".ti.",".m.$.pl.$.acc.",0.99],
+		["mantu","mebhi",".ti.",".m.$.pl.$.abl.",0.99],
+		["mantu","mebhi",".ti.",".m.$.pl.$.inst.",0.99],
+		["mantu","mehi",".ti.",".m.$.pl.$.abl.",0.99],
+		["mantu","mehi",".ti.",".m.$.pl.$.inst.",0.99],
+		["mantu","mesu",".ti.",".m.$.pl.$.loc.",0.99],
+		["vantu","vā",".ti.",".m.$.pl.$.nom.",0.99],
+		["vantu","vā",".ti.",".m.$.pl.$.voc.",0.3],
+		["vantu","vā",".ti.",".m.$.sg.$.nom.",0.99],
+		["vantu","va",".ti.",".m.$.sg.$.voc.",0.3],
+		["vantu","vā",".ti.",".m.$.sg.$.voc.",0.3],
+		["vantu","vā",".ti.",".nt.$.pl.$.nom.",0.99],
+		["vantu","vā",".ti.",".nt.$.pl.$.voc.",0.3],
+		["vantu","va",".ti.",".nt.$.sg.$.voc.",0.3],
+		["vantu","vā",".ti.",".nt.$.sg.$.voc.",0.3],
+		["vantu","vā",".ti.",".m.$.sg.$.voc.",0.3],
+		["vantu","vā",".ti.",".nt.$.sg.$.voc.",0.3],
+		["vantu","vaṃ",".ti.",".m.$.sg.$.acc.",0.99],
+		["vantu","vaṃ",".ti.",".nt.$.sg.$.acc.",0.99],
+		["vantu","vaṃ",".ti.",".nt.$.sg.$.nom.",0.99],
+		["vantu","vaṃ",".ti.",".m.$.sg.$.nom.",0.99],
+		["vantu","vaṃ",".ti.",".m.$.sg.$.voc.",0.3],
+		["vantu","vaṃ",".ti.",".nt.$.sg.$.voc.",0.3],
+		["vantu","vaṃ",".ti.",".m.$.sg.$.voc.",0.3],
+		["vantu","vaṃ",".ti.",".nt.$.sg.$.voc.",0.3],
+		["vantu","vānaṃ",".ti.",".m.$.pl.$.dat.",0.99],
+		["vantu","vānaṃ",".ti.",".m.$.pl.$.gen.",0.99],
+		["vantu","vantā",".ti.",".m.$.pl.$.nom.",0.99],
+		["vantu","vantā",".ti.",".m.$.pl.$.voc.",0.3],
+		["vantu","vantā",".ti.",".m.$.sg.$.abl.",0.99],
+		["vantu","vanta",".ti.",".m.$.sg.$.voc.",0.3],
+		["vantu","vantā",".ti.",".m.$.sg.$.voc.",0.3],
+		["vantu","vanta",".ti.",".nt.$.pl.$.acc.",0.99],
+		["vantu","vantā",".ti.",".nt.$.pl.$.acc.",0.99],
+		["vantu","vanta",".ti.",".nt.$.pl.$.nom.",0.99],
+		["vantu","vantā",".ti.",".nt.$.pl.$.nom.",0.99],
+		["vantu","vanta",".ti.",".nt.$.pl.$.voc.",0.3],
+		["vantu","vantā",".ti.",".nt.$.pl.$.voc.",0.3],
+		["vantu","vantā",".ti.",".nt.$.sg.$.abl.",0.99],
+		["vantu","vanta",".ti.",".nt.$.sg.$.voc.",0.3],
+		["vantu","vantā",".ti.",".nt.$.sg.$.voc.",0.3],
+		["vantu","vantaṃ",".ti.",".m.$.sg.$.acc.",0.99],
+		["vantu","vantaṃ",".ti.",".nt.$.sg.$.acc.",0.99],
+		["vantu","vantaṃ",".ti.",".nt.$.sg.$.nom.",0.99],
+		["vantu","vantaṃ",".ti.",".nt.$.sg.$.nom.",0.99],
+		["vantu","vantaṃ",".ti.",".m.$.sg.$.acc.",0.99],
+		["vantu","vantaṃ",".ti.",".nt.$.sg.$.acc.",0.99],
+		["vantu","vantamhā",".ti.",".m.$.sg.$.abl.",0.99],
+		["vantu","vantamhā",".ti.",".nt.$.sg.$.abl.",0.99],
+		["vantu","vantamhā",".ti.",".m.$.sg.$.abl.",0.99],
+		["vantu","vantamhā",".ti.",".nt.$.sg.$.abl.",0.99],
+		["vantu","vantamhi",".ti.",".m.$.sg.$.loc.",0.99],
+		["vantu","vantamhi",".ti.",".nt.$.sg.$.loc.",0.99],
+		["vantu","vantamhi",".ti.",".m.$.sg.$.loc.",0.99],
+		["vantu","vantamhi",".ti.",".nt.$.sg.$.loc.",0.99],
+		["vantu","vantānaṃ",".ti.",".m.$.pl.$.dat.",0.99],
+		["vantu","vantānaṃ",".ti.",".m.$.pl.$.gen.",0.99],
+		["vantu","vantānaṃ",".ti.",".nt.$.pl.$.dat.",0.99],
+		["vantu","vantānaṃ",".ti.",".nt.$.pl.$.gen.",0.99],
+		["vantu","vantānaṃ",".ti.",".nt.$.pl.$.dat.",0.99],
+		["vantu","vantānaṃ",".ti.",".nt.$.pl.$.gen.",0.99],
+		["vantu","vantani",".ti.",".nt.$.pl.$.acc.",0.99],
+		["vantu","vantāni",".ti.",".nt.$.pl.$.acc.",0.99],
+		["vantu","vantani",".ti.",".nt.$.pl.$.nom.",0.99],
+		["vantu","vantāni",".ti.",".nt.$.pl.$.nom.",0.99],
+		["vantu","vantani",".ti.",".nt.$.pl.$.voc.",0.3],
+		["vantu","vantāni",".ti.",".nt.$.pl.$.voc.",0.3],
+		["vantu","vantasmā",".ti.",".m.$.sg.$.abl.",0.99],
+		["vantu","vantasmā",".ti.",".nt.$.sg.$.abl.",0.99],
+		["vantu","vantasmā",".ti.",".m.$.sg.$.abl.",0.99],
+		["vantu","vantasmā",".ti.",".nt.$.sg.$.abl.",0.99],
+		["vantu","vantasmiṃ",".ti.",".m.$.sg.$.loc.",0.99],
+		["vantu","vantasmiṃ",".ti.",".nt.$.sg.$.loc.",0.99],
+		["vantu","vantasmiṃ",".ti.",".m.$.sg.$.loc.",0.99],
+		["vantu","vantasmiṃ",".ti.",".nt.$.sg.$.loc.",0.99],
+		["vantu","vantassa",".ti.",".m.$.sg.$.dat.",0.99],
+		["vantu","vantassa",".ti.",".m.$.sg.$.gen.",0.99],
+		["vantu","vantassa",".ti.",".nt.$.sg.$.dat.",0.99],
+		["vantu","vantassa",".ti.",".nt.$.sg.$.gen.",0.99],
+		["vantu","vantassa",".ti.",".m.$.sg.$.dat.",0.99],
+		["vantu","vantassa",".ti.",".m.$.sg.$.gen.",0.99],
+		["vantu","vantassa",".ti.",".nt.$.sg.$.dat.",0.99],
+		["vantu","vantassa",".ti.",".nt.$.sg.$.gen.",0.99],
+		["vantu","vante",".ti.",".m.$.pl.$.acc.",0.99],
+		["vantu","vante",".ti.",".m.$.sg.$.loc.",0.99],
+		["vantu","vante",".ti.",".nt.$.pl.$.acc.",0.99],
+		["vantu","vante",".ti.",".nt.$.sg.$.loc.",0.99],
+		["vantu","vantebhi",".ti.",".m.$.pl.$.abl.",0.99],
+		["vantu","vantebhi",".ti.",".m.$.pl.$.inst.",0.99],
+		["vantu","vantebhi",".ti.",".nt.$.pl.$.abl.",0.99],
+		["vantu","vantebhi",".ti.",".nt.$.pl.$.inst.",0.99],
+		["vantu","vantehi",".ti.",".m.$.pl.$.abl.",0.99],
+		["vantu","vantehi",".ti.",".m.$.pl.$.inst.",0.99],
+		["vantu","vantehi",".ti.",".nt.$.pl.$.abl.",0.99],
+		["vantu","vantehi",".ti.",".nt.$.pl.$.inst.",0.99],
+		["vantu","vantesu",".ti.",".m.$.pl.$.loc.",0.99],
+		["vantu","vantesu",".ti.",".nt.$.pl.$.loc.",0.99],
+		["vantu","vantesu",".ti.",".nt.$.pl.$.loc.",0.99],
+		["vantu","vantī",".ti.",".f.$.pl.$.acc.",0.99],
+		["vantu","vantī",".ti.",".f.$.pl.$.nom.",0.99],
+		["vantu","vantī",".ti.",".f.$.pl.$.voc.",0.3],
+		["vantu","vantī",".ti.",".f.$.sg.$.nom.",0.99],
+		["vantu","vantī",".ti.",".f.$.sg.$.voc.",0.3],
+		["vantu","vantībhi",".ti.",".f.$.pl.$.abl.",0.99],
+		["vantu","vantībhi",".ti.",".f.$.pl.$.inst.",0.99],
+		["vantu","vantīhi",".ti.",".f.$.pl.$.abl.",0.99],
+		["vantu","vantīhi",".ti.",".f.$.pl.$.inst.",0.99],
+		["vantu","vantiṃ",".ti.",".f.$.sg.$.acc.",0.99],
+		["vantu","vantīnaṃ",".ti.",".f.$.pl.$.dat.",0.99],
+		["vantu","vantīnaṃ",".ti.",".f.$.pl.$.gen.",0.99],
+		["vantu","vantīsu",".ti.",".f.$.pl.$.loc.",0.99],
+		["vantu","vantiyā",".ti.",".f.$.sg.$.abl.",0.99],
+		["vantu","vantiyā",".ti.",".f.$.sg.$.dat.",0.99],
+		["vantu","vantiyā",".ti.",".f.$.sg.$.gen.",0.99],
+		["vantu","vantiyā",".ti.",".f.$.sg.$.inst.",0.99],
+		["vantu","vantiyā",".ti.",".f.$.sg.$.loc.",0.99],
+		["vantu","vantiyaṃ",".ti.",".f.$.sg.$.loc.",0.99],
+		["vantu","vantiyo",".ti.",".f.$.pl.$.acc.",0.99],
+		["vantu","vantiyo",".ti.",".f.$.pl.$.nom.",0.99],
+		["vantu","vantiyo",".ti.",".f.$.pl.$.voc.",0.3],
+		["vantu","vanto",".ti.",".m.$.pl.$.nom.",0.99],
+		["vantu","vanto",".ti.",".m.$.pl.$.voc.",0.3],
+		["vantu","vanto",".ti.",".m.$.sg.$.nom.",0.99],
+		["vantu","vanto",".ti.",".nt.$.pl.$.nom.",0.99],
+		["vantu","vanto",".ti.",".nt.$.pl.$.voc.",0.3],
+		["vantu","vanto",".ti.",".nt.$.sg.$.nom.",0.99],
+		["vantu","vatā",".ti.",".m.$.sg.$.abl.",0.99],
+		["vantu","vatā",".ti.",".m.$.sg.$.inst.",0.99],
+		["vantu","vatā",".ti.",".nt.$.sg.$.abl.",0.99],
+		["vantu","vatā",".ti.",".nt.$.sg.$.inst.",0.99],
+		["vantu","vatā",".ti.",".m.$.sg.$.abl.",0.99],
+		["vantu","vatā",".ti.",".m.$.sg.$.inst.",0.99],
+		["vantu","vatā",".ti.",".nt.$.sg.$.abl.",0.99],
+		["vantu","vatā",".ti.",".nt.$.sg.$.inst.",0.99],
+		["vantu","vataṃ",".ti.",".m.$.pl.$.dat.",0.99],
+		["vantu","vataṃ",".ti.",".m.$.pl.$.gen.",0.99],
+		["vantu","vataṃ",".ti.",".nt.$.pl.$.dat.",0.99],
+		["vantu","vataṃ",".ti.",".nt.$.pl.$.gen.",0.99],
+		["vantu","vataṃ",".ti.",".nt.$.pl.$.dat.",0.99],
+		["vantu","vataṃ",".ti.",".nt.$.pl.$.gen.",0.99],
+		["vantu","vatena",".ti.",".m.$.sg.$.inst.",0.99],
+		["vantu","vatena",".ti.",".nt.$.sg.$.inst.",0.99],
+		["vantu","vatena",".ti.",".m.$.sg.$.inst.",0.99],
+		["vantu","vatena",".ti.",".nt.$.sg.$.inst.",0.99],
+		["vantu","vatī",".ti.",".f.$.pl.$.acc.",0.99],
+		["vantu","vatī",".ti.",".f.$.pl.$.nom.",0.99],
+		["vantu","vatī",".ti.",".f.$.pl.$.voc.",0.3],
+		["vantu","vatī",".ti.",".f.$.sg.$.nom.",0.99],
+		["vantu","vatī",".ti.",".f.$.sg.$.voc.",0.3],
+		["vantu","vati",".ti.",".m.$.sg.$.loc.",0.99],
+		["vantu","vati",".ti.",".nt.$.sg.$.loc.",0.99],
+		["vantu","vati",".ti.",".m.$.sg.$.loc.",0.99],
+		["vantu","vati",".ti.",".nt.$.sg.$.loc.",0.99],
+		["vantu","vatībhi",".ti.",".f.$.pl.$.abl.",0.99],
+		["vantu","vatībhi",".ti.",".f.$.pl.$.inst.",0.99],
+		["vantu","vatīhi",".ti.",".f.$.pl.$.abl.",0.99],
+		["vantu","vatīhi",".ti.",".f.$.pl.$.inst.",0.99],
+		["vantu","vatiṃ",".ti.",".f.$.sg.$.acc.",0.99],
+		["vantu","vatīnaṃ",".ti.",".f.$.pl.$.dat.",0.99],
+		["vantu","vatīnaṃ",".ti.",".f.$.pl.$.gen.",0.99],
+		["vantu","vatīsu",".ti.",".f.$.pl.$.loc.",0.99],
+		["vantu","vatiyā",".ti.",".f.$.sg.$.abl.",0.99],
+		["vantu","vatiyā",".ti.",".f.$.sg.$.dat.",0.99],
+		["vantu","vatiyā",".ti.",".f.$.sg.$.gen.",0.99],
+		["vantu","vatiyā",".ti.",".f.$.sg.$.inst.",0.99],
+		["vantu","vatiyā",".ti.",".f.$.sg.$.loc.",0.99],
+		["vantu","vatiyaṃ",".ti.",".f.$.sg.$.loc.",0.99],
+		["vantu","vatiyo",".ti.",".f.$.pl.$.acc.",0.99],
+		["vantu","vatiyo",".ti.",".f.$.pl.$.nom.",0.99],
+		["vantu","vatiyo",".ti.",".f.$.pl.$.voc.",0.3],
+		["vantu","vato",".ti.",".m.$.sg.$.dat.",0.99],
+		["vantu","vato",".ti.",".m.$.sg.$.gen.",0.99],
+		["vantu","vato",".ti.",".nt.$.sg.$.dat.",0.99],
+		["vantu","vato",".ti.",".nt.$.sg.$.gen.",0.99],
+		["vantu","vato",".ti.",".m.$.sg.$.dat.",0.99],
+		["vantu","vato",".ti.",".m.$.sg.$.gen.",0.99],
+		["vantu","vato",".ti.",".nt.$.sg.$.dat.",0.99],
+		["vantu","vato",".ti.",".nt.$.sg.$.gen.",0.99],
+		["vantu","ve",".ti.",".m.$.pl.$.acc.",0.99],
+		["vantu","vebhi",".ti.",".m.$.pl.$.abl.",0.99],
+		["vantu","vebhi",".ti.",".m.$.pl.$.inst.",0.99],
+		["vantu","vehi",".ti.",".m.$.pl.$.abl.",0.99],
+		["vantu","vehi",".ti.",".m.$.pl.$.inst.",0.99],
+		["vantu","vesu",".ti.",".m.$.pl.$.loc.",0.99],
+		["mat","mā",".ti.",".m.$.pl.$.nom.",0.99],
+		["mat","mā",".ti.",".m.$.pl.$.voc.",0.3],
+		["mat","mā",".ti.",".m.$.sg.$.nom.",0.99],
+		["mat","ma",".ti.",".m.$.sg.$.voc.",0.3],
+		["mat","mā",".ti.",".m.$.sg.$.voc.",0.3],
+		["mat","mā",".ti.",".nt.$.pl.$.nom.",0.99],
+		["mat","mā",".ti.",".nt.$.pl.$.voc.",0.3],
+		["mat","ma",".ti.",".nt.$.sg.$.voc.",0.3],
+		["mat","mā",".ti.",".nt.$.sg.$.voc.",0.3],
+		["mat","mā",".ti.",".m.$.sg.$.voc.",0.3],
+		["mat","mā",".ti.",".nt.$.sg.$.voc.",0.3],
+		["mat","maṃ",".ti.",".m.$.sg.$.acc.",0.99],
+		["mat","maṃ",".ti.",".nt.$.sg.$.acc.",0.99],
+		["mat","maṃ",".ti.",".nt.$.sg.$.nom.",0.99],
+		["mat","maṃ",".ti.",".m.$.sg.$.nom.",0.99],
+		["mat","maṃ",".ti.",".m.$.sg.$.voc.",0.3],
+		["mat","maṃ",".ti.",".nt.$.sg.$.voc.",0.3],
+		["mat","maṃ",".ti.",".m.$.sg.$.voc.",0.3],
+		["mat","maṃ",".ti.",".nt.$.sg.$.voc.",0.3],
+		["mat","mānaṃ",".ti.",".m.$.pl.$.dat.",0.99],
+		["mat","mānaṃ",".ti.",".m.$.pl.$.gen.",0.99],
+		["mat","mantā",".ti.",".m.$.pl.$.nom.",0.99],
+		["mat","mantā",".ti.",".m.$.pl.$.voc.",0.3],
+		["mat","mantā",".ti.",".m.$.sg.$.abl.",0.99],
+		["mat","manta",".ti.",".m.$.sg.$.voc.",0.3],
+		["mat","mantā",".ti.",".m.$.sg.$.voc.",0.3],
+		["mat","manta",".ti.",".nt.$.pl.$.acc.",0.99],
+		["mat","mantā",".ti.",".nt.$.pl.$.acc.",0.99],
+		["mat","manta",".ti.",".nt.$.pl.$.nom.",0.99],
+		["mat","mantā",".ti.",".nt.$.pl.$.nom.",0.99],
+		["mat","manta",".ti.",".nt.$.pl.$.voc.",0.3],
+		["mat","mantā",".ti.",".nt.$.pl.$.voc.",0.3],
+		["mat","mantā",".ti.",".nt.$.sg.$.abl.",0.99],
+		["mat","manta",".ti.",".nt.$.sg.$.voc.",0.3],
+		["mat","mantā",".ti.",".nt.$.sg.$.voc.",0.3],
+		["mat","mantaṃ",".ti.",".m.$.sg.$.acc.",0.99],
+		["mat","mantaṃ",".ti.",".nt.$.sg.$.acc.",0.99],
+		["mat","mantaṃ",".ti.",".nt.$.sg.$.nom.",0.99],
+		["mat","mantaṃ",".ti.",".nt.$.sg.$.nom.",0.99],
+		["mat","mantaṃ",".ti.",".m.$.sg.$.acc.",0.99],
+		["mat","mantaṃ",".ti.",".nt.$.sg.$.acc.",0.99],
+		["mat","mantamhā",".ti.",".m.$.sg.$.abl.",0.99],
+		["mat","mantamhā",".ti.",".nt.$.sg.$.abl.",0.99],
+		["mat","mantamhā",".ti.",".m.$.sg.$.abl.",0.99],
+		["mat","mantamhā",".ti.",".nt.$.sg.$.abl.",0.99],
+		["mat","mantamhi",".ti.",".m.$.sg.$.loc.",0.99],
+		["mat","mantamhi",".ti.",".nt.$.sg.$.loc.",0.99],
+		["mat","mantamhi",".ti.",".m.$.sg.$.loc.",0.99],
+		["mat","mantamhi",".ti.",".nt.$.sg.$.loc.",0.99],
+		["mat","mantānaṃ",".ti.",".m.$.pl.$.dat.",0.99],
+		["mat","mantānaṃ",".ti.",".m.$.pl.$.gen.",0.99],
+		["mat","mantānaṃ",".ti.",".nt.$.pl.$.dat.",0.99],
+		["mat","mantānaṃ",".ti.",".nt.$.pl.$.gen.",0.99],
+		["mat","mantānaṃ",".ti.",".nt.$.pl.$.dat.",0.99],
+		["mat","mantānaṃ",".ti.",".nt.$.pl.$.gen.",0.99],
+		["mat","mantani",".ti.",".nt.$.pl.$.acc.",0.99],
+		["mat","mantāni",".ti.",".nt.$.pl.$.acc.",0.99],
+		["mat","mantani",".ti.",".nt.$.pl.$.nom.",0.99],
+		["mat","mantāni",".ti.",".nt.$.pl.$.nom.",0.99],
+		["mat","mantani",".ti.",".nt.$.pl.$.voc.",0.3],
+		["mat","mantāni",".ti.",".nt.$.pl.$.voc.",0.3],
+		["mat","mantasmā",".ti.",".m.$.sg.$.abl.",0.99],
+		["mat","mantasmā",".ti.",".nt.$.sg.$.abl.",0.99],
+		["mat","mantasmā",".ti.",".m.$.sg.$.abl.",0.99],
+		["mat","mantasmā",".ti.",".nt.$.sg.$.abl.",0.99],
+		["mat","mantasmiṃ",".ti.",".m.$.sg.$.loc.",0.99],
+		["mat","mantasmiṃ",".ti.",".nt.$.sg.$.loc.",0.99],
+		["mat","mantasmiṃ",".ti.",".m.$.sg.$.loc.",0.99],
+		["mat","mantasmiṃ",".ti.",".nt.$.sg.$.loc.",0.99],
+		["mat","mantassa",".ti.",".m.$.sg.$.dat.",0.99],
+		["mat","mantassa",".ti.",".m.$.sg.$.gen.",0.99],
+		["mat","mantassa",".ti.",".nt.$.sg.$.dat.",0.99],
+		["mat","mantassa",".ti.",".nt.$.sg.$.gen.",0.99],
+		["mat","mantassa",".ti.",".m.$.sg.$.dat.",0.99],
+		["mat","mantassa",".ti.",".m.$.sg.$.gen.",0.99],
+		["mat","mantassa",".ti.",".nt.$.sg.$.dat.",0.99],
+		["mat","mantassa",".ti.",".nt.$.sg.$.gen.",0.99],
+		["mat","mante",".ti.",".m.$.pl.$.acc.",0.99],
+		["mat","mante",".ti.",".m.$.sg.$.loc.",0.99],
+		["mat","mante",".ti.",".nt.$.pl.$.acc.",0.99],
+		["mat","mante",".ti.",".nt.$.sg.$.loc.",0.99],
+		["mat","mantebhi",".ti.",".m.$.pl.$.abl.",0.99],
+		["mat","mantebhi",".ti.",".m.$.pl.$.inst.",0.99],
+		["mat","mantebhi",".ti.",".nt.$.pl.$.abl.",0.99],
+		["mat","mantebhi",".ti.",".nt.$.pl.$.inst.",0.99],
+		["mat","mantehi",".ti.",".m.$.pl.$.abl.",0.99],
+		["mat","mantehi",".ti.",".m.$.pl.$.inst.",0.99],
+		["mat","mantehi",".ti.",".nt.$.pl.$.abl.",0.99],
+		["mat","mantehi",".ti.",".nt.$.pl.$.inst.",0.99],
+		["mat","mantesu",".ti.",".m.$.pl.$.loc.",0.99],
+		["mat","mantesu",".ti.",".nt.$.pl.$.loc.",0.99],
+		["mat","mantesu",".ti.",".nt.$.pl.$.loc.",0.99],
+		["mat","mantī",".ti.",".f.$.pl.$.acc.",0.99],
+		["mat","mantī",".ti.",".f.$.pl.$.nom.",0.99],
+		["mat","mantī",".ti.",".f.$.pl.$.voc.",0.3],
+		["mat","mantī",".ti.",".f.$.sg.$.nom.",0.99],
+		["mat","mantī",".ti.",".f.$.sg.$.voc.",0.3],
+		["mat","mantībhi",".ti.",".f.$.pl.$.abl.",0.99],
+		["mat","mantībhi",".ti.",".f.$.pl.$.inst.",0.99],
+		["mat","mantīhi",".ti.",".f.$.pl.$.abl.",0.99],
+		["mat","mantīhi",".ti.",".f.$.pl.$.inst.",0.99],
+		["mat","mantiṃ",".ti.",".f.$.sg.$.acc.",0.99],
+		["mat","mantīnaṃ",".ti.",".f.$.pl.$.dat.",0.99],
+		["mat","mantīnaṃ",".ti.",".f.$.pl.$.gen.",0.99],
+		["mat","mantīsu",".ti.",".f.$.pl.$.loc.",0.99],
+		["mat","mantiyā",".ti.",".f.$.sg.$.abl.",0.99],
+		["mat","mantiyā",".ti.",".f.$.sg.$.dat.",0.99],
+		["mat","mantiyā",".ti.",".f.$.sg.$.gen.",0.99],
+		["mat","mantiyā",".ti.",".f.$.sg.$.inst.",0.99],
+		["mat","mantiyā",".ti.",".f.$.sg.$.loc.",0.99],
+		["mat","mantiyaṃ",".ti.",".f.$.sg.$.loc.",0.99],
+		["mat","mantiyo",".ti.",".f.$.pl.$.acc.",0.99],
+		["mat","mantiyo",".ti.",".f.$.pl.$.nom.",0.99],
+		["mat","mantiyo",".ti.",".f.$.pl.$.voc.",0.3],
+		["mat","manto",".ti.",".m.$.pl.$.nom.",0.99],
+		["mat","manto",".ti.",".m.$.pl.$.voc.",0.3],
+		["mat","manto",".ti.",".m.$.sg.$.nom.",0.99],
+		["mat","manto",".ti.",".nt.$.pl.$.nom.",0.99],
+		["mat","manto",".ti.",".nt.$.pl.$.voc.",0.3],
+		["mat","manto",".ti.",".nt.$.sg.$.nom.",0.99],
+		["mat","matā",".ti.",".m.$.sg.$.abl.",0.99],
+		["mat","matā",".ti.",".m.$.sg.$.inst.",0.99],
+		["mat","matā",".ti.",".nt.$.sg.$.abl.",0.99],
+		["mat","matā",".ti.",".nt.$.sg.$.inst.",0.99],
+		["mat","matā",".ti.",".m.$.sg.$.abl.",0.99],
+		["mat","matā",".ti.",".m.$.sg.$.inst.",0.99],
+		["mat","matā",".ti.",".nt.$.sg.$.abl.",0.99],
+		["mat","matā",".ti.",".nt.$.sg.$.inst.",0.99],
+		["mat","mataṃ",".ti.",".m.$.pl.$.dat.",0.99],
+		["mat","mataṃ",".ti.",".m.$.pl.$.gen.",0.99],
+		["mat","mataṃ",".ti.",".nt.$.pl.$.dat.",0.99],
+		["mat","mataṃ",".ti.",".nt.$.pl.$.gen.",0.99],
+		["mat","mataṃ",".ti.",".nt.$.pl.$.dat.",0.99],
+		["mat","mataṃ",".ti.",".nt.$.pl.$.gen.",0.99],
+		["mat","matena",".ti.",".m.$.sg.$.inst.",0.99],
+		["mat","matena",".ti.",".nt.$.sg.$.inst.",0.99],
+		["mat","matena",".ti.",".m.$.sg.$.inst.",0.99],
+		["mat","matena",".ti.",".nt.$.sg.$.inst.",0.99],
+		["mat","matī",".ti.",".f.$.pl.$.acc.",0.99],
+		["mat","matī",".ti.",".f.$.pl.$.nom.",0.99],
+		["mat","matī",".ti.",".f.$.pl.$.voc.",0.3],
+		["mat","matī",".ti.",".f.$.sg.$.nom.",0.99],
+		["mat","matī",".ti.",".f.$.sg.$.voc.",0.3],
+		["mat","mati",".ti.",".m.$.sg.$.loc.",0.99],
+		["mat","mati",".ti.",".nt.$.sg.$.loc.",0.99],
+		["mat","mati",".ti.",".m.$.sg.$.loc.",0.99],
+		["mat","mati",".ti.",".nt.$.sg.$.loc.",0.99],
+		["mat","matībhi",".ti.",".f.$.pl.$.abl.",0.99],
+		["mat","matībhi",".ti.",".f.$.pl.$.inst.",0.99],
+		["mat","matīhi",".ti.",".f.$.pl.$.abl.",0.99],
+		["mat","matīhi",".ti.",".f.$.pl.$.inst.",0.99],
+		["mat","matiṃ",".ti.",".f.$.sg.$.acc.",0.99],
+		["mat","matīnaṃ",".ti.",".f.$.pl.$.dat.",0.99],
+		["mat","matīnaṃ",".ti.",".f.$.pl.$.gen.",0.99],
+		["mat","matīsu",".ti.",".f.$.pl.$.loc.",0.99],
+		["mat","matiyā",".ti.",".f.$.sg.$.abl.",0.99],
+		["mat","matiyā",".ti.",".f.$.sg.$.dat.",0.99],
+		["mat","matiyā",".ti.",".f.$.sg.$.gen.",0.99],
+		["mat","matiyā",".ti.",".f.$.sg.$.inst.",0.99],
+		["mat","matiyā",".ti.",".f.$.sg.$.loc.",0.99],
+		["mat","matiyaṃ",".ti.",".f.$.sg.$.loc.",0.99],
+		["mat","matiyo",".ti.",".f.$.pl.$.acc.",0.99],
+		["mat","matiyo",".ti.",".f.$.pl.$.nom.",0.99],
+		["mat","matiyo",".ti.",".f.$.pl.$.voc.",0.3],
+		["mat","mato",".ti.",".m.$.sg.$.dat.",0.99],
+		["mat","mato",".ti.",".m.$.sg.$.gen.",0.99],
+		["mat","mato",".ti.",".nt.$.sg.$.dat.",0.99],
+		["mat","mato",".ti.",".nt.$.sg.$.gen.",0.99],
+		["mat","mato",".ti.",".m.$.sg.$.dat.",0.99],
+		["mat","mato",".ti.",".m.$.sg.$.gen.",0.99],
+		["mat","mato",".ti.",".nt.$.sg.$.dat.",0.99],
+		["mat","mato",".ti.",".nt.$.sg.$.gen.",0.99],
+		["mat","me",".ti.",".m.$.pl.$.acc.",0.99],
+		["mat","mebhi",".ti.",".m.$.pl.$.abl.",0.99],
+		["mat","mebhi",".ti.",".m.$.pl.$.inst.",0.99],
+		["mat","mehi",".ti.",".m.$.pl.$.abl.",0.99],
+		["mat","mehi",".ti.",".m.$.pl.$.inst.",0.99],
+		["mat","mesu",".ti.",".m.$.pl.$.loc.",0.99],
+		["vat","vā",".ti.",".m.$.pl.$.nom.",0.99],
+		["vat","vā",".ti.",".m.$.pl.$.voc.",0.3],
+		["vat","vā",".ti.",".m.$.sg.$.nom.",0.99],
+		["vat","va",".ti.",".m.$.sg.$.voc.",0.3],
+		["vat","vā",".ti.",".m.$.sg.$.voc.",0.3],
+		["vat","vā",".ti.",".nt.$.pl.$.nom.",0.99],
+		["vat","vā",".ti.",".nt.$.pl.$.voc.",0.3],
+		["vat","va",".ti.",".nt.$.sg.$.voc.",0.3],
+		["vat","vā",".ti.",".nt.$.sg.$.voc.",0.3],
+		["vat","vā",".ti.",".m.$.sg.$.voc.",0.3],
+		["vat","vā",".ti.",".nt.$.sg.$.voc.",0.3],
+		["vat","vaṃ",".ti.",".m.$.sg.$.acc.",0.99],
+		["vat","vaṃ",".ti.",".nt.$.sg.$.acc.",0.99],
+		["vat","vaṃ",".ti.",".nt.$.sg.$.nom.",0.99],
+		["vat","vaṃ",".ti.",".m.$.sg.$.nom.",0.99],
+		["vat","vaṃ",".ti.",".m.$.sg.$.voc.",0.3],
+		["vat","vaṃ",".ti.",".nt.$.sg.$.voc.",0.3],
+		["vat","vaṃ",".ti.",".m.$.sg.$.voc.",0.3],
+		["vat","vaṃ",".ti.",".nt.$.sg.$.voc.",0.3],
+		["vat","vānaṃ",".ti.",".m.$.pl.$.dat.",0.99],
+		["vat","vānaṃ",".ti.",".m.$.pl.$.gen.",0.99],
+		["vat","vantā",".ti.",".m.$.pl.$.nom.",0.99],
+		["vat","vantā",".ti.",".m.$.pl.$.voc.",0.3],
+		["vat","vantā",".ti.",".m.$.sg.$.abl.",0.99],
+		["vat","vanta",".ti.",".m.$.sg.$.voc.",0.3],
+		["vat","vantā",".ti.",".m.$.sg.$.voc.",0.3],
+		["vat","vanta",".ti.",".nt.$.pl.$.acc.",0.99],
+		["vat","vantā",".ti.",".nt.$.pl.$.acc.",0.99],
+		["vat","vanta",".ti.",".nt.$.pl.$.nom.",0.99],
+		["vat","vantā",".ti.",".nt.$.pl.$.nom.",0.99],
+		["vat","vanta",".ti.",".nt.$.pl.$.voc.",0.3],
+		["vat","vantā",".ti.",".nt.$.pl.$.voc.",0.3],
+		["vat","vantā",".ti.",".nt.$.sg.$.abl.",0.99],
+		["vat","vanta",".ti.",".nt.$.sg.$.voc.",0.3],
+		["vat","vantā",".ti.",".nt.$.sg.$.voc.",0.3],
+		["vat","vantaṃ",".ti.",".m.$.sg.$.acc.",0.99],
+		["vat","vantaṃ",".ti.",".nt.$.sg.$.acc.",0.99],
+		["vat","vantaṃ",".ti.",".nt.$.sg.$.nom.",0.99],
+		["vat","vantaṃ",".ti.",".nt.$.sg.$.nom.",0.99],
+		["vat","vantaṃ",".ti.",".m.$.sg.$.acc.",0.99],
+		["vat","vantaṃ",".ti.",".nt.$.sg.$.acc.",0.99],
+		["vat","vantamhā",".ti.",".m.$.sg.$.abl.",0.99],
+		["vat","vantamhā",".ti.",".nt.$.sg.$.abl.",0.99],
+		["vat","vantamhā",".ti.",".m.$.sg.$.abl.",0.99],
+		["vat","vantamhā",".ti.",".nt.$.sg.$.abl.",0.99],
+		["vat","vantamhi",".ti.",".m.$.sg.$.loc.",0.99],
+		["vat","vantamhi",".ti.",".nt.$.sg.$.loc.",0.99],
+		["vat","vantamhi",".ti.",".m.$.sg.$.loc.",0.99],
+		["vat","vantamhi",".ti.",".nt.$.sg.$.loc.",0.99],
+		["vat","vantānaṃ",".ti.",".m.$.pl.$.dat.",0.99],
+		["vat","vantānaṃ",".ti.",".m.$.pl.$.gen.",0.99],
+		["vat","vantānaṃ",".ti.",".nt.$.pl.$.dat.",0.99],
+		["vat","vantānaṃ",".ti.",".nt.$.pl.$.gen.",0.99],
+		["vat","vantānaṃ",".ti.",".nt.$.pl.$.dat.",0.99],
+		["vat","vantānaṃ",".ti.",".nt.$.pl.$.gen.",0.99],
+		["vat","vantani",".ti.",".nt.$.pl.$.acc.",0.99],
+		["vat","vantāni",".ti.",".nt.$.pl.$.acc.",0.99],
+		["vat","vantani",".ti.",".nt.$.pl.$.nom.",0.99],
+		["vat","vantāni",".ti.",".nt.$.pl.$.nom.",0.99],
+		["vat","vantani",".ti.",".nt.$.pl.$.voc.",0.3],
+		["vat","vantāni",".ti.",".nt.$.pl.$.voc.",0.3],
+		["vat","vantasmā",".ti.",".m.$.sg.$.abl.",0.99],
+		["vat","vantasmā",".ti.",".nt.$.sg.$.abl.",0.99],
+		["vat","vantasmā",".ti.",".m.$.sg.$.abl.",0.99],
+		["vat","vantasmā",".ti.",".nt.$.sg.$.abl.",0.99],
+		["vat","vantasmiṃ",".ti.",".m.$.sg.$.loc.",0.99],
+		["vat","vantasmiṃ",".ti.",".nt.$.sg.$.loc.",0.99],
+		["vat","vantasmiṃ",".ti.",".m.$.sg.$.loc.",0.99],
+		["vat","vantasmiṃ",".ti.",".nt.$.sg.$.loc.",0.99],
+		["vat","vantassa",".ti.",".m.$.sg.$.dat.",0.99],
+		["vat","vantassa",".ti.",".m.$.sg.$.gen.",0.99],
+		["vat","vantassa",".ti.",".nt.$.sg.$.dat.",0.99],
+		["vat","vantassa",".ti.",".nt.$.sg.$.gen.",0.99],
+		["vat","vantassa",".ti.",".m.$.sg.$.dat.",0.99],
+		["vat","vantassa",".ti.",".m.$.sg.$.gen.",0.99],
+		["vat","vantassa",".ti.",".nt.$.sg.$.dat.",0.99],
+		["vat","vantassa",".ti.",".nt.$.sg.$.gen.",0.99],
+		["vat","vante",".ti.",".m.$.pl.$.acc.",0.99],
+		["vat","vante",".ti.",".m.$.sg.$.loc.",0.99],
+		["vat","vante",".ti.",".nt.$.pl.$.acc.",0.99],
+		["vat","vante",".ti.",".nt.$.sg.$.loc.",0.99],
+		["vat","vantebhi",".ti.",".m.$.pl.$.abl.",0.99],
+		["vat","vantebhi",".ti.",".m.$.pl.$.inst.",0.99],
+		["vat","vantebhi",".ti.",".nt.$.pl.$.abl.",0.99],
+		["vat","vantebhi",".ti.",".nt.$.pl.$.inst.",0.99],
+		["vat","vantehi",".ti.",".m.$.pl.$.abl.",0.99],
+		["vat","vantehi",".ti.",".m.$.pl.$.inst.",0.99],
+		["vat","vantehi",".ti.",".nt.$.pl.$.abl.",0.99],
+		["vat","vantehi",".ti.",".nt.$.pl.$.inst.",0.99],
+		["vat","vantesu",".ti.",".m.$.pl.$.loc.",0.99],
+		["vat","vantesu",".ti.",".nt.$.pl.$.loc.",0.99],
+		["vat","vantesu",".ti.",".nt.$.pl.$.loc.",0.99],
+		["vat","vantī",".ti.",".f.$.pl.$.acc.",0.99],
+		["vat","vantī",".ti.",".f.$.pl.$.nom.",0.99],
+		["vat","vantī",".ti.",".f.$.pl.$.voc.",0.3],
+		["vat","vantī",".ti.",".f.$.sg.$.nom.",0.99],
+		["vat","vantī",".ti.",".f.$.sg.$.voc.",0.3],
+		["vat","vantībhi",".ti.",".f.$.pl.$.abl.",0.99],
+		["vat","vantībhi",".ti.",".f.$.pl.$.inst.",0.99],
+		["vat","vantīhi",".ti.",".f.$.pl.$.abl.",0.99],
+		["vat","vantīhi",".ti.",".f.$.pl.$.inst.",0.99],
+		["vat","vantiṃ",".ti.",".f.$.sg.$.acc.",0.99],
+		["vat","vantīnaṃ",".ti.",".f.$.pl.$.dat.",0.99],
+		["vat","vantīnaṃ",".ti.",".f.$.pl.$.gen.",0.99],
+		["vat","vantīsu",".ti.",".f.$.pl.$.loc.",0.99],
+		["vat","vantiyā",".ti.",".f.$.sg.$.abl.",0.99],
+		["vat","vantiyā",".ti.",".f.$.sg.$.dat.",0.99],
+		["vat","vantiyā",".ti.",".f.$.sg.$.gen.",0.99],
+		["vat","vantiyā",".ti.",".f.$.sg.$.inst.",0.99],
+		["vat","vantiyā",".ti.",".f.$.sg.$.loc.",0.99],
+		["vat","vantiyaṃ",".ti.",".f.$.sg.$.loc.",0.99],
+		["vat","vantiyo",".ti.",".f.$.pl.$.acc.",0.99],
+		["vat","vantiyo",".ti.",".f.$.pl.$.nom.",0.99],
+		["vat","vantiyo",".ti.",".f.$.pl.$.voc.",0.3],
+		["vat","vanto",".ti.",".m.$.pl.$.nom.",0.99],
+		["vat","vanto",".ti.",".m.$.pl.$.voc.",0.3],
+		["vat","vanto",".ti.",".m.$.sg.$.nom.",0.99],
+		["vat","vanto",".ti.",".nt.$.pl.$.nom.",0.99],
+		["vat","vanto",".ti.",".nt.$.pl.$.voc.",0.3],
+		["vat","vanto",".ti.",".nt.$.sg.$.nom.",0.99],
+		["vat","vatā",".ti.",".m.$.sg.$.abl.",0.99],
+		["vat","vatā",".ti.",".m.$.sg.$.inst.",0.99],
+		["vat","vatā",".ti.",".nt.$.sg.$.abl.",0.99],
+		["vat","vatā",".ti.",".nt.$.sg.$.inst.",0.99],
+		["vat","vatā",".ti.",".m.$.sg.$.abl.",0.99],
+		["vat","vatā",".ti.",".m.$.sg.$.inst.",0.99],
+		["vat","vatā",".ti.",".nt.$.sg.$.abl.",0.99],
+		["vat","vatā",".ti.",".nt.$.sg.$.inst.",0.99],
+		["vat","vataṃ",".ti.",".m.$.pl.$.dat.",0.99],
+		["vat","vataṃ",".ti.",".m.$.pl.$.gen.",0.99],
+		["vat","vataṃ",".ti.",".nt.$.pl.$.dat.",0.99],
+		["vat","vataṃ",".ti.",".nt.$.pl.$.gen.",0.99],
+		["vat","vataṃ",".ti.",".nt.$.pl.$.dat.",0.99],
+		["vat","vataṃ",".ti.",".nt.$.pl.$.gen.",0.99],
+		["vat","vatena",".ti.",".m.$.sg.$.inst.",0.99],
+		["vat","vatena",".ti.",".nt.$.sg.$.inst.",0.99],
+		["vat","vatena",".ti.",".m.$.sg.$.inst.",0.99],
+		["vat","vatena",".ti.",".nt.$.sg.$.inst.",0.99],
+		["vat","vatī",".ti.",".f.$.pl.$.acc.",0.99],
+		["vat","vatī",".ti.",".f.$.pl.$.nom.",0.99],
+		["vat","vatī",".ti.",".f.$.pl.$.voc.",0.3],
+		["vat","vatī",".ti.",".f.$.sg.$.nom.",0.99],
+		["vat","vatī",".ti.",".f.$.sg.$.voc.",0.3],
+		["vat","vati",".ti.",".m.$.sg.$.loc.",0.99],
+		["vat","vati",".ti.",".nt.$.sg.$.loc.",0.99],
+		["vat","vati",".ti.",".m.$.sg.$.loc.",0.99],
+		["vat","vati",".ti.",".nt.$.sg.$.loc.",0.99],
+		["vat","vatībhi",".ti.",".f.$.pl.$.abl.",0.99],
+		["vat","vatībhi",".ti.",".f.$.pl.$.inst.",0.99],
+		["vat","vatīhi",".ti.",".f.$.pl.$.abl.",0.99],
+		["vat","vatīhi",".ti.",".f.$.pl.$.inst.",0.99],
+		["vat","vatiṃ",".ti.",".f.$.sg.$.acc.",0.99],
+		["vat","vatīnaṃ",".ti.",".f.$.pl.$.dat.",0.99],
+		["vat","vatīnaṃ",".ti.",".f.$.pl.$.gen.",0.99],
+		["vat","vatīsu",".ti.",".f.$.pl.$.loc.",0.99],
+		["vat","vatiyā",".ti.",".f.$.sg.$.abl.",0.99],
+		["vat","vatiyā",".ti.",".f.$.sg.$.dat.",0.99],
+		["vat","vatiyā",".ti.",".f.$.sg.$.gen.",0.99],
+		["vat","vatiyā",".ti.",".f.$.sg.$.inst.",0.99],
+		["vat","vatiyā",".ti.",".f.$.sg.$.loc.",0.99],
+		["vat","vatiyaṃ",".ti.",".f.$.sg.$.loc.",0.99],
+		["vat","vatiyo",".ti.",".f.$.pl.$.acc.",0.99],
+		["vat","vatiyo",".ti.",".f.$.pl.$.nom.",0.99],
+		["vat","vatiyo",".ti.",".f.$.pl.$.voc.",0.3],
+		["vat","vato",".ti.",".m.$.sg.$.dat.",0.99],
+		["vat","vato",".ti.",".m.$.sg.$.gen.",0.99],
+		["vat","vato",".ti.",".nt.$.sg.$.dat.",0.99],
+		["vat","vato",".ti.",".nt.$.sg.$.gen.",0.99],
+		["vat","vato",".ti.",".m.$.sg.$.dat.",0.99],
+		["vat","vato",".ti.",".m.$.sg.$.gen.",0.99],
+		["vat","vato",".ti.",".nt.$.sg.$.dat.",0.99],
+		["vat","vato",".ti.",".nt.$.sg.$.gen.",0.99],
+		["vat","ve",".ti.",".m.$.pl.$.acc.",0.99],
+		["vat","vebhi",".ti.",".m.$.pl.$.abl.",0.99],
+		["vat","vebhi",".ti.",".m.$.pl.$.inst.",0.99],
+		["vat","vehi",".ti.",".m.$.pl.$.abl.",0.99],
+		["vat","vehi",".ti.",".m.$.pl.$.inst.",0.99],
+		["vat","vesu",".ti.",".m.$.pl.$.loc.",0.99],
+		["manta","mā",".ti.",".m.$.pl.$.nom.",0.99],
+		["manta","mā",".ti.",".m.$.pl.$.voc.",0.3],
+		["manta","mā",".ti.",".m.$.sg.$.nom.",0.99],
+		["manta","ma",".ti.",".m.$.sg.$.voc.",0.3],
+		["manta","mā",".ti.",".m.$.sg.$.voc.",0.3],
+		["manta","mā",".ti.",".nt.$.pl.$.nom.",0.99],
+		["manta","mā",".ti.",".nt.$.pl.$.voc.",0.3],
+		["manta","ma",".ti.",".nt.$.sg.$.voc.",0.3],
+		["manta","mā",".ti.",".nt.$.sg.$.voc.",0.3],
+		["manta","mā",".ti.",".m.$.sg.$.voc.",0.3],
+		["manta","mā",".ti.",".nt.$.sg.$.voc.",0.3],
+		["manta","maṃ",".ti.",".m.$.sg.$.acc.",0.99],
+		["manta","maṃ",".ti.",".nt.$.sg.$.acc.",0.99],
+		["manta","maṃ",".ti.",".nt.$.sg.$.nom.",0.99],
+		["manta","maṃ",".ti.",".m.$.sg.$.nom.",0.99],
+		["manta","maṃ",".ti.",".m.$.sg.$.voc.",0.3],
+		["manta","maṃ",".ti.",".nt.$.sg.$.voc.",0.3],
+		["manta","maṃ",".ti.",".m.$.sg.$.voc.",0.3],
+		["manta","maṃ",".ti.",".nt.$.sg.$.voc.",0.3],
+		["manta","mānaṃ",".ti.",".m.$.pl.$.dat.",0.99],
+		["manta","mānaṃ",".ti.",".m.$.pl.$.gen.",0.99],
+		["manta","mantā",".ti.",".m.$.pl.$.nom.",0.99],
+		["manta","mantā",".ti.",".m.$.pl.$.voc.",0.3],
+		["manta","mantā",".ti.",".m.$.sg.$.abl.",0.99],
+		["manta","manta",".ti.",".m.$.sg.$.voc.",0.3],
+		["manta","mantā",".ti.",".m.$.sg.$.voc.",0.3],
+		["manta","manta",".ti.",".nt.$.pl.$.acc.",0.99],
+		["manta","mantā",".ti.",".nt.$.pl.$.acc.",0.99],
+		["manta","manta",".ti.",".nt.$.pl.$.nom.",0.99],
+		["manta","mantā",".ti.",".nt.$.pl.$.nom.",0.99],
+		["manta","manta",".ti.",".nt.$.pl.$.voc.",0.3],
+		["manta","mantā",".ti.",".nt.$.pl.$.voc.",0.3],
+		["manta","mantā",".ti.",".nt.$.sg.$.abl.",0.99],
+		["manta","manta",".ti.",".nt.$.sg.$.voc.",0.3],
+		["manta","mantā",".ti.",".nt.$.sg.$.voc.",0.3],
+		["manta","mantaṃ",".ti.",".m.$.sg.$.acc.",0.99],
+		["manta","mantaṃ",".ti.",".nt.$.sg.$.acc.",0.99],
+		["manta","mantaṃ",".ti.",".nt.$.sg.$.nom.",0.99],
+		["manta","mantaṃ",".ti.",".nt.$.sg.$.nom.",0.99],
+		["manta","mantaṃ",".ti.",".m.$.sg.$.acc.",0.99],
+		["manta","mantaṃ",".ti.",".nt.$.sg.$.acc.",0.99],
+		["manta","mantamhā",".ti.",".m.$.sg.$.abl.",0.99],
+		["manta","mantamhā",".ti.",".nt.$.sg.$.abl.",0.99],
+		["manta","mantamhā",".ti.",".m.$.sg.$.abl.",0.99],
+		["manta","mantamhā",".ti.",".nt.$.sg.$.abl.",0.99],
+		["manta","mantamhi",".ti.",".m.$.sg.$.loc.",0.99],
+		["manta","mantamhi",".ti.",".nt.$.sg.$.loc.",0.99],
+		["manta","mantamhi",".ti.",".m.$.sg.$.loc.",0.99],
+		["manta","mantamhi",".ti.",".nt.$.sg.$.loc.",0.99],
+		["manta","mantānaṃ",".ti.",".m.$.pl.$.dat.",0.99],
+		["manta","mantānaṃ",".ti.",".m.$.pl.$.gen.",0.99],
+		["manta","mantānaṃ",".ti.",".nt.$.pl.$.dat.",0.99],
+		["manta","mantānaṃ",".ti.",".nt.$.pl.$.gen.",0.99],
+		["manta","mantānaṃ",".ti.",".nt.$.pl.$.dat.",0.99],
+		["manta","mantānaṃ",".ti.",".nt.$.pl.$.gen.",0.99],
+		["manta","mantani",".ti.",".nt.$.pl.$.acc.",0.99],
+		["manta","mantāni",".ti.",".nt.$.pl.$.acc.",0.99],
+		["manta","mantani",".ti.",".nt.$.pl.$.nom.",0.99],
+		["manta","mantāni",".ti.",".nt.$.pl.$.nom.",0.99],
+		["manta","mantani",".ti.",".nt.$.pl.$.voc.",0.3],
+		["manta","mantāni",".ti.",".nt.$.pl.$.voc.",0.3],
+		["manta","mantasmā",".ti.",".m.$.sg.$.abl.",0.99],
+		["manta","mantasmā",".ti.",".nt.$.sg.$.abl.",0.99],
+		["manta","mantasmā",".ti.",".m.$.sg.$.abl.",0.99],
+		["manta","mantasmā",".ti.",".nt.$.sg.$.abl.",0.99],
+		["manta","mantasmiṃ",".ti.",".m.$.sg.$.loc.",0.99],
+		["manta","mantasmiṃ",".ti.",".nt.$.sg.$.loc.",0.99],
+		["manta","mantasmiṃ",".ti.",".m.$.sg.$.loc.",0.99],
+		["manta","mantasmiṃ",".ti.",".nt.$.sg.$.loc.",0.99],
+		["manta","mantassa",".ti.",".m.$.sg.$.dat.",0.99],
+		["manta","mantassa",".ti.",".m.$.sg.$.gen.",0.99],
+		["manta","mantassa",".ti.",".nt.$.sg.$.dat.",0.99],
+		["manta","mantassa",".ti.",".nt.$.sg.$.gen.",0.99],
+		["manta","mantassa",".ti.",".m.$.sg.$.dat.",0.99],
+		["manta","mantassa",".ti.",".m.$.sg.$.gen.",0.99],
+		["manta","mantassa",".ti.",".nt.$.sg.$.dat.",0.99],
+		["manta","mantassa",".ti.",".nt.$.sg.$.gen.",0.99],
+		["manta","mante",".ti.",".m.$.pl.$.acc.",0.99],
+		["manta","mante",".ti.",".m.$.sg.$.loc.",0.99],
+		["manta","mante",".ti.",".nt.$.pl.$.acc.",0.99],
+		["manta","mante",".ti.",".nt.$.sg.$.loc.",0.99],
+		["manta","mantebhi",".ti.",".m.$.pl.$.abl.",0.99],
+		["manta","mantebhi",".ti.",".m.$.pl.$.inst.",0.99],
+		["manta","mantebhi",".ti.",".nt.$.pl.$.abl.",0.99],
+		["manta","mantebhi",".ti.",".nt.$.pl.$.inst.",0.99],
+		["manta","mantehi",".ti.",".m.$.pl.$.abl.",0.99],
+		["manta","mantehi",".ti.",".m.$.pl.$.inst.",0.99],
+		["manta","mantehi",".ti.",".nt.$.pl.$.abl.",0.99],
+		["manta","mantehi",".ti.",".nt.$.pl.$.inst.",0.99],
+		["manta","mantesu",".ti.",".m.$.pl.$.loc.",0.99],
+		["manta","mantesu",".ti.",".nt.$.pl.$.loc.",0.99],
+		["manta","mantesu",".ti.",".nt.$.pl.$.loc.",0.99],
+		["manta","mantī",".ti.",".f.$.pl.$.acc.",0.99],
+		["manta","mantī",".ti.",".f.$.pl.$.nom.",0.99],
+		["manta","mantī",".ti.",".f.$.pl.$.voc.",0.3],
+		["manta","mantī",".ti.",".f.$.sg.$.nom.",0.99],
+		["manta","mantī",".ti.",".f.$.sg.$.voc.",0.3],
+		["manta","mantībhi",".ti.",".f.$.pl.$.abl.",0.99],
+		["manta","mantībhi",".ti.",".f.$.pl.$.inst.",0.99],
+		["manta","mantīhi",".ti.",".f.$.pl.$.abl.",0.99],
+		["manta","mantīhi",".ti.",".f.$.pl.$.inst.",0.99],
+		["manta","mantiṃ",".ti.",".f.$.sg.$.acc.",0.99],
+		["manta","mantīnaṃ",".ti.",".f.$.pl.$.dat.",0.99],
+		["manta","mantīnaṃ",".ti.",".f.$.pl.$.gen.",0.99],
+		["manta","mantīsu",".ti.",".f.$.pl.$.loc.",0.99],
+		["manta","mantiyā",".ti.",".f.$.sg.$.abl.",0.99],
+		["manta","mantiyā",".ti.",".f.$.sg.$.dat.",0.99],
+		["manta","mantiyā",".ti.",".f.$.sg.$.gen.",0.99],
+		["manta","mantiyā",".ti.",".f.$.sg.$.inst.",0.99],
+		["manta","mantiyā",".ti.",".f.$.sg.$.loc.",0.99],
+		["manta","mantiyaṃ",".ti.",".f.$.sg.$.loc.",0.99],
+		["manta","mantiyo",".ti.",".f.$.pl.$.acc.",0.99],
+		["manta","mantiyo",".ti.",".f.$.pl.$.nom.",0.99],
+		["manta","mantiyo",".ti.",".f.$.pl.$.voc.",0.3],
+		["manta","manto",".ti.",".m.$.pl.$.nom.",0.99],
+		["manta","manto",".ti.",".m.$.pl.$.voc.",0.3],
+		["manta","manto",".ti.",".m.$.sg.$.nom.",0.99],
+		["manta","manto",".ti.",".nt.$.pl.$.nom.",0.99],
+		["manta","manto",".ti.",".nt.$.pl.$.voc.",0.3],
+		["manta","manto",".ti.",".nt.$.sg.$.nom.",0.99],
+		["manta","matā",".ti.",".m.$.sg.$.abl.",0.99],
+		["manta","matā",".ti.",".m.$.sg.$.inst.",0.99],
+		["manta","matā",".ti.",".nt.$.sg.$.abl.",0.99],
+		["manta","matā",".ti.",".nt.$.sg.$.inst.",0.99],
+		["manta","matā",".ti.",".m.$.sg.$.abl.",0.99],
+		["manta","matā",".ti.",".m.$.sg.$.inst.",0.99],
+		["manta","matā",".ti.",".nt.$.sg.$.abl.",0.99],
+		["manta","matā",".ti.",".nt.$.sg.$.inst.",0.99],
+		["manta","mataṃ",".ti.",".m.$.pl.$.dat.",0.99],
+		["manta","mataṃ",".ti.",".m.$.pl.$.gen.",0.99],
+		["manta","mataṃ",".ti.",".nt.$.pl.$.dat.",0.99],
+		["manta","mataṃ",".ti.",".nt.$.pl.$.gen.",0.99],
+		["manta","mataṃ",".ti.",".nt.$.pl.$.dat.",0.99],
+		["manta","mataṃ",".ti.",".nt.$.pl.$.gen.",0.99],
+		["manta","matena",".ti.",".m.$.sg.$.inst.",0.99],
+		["manta","matena",".ti.",".nt.$.sg.$.inst.",0.99],
+		["manta","matena",".ti.",".m.$.sg.$.inst.",0.99],
+		["manta","matena",".ti.",".nt.$.sg.$.inst.",0.99],
+		["manta","matī",".ti.",".f.$.pl.$.acc.",0.99],
+		["manta","matī",".ti.",".f.$.pl.$.nom.",0.99],
+		["manta","matī",".ti.",".f.$.pl.$.voc.",0.3],
+		["manta","matī",".ti.",".f.$.sg.$.nom.",0.99],
+		["manta","matī",".ti.",".f.$.sg.$.voc.",0.3],
+		["manta","mati",".ti.",".m.$.sg.$.loc.",0.99],
+		["manta","mati",".ti.",".nt.$.sg.$.loc.",0.99],
+		["manta","mati",".ti.",".m.$.sg.$.loc.",0.99],
+		["manta","mati",".ti.",".nt.$.sg.$.loc.",0.99],
+		["manta","matībhi",".ti.",".f.$.pl.$.abl.",0.99],
+		["manta","matībhi",".ti.",".f.$.pl.$.inst.",0.99],
+		["manta","matīhi",".ti.",".f.$.pl.$.abl.",0.99],
+		["manta","matīhi",".ti.",".f.$.pl.$.inst.",0.99],
+		["manta","matiṃ",".ti.",".f.$.sg.$.acc.",0.99],
+		["manta","matīnaṃ",".ti.",".f.$.pl.$.dat.",0.99],
+		["manta","matīnaṃ",".ti.",".f.$.pl.$.gen.",0.99],
+		["manta","matīsu",".ti.",".f.$.pl.$.loc.",0.99],
+		["manta","matiyā",".ti.",".f.$.sg.$.abl.",0.99],
+		["manta","matiyā",".ti.",".f.$.sg.$.dat.",0.99],
+		["manta","matiyā",".ti.",".f.$.sg.$.gen.",0.99],
+		["manta","matiyā",".ti.",".f.$.sg.$.inst.",0.99],
+		["manta","matiyā",".ti.",".f.$.sg.$.loc.",0.99],
+		["manta","matiyaṃ",".ti.",".f.$.sg.$.loc.",0.99],
+		["manta","matiyo",".ti.",".f.$.pl.$.acc.",0.99],
+		["manta","matiyo",".ti.",".f.$.pl.$.nom.",0.99],
+		["manta","matiyo",".ti.",".f.$.pl.$.voc.",0.3],
+		["manta","mato",".ti.",".m.$.sg.$.dat.",0.99],
+		["manta","mato",".ti.",".m.$.sg.$.gen.",0.99],
+		["manta","mato",".ti.",".nt.$.sg.$.dat.",0.99],
+		["manta","mato",".ti.",".nt.$.sg.$.gen.",0.99],
+		["manta","mato",".ti.",".m.$.sg.$.dat.",0.99],
+		["manta","mato",".ti.",".m.$.sg.$.gen.",0.99],
+		["manta","mato",".ti.",".nt.$.sg.$.dat.",0.99],
+		["manta","mato",".ti.",".nt.$.sg.$.gen.",0.99],
+		["manta","me",".ti.",".m.$.pl.$.acc.",0.99],
+		["manta","mebhi",".ti.",".m.$.pl.$.abl.",0.99],
+		["manta","mebhi",".ti.",".m.$.pl.$.inst.",0.99],
+		["manta","mehi",".ti.",".m.$.pl.$.abl.",0.99],
+		["manta","mehi",".ti.",".m.$.pl.$.inst.",0.99],
+		["manta","mesu",".ti.",".m.$.pl.$.loc.",0.99],
+		["vanta","vā",".ti.",".m.$.pl.$.nom.",0.99],
+		["vanta","vā",".ti.",".m.$.pl.$.voc.",0.3],
+		["vanta","vā",".ti.",".m.$.sg.$.nom.",0.99],
+		["vanta","va",".ti.",".m.$.sg.$.voc.",0.3],
+		["vanta","vā",".ti.",".m.$.sg.$.voc.",0.3],
+		["vanta","vā",".ti.",".nt.$.pl.$.nom.",0.99],
+		["vanta","vā",".ti.",".nt.$.pl.$.voc.",0.3],
+		["vanta","va",".ti.",".nt.$.sg.$.voc.",0.3],
+		["vanta","vā",".ti.",".nt.$.sg.$.voc.",0.3],
+		["vanta","vā",".ti.",".m.$.sg.$.voc.",0.3],
+		["vanta","vā",".ti.",".nt.$.sg.$.voc.",0.3],
+		["vanta","vaṃ",".ti.",".m.$.sg.$.acc.",0.99],
+		["vanta","vaṃ",".ti.",".nt.$.sg.$.acc.",0.99],
+		["vanta","vaṃ",".ti.",".nt.$.sg.$.nom.",0.99],
+		["vanta","vaṃ",".ti.",".m.$.sg.$.nom.",0.99],
+		["vanta","vaṃ",".ti.",".m.$.sg.$.voc.",0.3],
+		["vanta","vaṃ",".ti.",".nt.$.sg.$.voc.",0.3],
+		["vanta","vaṃ",".ti.",".m.$.sg.$.voc.",0.3],
+		["vanta","vaṃ",".ti.",".nt.$.sg.$.voc.",0.3],
+		["vanta","vānaṃ",".ti.",".m.$.pl.$.dat.",0.99],
+		["vanta","vānaṃ",".ti.",".m.$.pl.$.gen.",0.99],
+		["vanta","vantā",".ti.",".m.$.pl.$.nom.",0.99],
+		["vanta","vantā",".ti.",".m.$.pl.$.voc.",0.3],
+		["vanta","vantā",".ti.",".m.$.sg.$.abl.",0.99],
+		["vanta","vanta",".ti.",".m.$.sg.$.voc.",0.3],
+		["vanta","vantā",".ti.",".m.$.sg.$.voc.",0.3],
+		["vanta","vanta",".ti.",".nt.$.pl.$.acc.",0.99],
+		["vanta","vantā",".ti.",".nt.$.pl.$.acc.",0.99],
+		["vanta","vanta",".ti.",".nt.$.pl.$.nom.",0.99],
+		["vanta","vantā",".ti.",".nt.$.pl.$.nom.",0.99],
+		["vanta","vanta",".ti.",".nt.$.pl.$.voc.",0.3],
+		["vanta","vantā",".ti.",".nt.$.pl.$.voc.",0.3],
+		["vanta","vantā",".ti.",".nt.$.sg.$.abl.",0.99],
+		["vanta","vanta",".ti.",".nt.$.sg.$.voc.",0.3],
+		["vanta","vantā",".ti.",".nt.$.sg.$.voc.",0.3],
+		["vanta","vantaṃ",".ti.",".m.$.sg.$.acc.",0.99],
+		["vanta","vantaṃ",".ti.",".nt.$.sg.$.acc.",0.99],
+		["vanta","vantaṃ",".ti.",".nt.$.sg.$.nom.",0.99],
+		["vanta","vantaṃ",".ti.",".nt.$.sg.$.nom.",0.99],
+		["vanta","vantaṃ",".ti.",".m.$.sg.$.acc.",0.99],
+		["vanta","vantaṃ",".ti.",".nt.$.sg.$.acc.",0.99],
+		["vanta","vantamhā",".ti.",".m.$.sg.$.abl.",0.99],
+		["vanta","vantamhā",".ti.",".nt.$.sg.$.abl.",0.99],
+		["vanta","vantamhā",".ti.",".m.$.sg.$.abl.",0.99],
+		["vanta","vantamhā",".ti.",".nt.$.sg.$.abl.",0.99],
+		["vanta","vantamhi",".ti.",".m.$.sg.$.loc.",0.99],
+		["vanta","vantamhi",".ti.",".nt.$.sg.$.loc.",0.99],
+		["vanta","vantamhi",".ti.",".m.$.sg.$.loc.",0.99],
+		["vanta","vantamhi",".ti.",".nt.$.sg.$.loc.",0.99],
+		["vanta","vantānaṃ",".ti.",".m.$.pl.$.dat.",0.99],
+		["vanta","vantānaṃ",".ti.",".m.$.pl.$.gen.",0.99],
+		["vanta","vantānaṃ",".ti.",".nt.$.pl.$.dat.",0.99],
+		["vanta","vantānaṃ",".ti.",".nt.$.pl.$.gen.",0.99],
+		["vanta","vantānaṃ",".ti.",".nt.$.pl.$.dat.",0.99],
+		["vanta","vantānaṃ",".ti.",".nt.$.pl.$.gen.",0.99],
+		["vanta","vantani",".ti.",".nt.$.pl.$.acc.",0.99],
+		["vanta","vantāni",".ti.",".nt.$.pl.$.acc.",0.99],
+		["vanta","vantani",".ti.",".nt.$.pl.$.nom.",0.99],
+		["vanta","vantāni",".ti.",".nt.$.pl.$.nom.",0.99],
+		["vanta","vantani",".ti.",".nt.$.pl.$.voc.",0.3],
+		["vanta","vantāni",".ti.",".nt.$.pl.$.voc.",0.3],
+		["vanta","vantasmā",".ti.",".m.$.sg.$.abl.",0.99],
+		["vanta","vantasmā",".ti.",".nt.$.sg.$.abl.",0.99],
+		["vanta","vantasmā",".ti.",".m.$.sg.$.abl.",0.99],
+		["vanta","vantasmā",".ti.",".nt.$.sg.$.abl.",0.99],
+		["vanta","vantasmiṃ",".ti.",".m.$.sg.$.loc.",0.99],
+		["vanta","vantasmiṃ",".ti.",".nt.$.sg.$.loc.",0.99],
+		["vanta","vantasmiṃ",".ti.",".m.$.sg.$.loc.",0.99],
+		["vanta","vantasmiṃ",".ti.",".nt.$.sg.$.loc.",0.99],
+		["vanta","vantassa",".ti.",".m.$.sg.$.dat.",0.99],
+		["vanta","vantassa",".ti.",".m.$.sg.$.gen.",0.99],
+		["vanta","vantassa",".ti.",".nt.$.sg.$.dat.",0.99],
+		["vanta","vantassa",".ti.",".nt.$.sg.$.gen.",0.99],
+		["vanta","vantassa",".ti.",".m.$.sg.$.dat.",0.99],
+		["vanta","vantassa",".ti.",".m.$.sg.$.gen.",0.99],
+		["vanta","vantassa",".ti.",".nt.$.sg.$.dat.",0.99],
+		["vanta","vantassa",".ti.",".nt.$.sg.$.gen.",0.99],
+		["vanta","vante",".ti.",".m.$.pl.$.acc.",0.99],
+		["vanta","vante",".ti.",".m.$.sg.$.loc.",0.99],
+		["vanta","vante",".ti.",".nt.$.pl.$.acc.",0.99],
+		["vanta","vante",".ti.",".nt.$.sg.$.loc.",0.99],
+		["vanta","vantebhi",".ti.",".m.$.pl.$.abl.",0.99],
+		["vanta","vantebhi",".ti.",".m.$.pl.$.inst.",0.99],
+		["vanta","vantebhi",".ti.",".nt.$.pl.$.abl.",0.99],
+		["vanta","vantebhi",".ti.",".nt.$.pl.$.inst.",0.99],
+		["vanta","vantehi",".ti.",".m.$.pl.$.abl.",0.99],
+		["vanta","vantehi",".ti.",".m.$.pl.$.inst.",0.99],
+		["vanta","vantehi",".ti.",".nt.$.pl.$.abl.",0.99],
+		["vanta","vantehi",".ti.",".nt.$.pl.$.inst.",0.99],
+		["vanta","vantesu",".ti.",".m.$.pl.$.loc.",0.99],
+		["vanta","vantesu",".ti.",".nt.$.pl.$.loc.",0.99],
+		["vanta","vantesu",".ti.",".nt.$.pl.$.loc.",0.99],
+		["vanta","vantī",".ti.",".f.$.pl.$.acc.",0.99],
+		["vanta","vantī",".ti.",".f.$.pl.$.nom.",0.99],
+		["vanta","vantī",".ti.",".f.$.pl.$.voc.",0.3],
+		["vanta","vantī",".ti.",".f.$.sg.$.nom.",0.99],
+		["vanta","vantī",".ti.",".f.$.sg.$.voc.",0.3],
+		["vanta","vantībhi",".ti.",".f.$.pl.$.abl.",0.99],
+		["vanta","vantībhi",".ti.",".f.$.pl.$.inst.",0.99],
+		["vanta","vantīhi",".ti.",".f.$.pl.$.abl.",0.99],
+		["vanta","vantīhi",".ti.",".f.$.pl.$.inst.",0.99],
+		["vanta","vantiṃ",".ti.",".f.$.sg.$.acc.",0.99],
+		["vanta","vantīnaṃ",".ti.",".f.$.pl.$.dat.",0.99],
+		["vanta","vantīnaṃ",".ti.",".f.$.pl.$.gen.",0.99],
+		["vanta","vantīsu",".ti.",".f.$.pl.$.loc.",0.99],
+		["vanta","vantiyā",".ti.",".f.$.sg.$.abl.",0.99],
+		["vanta","vantiyā",".ti.",".f.$.sg.$.dat.",0.99],
+		["vanta","vantiyā",".ti.",".f.$.sg.$.gen.",0.99],
+		["vanta","vantiyā",".ti.",".f.$.sg.$.inst.",0.99],
+		["vanta","vantiyā",".ti.",".f.$.sg.$.loc.",0.99],
+		["vanta","vantiyaṃ",".ti.",".f.$.sg.$.loc.",0.99],
+		["vanta","vantiyo",".ti.",".f.$.pl.$.acc.",0.99],
+		["vanta","vantiyo",".ti.",".f.$.pl.$.nom.",0.99],
+		["vanta","vantiyo",".ti.",".f.$.pl.$.voc.",0.3],
+		["vanta","vanto",".ti.",".m.$.pl.$.nom.",0.99],
+		["vanta","vanto",".ti.",".m.$.pl.$.voc.",0.3],
+		["vanta","vanto",".ti.",".m.$.sg.$.nom.",0.99],
+		["vanta","vanto",".ti.",".nt.$.pl.$.nom.",0.99],
+		["vanta","vanto",".ti.",".nt.$.pl.$.voc.",0.3],
+		["vanta","vanto",".ti.",".nt.$.sg.$.nom.",0.99],
+		["vanta","vatā",".ti.",".m.$.sg.$.abl.",0.99],
+		["vanta","vatā",".ti.",".m.$.sg.$.inst.",0.99],
+		["vanta","vatā",".ti.",".nt.$.sg.$.abl.",0.99],
+		["vanta","vatā",".ti.",".nt.$.sg.$.inst.",0.99],
+		["vanta","vatā",".ti.",".m.$.sg.$.abl.",0.99],
+		["vanta","vatā",".ti.",".m.$.sg.$.inst.",0.99],
+		["vanta","vatā",".ti.",".nt.$.sg.$.abl.",0.99],
+		["vanta","vatā",".ti.",".nt.$.sg.$.inst.",0.99],
+		["vanta","vataṃ",".ti.",".m.$.pl.$.dat.",0.99],
+		["vanta","vataṃ",".ti.",".m.$.pl.$.gen.",0.99],
+		["vanta","vataṃ",".ti.",".nt.$.pl.$.dat.",0.99],
+		["vanta","vataṃ",".ti.",".nt.$.pl.$.gen.",0.99],
+		["vanta","vataṃ",".ti.",".nt.$.pl.$.dat.",0.99],
+		["vanta","vataṃ",".ti.",".nt.$.pl.$.gen.",0.99],
+		["vanta","vatena",".ti.",".m.$.sg.$.inst.",0.99],
+		["vanta","vatena",".ti.",".nt.$.sg.$.inst.",0.99],
+		["vanta","vatena",".ti.",".m.$.sg.$.inst.",0.99],
+		["vanta","vatena",".ti.",".nt.$.sg.$.inst.",0.99],
+		["vanta","vatī",".ti.",".f.$.pl.$.acc.",0.99],
+		["vanta","vatī",".ti.",".f.$.pl.$.nom.",0.99],
+		["vanta","vatī",".ti.",".f.$.pl.$.voc.",0.3],
+		["vanta","vatī",".ti.",".f.$.sg.$.nom.",0.99],
+		["vanta","vatī",".ti.",".f.$.sg.$.voc.",0.3],
+		["vanta","vati",".ti.",".m.$.sg.$.loc.",0.99],
+		["vanta","vati",".ti.",".nt.$.sg.$.loc.",0.99],
+		["vanta","vati",".ti.",".m.$.sg.$.loc.",0.99],
+		["vanta","vati",".ti.",".nt.$.sg.$.loc.",0.99],
+		["vanta","vatībhi",".ti.",".f.$.pl.$.abl.",0.99],
+		["vanta","vatībhi",".ti.",".f.$.pl.$.inst.",0.99],
+		["vanta","vatīhi",".ti.",".f.$.pl.$.abl.",0.99],
+		["vanta","vatīhi",".ti.",".f.$.pl.$.inst.",0.99],
+		["vanta","vatiṃ",".ti.",".f.$.sg.$.acc.",0.99],
+		["vanta","vatīnaṃ",".ti.",".f.$.pl.$.dat.",0.99],
+		["vanta","vatīnaṃ",".ti.",".f.$.pl.$.gen.",0.99],
+		["vanta","vatīsu",".ti.",".f.$.pl.$.loc.",0.99],
+		["vanta","vatiyā",".ti.",".f.$.sg.$.abl.",0.99],
+		["vanta","vatiyā",".ti.",".f.$.sg.$.dat.",0.99],
+		["vanta","vatiyā",".ti.",".f.$.sg.$.gen.",0.99],
+		["vanta","vatiyā",".ti.",".f.$.sg.$.inst.",0.99],
+		["vanta","vatiyā",".ti.",".f.$.sg.$.loc.",0.99],
+		["vanta","vatiyaṃ",".ti.",".f.$.sg.$.loc.",0.99],
+		["vanta","vatiyo",".ti.",".f.$.pl.$.acc.",0.99],
+		["vanta","vatiyo",".ti.",".f.$.pl.$.nom.",0.99],
+		["vanta","vatiyo",".ti.",".f.$.pl.$.voc.",0.3],
+		["vanta","vato",".ti.",".m.$.sg.$.dat.",0.99],
+		["vanta","vato",".ti.",".m.$.sg.$.gen.",0.99],
+		["vanta","vato",".ti.",".nt.$.sg.$.dat.",0.99],
+		["vanta","vato",".ti.",".nt.$.sg.$.gen.",0.99],
+		["vanta","vato",".ti.",".m.$.sg.$.dat.",0.99],
+		["vanta","vato",".ti.",".m.$.sg.$.gen.",0.99],
+		["vanta","vato",".ti.",".nt.$.sg.$.dat.",0.99],
+		["vanta","vato",".ti.",".nt.$.sg.$.gen.",0.99],
+		["vanta","ve",".ti.",".m.$.pl.$.acc.",0.99],
+		["vanta","vebhi",".ti.",".m.$.pl.$.abl.",0.99],
+		["vanta","vebhi",".ti.",".m.$.pl.$.inst.",0.99],
+		["vanta","vehi",".ti.",".m.$.pl.$.abl.",0.99],
+		["vanta","vehi",".ti.",".m.$.pl.$.inst.",0.99],
+		["vanta","vesu",".ti.",".m.$.pl.$.loc.",0.99],
+		["a","o",".n.",".m.$.sg.$.nom.",0.99],
+		["a","a",".n.",".m.$.sg.$.voc.",0.3],
+		["a","ā",".n.",".m.$.sg.$.voc.",0.3],
+		["a","aṃ",".n.",".m.$.sg.$.acc.",0.99],
+		["a","assa",".n.",".m.$.sg.$.gen.",0.99],
+		["a","assa",".n.",".m.$.sg.$.dat.",0.99],
+		["a","āya",".n.",".m.$.sg.$.dat.",0.99],
+		["a","ena",".n.",".m.$.sg.$.inst.",0.99],
+		["a","ā",".n.",".m.$.sg.$.abl.",0.99],
+		["a","asmā",".n.",".m.$.sg.$.abl.",0.99],
+		["a","amhā",".n.",".m.$.sg.$.abl.",0.99],
+		["a","ato",".n.",".m.$.sg.$.abl.",0.99],
+		["a","e",".n.",".m.$.sg.$.loc.",0.99],
+		["a","asmiṃ",".n.",".m.$.sg.$.loc.",0.99],
+		["a","amhi",".n.",".m.$.sg.$.loc.",0.99],
+		["a","ā",".n.",".m.$.pl.$.nom.",0.99],
+		["a","āse",".n.",".m.$.pl.$.nom.",0.99],
+		["a","ā",".n.",".m.$.pl.$.voc.",0.3],
+		["a","e",".n.",".m.$.pl.$.acc.",0.99],
+		["a","ānaṃ",".n.",".m.$.pl.$.gen.",0.99],
+		["a","ānaṃ",".n.",".m.$.pl.$.dat.",0.99],
+		["a","ehi",".n.",".m.$.pl.$.inst.",0.99],
+		["a","ebhi",".n.",".m.$.pl.$.inst.",0.99],
+		["a","ehi",".n.",".m.$.pl.$.abl.",0.99],
+		["a","ebhi",".n.",".m.$.pl.$.abl.",0.99],
+		["a","esu",".n.",".m.$.pl.$.loc.",0.99],
+		["a","aṃ",".n.",".nt.$.sg.$.nom.",0.99],
+		["a","a",".n.",".nt.$.sg.$.voc.",0.3],
+		["a","aṃ",".n.",".nt.$.sg.$.acc.",0.99],
+		["a","assa",".n.",".nt.$.sg.$.gen.",0.99],
+		["a","assa",".n.",".nt.$.sg.$.dat.",0.99],
+		["a","āya",".n.",".nt.$.sg.$.dat.",0.99],
+		["a","ena",".n.",".nt.$.sg.$.inst.",0.99],
+		["a","ā",".n.",".nt.$.sg.$.abl.",0.99],
+		["a","asmā",".n.",".nt.$.sg.$.abl.",0.99],
+		["a","amhā",".n.",".nt.$.sg.$.abl.",0.99],
+		["a","ato",".n.",".nt.$.sg.$.abl.",0.99],
+		["a","e",".n.",".nt.$.sg.$.loc.",0.99],
+		["a","asmiṃ",".n.",".nt.$.sg.$.loc.",0.99],
+		["a","amhi",".n.",".nt.$.sg.$.loc.",0.99],
+		["a","āni",".n.",".nt.$.pl.$.nom.",0.99],
+		["a","ā",".n.",".nt.$.pl.$.nom.",0.99],
+		["a","āni",".n.",".nt.$.pl.$.voc.",0.3],
+		["a","ā",".n.",".nt.$.pl.$.voc.",0.3],
+		["a","āni",".n.",".nt.$.pl.$.acc.",0.99],
+		["a","e",".n.",".nt.$.pl.$.acc.",0.99],
+		["a","ānaṃ",".n.",".nt.$.pl.$.gen.",0.99],
+		["a","ānaṃ",".n.",".nt.$.pl.$.dat.",0.99],
+		["a","ehi",".n.",".nt.$.pl.$.inst.",0.99],
+		["a","ebhi",".n.",".nt.$.pl.$.inst.",0.99],
+		["a","ehi",".n.",".nt.$.pl.$.abl.",0.99],
+		["a","ebhi",".n.",".nt.$.pl.$.abl.",0.99],
+		["a","esu",".n.",".nt.$.pl.$.loc.",0.99],
+		["a","esaṃ",".n.",".m.$.pl.$.dat.",0.99],
+		["a","esaṃ",".n.",".m.$.pl.$.gen.",0.99],
+		["a","esaṃ",".n.",".nt.$.pl.$.dat.",0.99],
+		["a","esaṃ",".n.",".nt.$.pl.$.gen.",0.99],
+		["ā","ā",".n.",".f.$.sg.$.nom.",0.99],
+		["ā","ā",".n.",".f.$.sg.$.voc.",0.3],
+		["ā","e",".n.",".f.$.sg.$.voc.",0.3],
+		["ā","aṃ",".n.",".f.$.sg.$.acc.",0.99],
+		["ā","āya",".n.",".f.$.sg.$.gen.",0.99],
+		["ā","āya",".n.",".f.$.sg.$.dat.",0.99],
+		["ā","āya",".n.",".f.$.sg.$.inst.",0.99],
+		["ā","āya",".n.",".f.$.sg.$.abl.",0.99],
+		["ā","ato",".n.",".f.$.sg.$.abl.",0.99],
+		["ā","āya",".n.",".f.$.sg.$.loc.",0.99],
+		["ā","āyaṃ",".n.",".f.$.sg.$.loc.",0.99],
+		["ā","ā",".n.",".f.$.pl.$.nom.",0.99],
+		["ā","āyo",".n.",".f.$.pl.$.nom.",0.99],
+		["ā","ā",".n.",".f.$.pl.$.voc.",0.3],
+		["ā","āyo",".n.",".f.$.pl.$.voc.",0.3],
+		["ā","ā",".n.",".f.$.pl.$.acc.",0.99],
+		["ā","āyo",".n.",".f.$.pl.$.acc.",0.99],
+		["ā","ānaṃ",".n.",".f.$.pl.$.gen.",0.99],
+		["ā","ānaṃ",".n.",".f.$.pl.$.dat.",0.99],
+		["ā","āhi",".n.",".f.$.pl.$.inst.",0.99],
+		["ā","ābhi",".n.",".f.$.pl.$.inst.",0.99],
+		["ā","āhi",".n.",".f.$.pl.$.abl.",0.99],
+		["ā","ābhi",".n.",".f.$.pl.$.abl.",0.99],
+		["ā","āsu",".n.",".f.$.pl.$.loc.",0.99],
+		["i","i",".n.",".m.$.sg.$.nom.",0.99],
+		["i","i",".n.",".m.$.sg.$.voc.",0.3],
+		["i","iṃ",".n.",".m.$.sg.$.acc.",0.99],
+		["i","issa",".n.",".m.$.sg.$.gen.",0.99],
+		["i","ino",".n.",".m.$.sg.$.gen.",0.99],
+		["i","issa",".n.",".m.$.sg.$.dat.",0.99],
+		["i","ino",".n.",".m.$.sg.$.dat.",0.99],
+		["i","inā",".n.",".m.$.sg.$.inst.",0.99],
+		["i","inā",".n.",".m.$.sg.$.abl.",0.99],
+		["i","ismā",".n.",".m.$.sg.$.abl.",0.99],
+		["i","imhā",".n.",".m.$.sg.$.abl.",0.99],
+		["i","ismiṃ",".n.",".m.$.sg.$.loc.",0.99],
+		["i","imhi",".n.",".m.$.sg.$.loc.",0.99],
+		["i","ī",".n.",".m.$.pl.$.nom.",0.99],
+		["i","ayo",".n.",".m.$.pl.$.nom.",0.99],
+		["i","ī",".n.",".m.$.pl.$.voc.",0.3],
+		["i","ayo",".n.",".m.$.pl.$.voc.",0.3],
+		["i","ī",".n.",".m.$.pl.$.acc.",0.99],
+		["i","ayo",".n.",".m.$.pl.$.acc.",0.99],
+		["i","īnaṃ",".n.",".m.$.pl.$.gen.",0.99],
+		["i","īnaṃ",".n.",".m.$.pl.$.dat.",0.99],
+		["i","īhi",".n.",".m.$.pl.$.inst.",0.99],
+		["i","ībhi",".n.",".m.$.pl.$.inst.",0.99],
+		["i","īhi",".n.",".m.$.pl.$.abl.",0.99],
+		["i","ībhi",".n.",".m.$.pl.$.abl.",0.99],
+		["i","īsu",".n.",".m.$.pl.$.loc.",0.99],
+		["i","i",".n.",".nt.$.sg.$.nom.",0.99],
+		["i","i",".n.",".nt.$.sg.$.voc.",0.3],
+		["i","iṃ",".n.",".nt.$.sg.$.acc.",0.99],
+		["i","assa",".n.",".nt.$.sg.$.gen.",0.99],
+		["i","ino",".n.",".nt.$.sg.$.gen.",0.99],
+		["i","assa",".n.",".nt.$.sg.$.dat.",0.99],
+		["i","ino",".n.",".nt.$.sg.$.dat.",0.99],
+		["i","inā",".n.",".nt.$.sg.$.inst.",0.99],
+		["i","inā",".n.",".nt.$.sg.$.abl.",0.99],
+		["i","ismā",".n.",".nt.$.sg.$.abl.",0.99],
+		["i","imhā",".n.",".nt.$.sg.$.abl.",0.99],
+		["i","ismiṃ",".n.",".nt.$.sg.$.loc.",0.99],
+		["i","imhi",".n.",".nt.$.sg.$.loc.",0.99],
+		["i","īni",".n.",".nt.$.pl.$.nom.",0.99],
+		["i","ī",".n.",".nt.$.pl.$.nom.",0.99],
+		["i","īni",".n.",".nt.$.pl.$.voc.",0.3],
+		["i","ī",".n.",".nt.$.pl.$.voc.",0.3],
+		["i","īni",".n.",".nt.$.pl.$.acc.",0.99],
+		["i","ī",".n.",".nt.$.pl.$.acc.",0.99],
+		["i","īnaṃ",".n.",".nt.$.pl.$.gen.",0.99],
+		["i","īnaṃ",".n.",".nt.$.pl.$.dat.",0.99],
+		["i","īhi",".n.",".nt.$.pl.$.inst.",0.99],
+		["i","ībhi",".n.",".nt.$.pl.$.inst.",0.99],
+		["i","īhi",".n.",".nt.$.pl.$.abl.",0.99],
+		["i","ībhi",".n.",".nt.$.pl.$.abl.",0.99],
+		["i","īsu",".n.",".nt.$.pl.$.loc.",0.99],
+		["i","i",".n.",".f.$.sg.$.nom.",0.99],
+		["i","i",".n.",".f.$.sg.$.voc.",0.3],
+		["i","iṃ",".n.",".f.$.sg.$.acc.",0.99],
+		["i","iyā",".n.",".f.$.sg.$.gen.",0.99],
+		["i","yā",".n.",".f.$.sg.$.gen.",0.99],
+		["i","iyā",".n.",".f.$.sg.$.dat.",0.99],
+		["i","yā",".n.",".f.$.sg.$.dat.",0.99],
+		["i","iyā",".n.",".f.$.sg.$.inst.",0.99],
+		["i","yā",".n.",".f.$.sg.$.inst.",0.99],
+		["i","iyā",".n.",".f.$.sg.$.abl.",0.99],
+		["i","yā",".n.",".f.$.sg.$.abl.",0.99],
+		["i","iyā",".n.",".f.$.sg.$.loc.",0.99],
+		["i","yā",".n.",".f.$.sg.$.loc.",0.99],
+		["i","iyaṃ",".n.",".f.$.sg.$.loc.",0.99],
+		["i","yaṃ",".n.",".f.$.sg.$.loc.",0.99],
+		["i","ī",".n.",".f.$.pl.$.nom.",0.99],
+		["i","iyo",".n.",".f.$.pl.$.nom.",0.99],
+		["i","yo",".n.",".f.$.pl.$.nom.",0.99],
+		["i","ī",".n.",".f.$.pl.$.voc.",0.3],
+		["i","iyo",".n.",".f.$.pl.$.voc.",0.3],
+		["i","yo",".n.",".f.$.pl.$.voc.",0.3],
+		["i","ī",".n.",".f.$.pl.$.acc.",0.99],
+		["i","iyo",".n.",".f.$.pl.$.acc.",0.99],
+		["i","yo",".n.",".f.$.pl.$.acc.",0.99],
+		["i","īnaṃ",".n.",".f.$.pl.$.gen.",0.99],
+		["i","īnaṃ",".n.",".f.$.pl.$.dat.",0.99],
+		["i","īhi",".n.",".f.$.pl.$.inst.",0.99],
+		["i","ībhi",".n.",".f.$.pl.$.inst.",0.99],
+		["i","īhi",".n.",".f.$.pl.$.abl.",0.99],
+		["i","ībhi",".n.",".f.$.pl.$.abl.",0.99],
+		["i","īsu",".n.",".f.$.pl.$.loc.",0.99],
+		["ī","ī",".n.",".m.$.sg.$.nom.",0.99],
+		["in","ī",".n.",".m.$.sg.$.nom.",0.99],
+		["ī","ī",".n.",".m.$.sg.$.voc.",0.3],
+		["ī","inī",".n.",".m.$.sg.$.voc.",0.3],
+		["in","ī",".n.",".m.$.sg.$.voc.",0.3],
+		["in","inī",".n.",".m.$.sg.$.voc.",0.3],
+		["ī","iṃ",".n.",".m.$.sg.$.acc.",0.99],
+		["ī","inaṃ",".n.",".m.$.sg.$.acc.",0.99],
+		["in","iṃ",".n.",".m.$.sg.$.acc.",0.99],
+		["in","inaṃ",".n.",".m.$.sg.$.acc.",0.99],
+		["ī","issa",".n.",".m.$.sg.$.gen.",0.99],
+		["ī","ino",".n.",".m.$.sg.$.gen.",0.99],
+		["in","issa",".n.",".m.$.sg.$.gen.",0.99],
+		["in","ino",".n.",".m.$.sg.$.gen.",0.99],
+		["ī","issa",".n.",".m.$.sg.$.dat.",0.99],
+		["ī","ino",".n.",".m.$.sg.$.dat.",0.99],
+		["in","issa",".n.",".m.$.sg.$.dat.",0.99],
+		["in","ino",".n.",".m.$.sg.$.dat.",0.99],
+		["ī","inā",".n.",".m.$.sg.$.inst.",0.99],
+		["in","inā",".n.",".m.$.sg.$.inst.",0.99],
+		["ī","inā",".n.",".m.$.sg.$.abl.",0.99],
+		["ī","ismā",".n.",".m.$.sg.$.abl.",0.99],
+		["ī","imhā",".n.",".m.$.sg.$.abl.",0.99],
+		["in","inā",".n.",".m.$.sg.$.abl.",0.99],
+		["in","ismā",".n.",".m.$.sg.$.abl.",0.99],
+		["in","imhā",".n.",".m.$.sg.$.abl.",0.99],
+		["ī","ismiṃ",".n.",".m.$.sg.$.loc.",0.99],
+		["ī","imhi",".n.",".m.$.sg.$.loc.",0.99],
+		["in","ismiṃ",".n.",".m.$.sg.$.loc.",0.99],
+		["in","imhi",".n.",".m.$.sg.$.loc.",0.99],
+		["ī","ī",".n.",".m.$.pl.$.nom.",0.99],
+		["ī","ino",".n.",".m.$.pl.$.nom.",0.99],
+		["in","ī",".n.",".m.$.pl.$.nom.",0.99],
+		["in","ino",".n.",".m.$.pl.$.nom.",0.99],
+		["ī","ī",".n.",".m.$.pl.$.voc.",0.3],
+		["ī","ino",".n.",".m.$.pl.$.voc.",0.3],
+		["in","ī",".n.",".m.$.pl.$.voc.",0.3],
+		["in","ino",".n.",".m.$.pl.$.voc.",0.3],
+		["ī","ī",".n.",".m.$.pl.$.acc.",0.99],
+		["ī","ino",".n.",".m.$.pl.$.acc.",0.99],
+		["in","ī",".n.",".m.$.pl.$.acc.",0.99],
+		["in","ino",".n.",".m.$.pl.$.acc.",0.99],
+		["ī","inaṃ",".n.",".m.$.pl.$.gen.",0.99],
+		["in","inaṃ",".n.",".m.$.pl.$.gen.",0.99],
+		["ī","inaṃ",".n.",".m.$.pl.$.dat.",0.99],
+		["in","inaṃ",".n.",".m.$.pl.$.dat.",0.99],
+		["ī","īhi",".n.",".m.$.pl.$.inst.",0.99],
+		["ī","ībhi",".n.",".m.$.pl.$.inst.",0.99],
+		["in","īhi",".n.",".m.$.pl.$.inst.",0.99],
+		["in","ībhi",".n.",".m.$.pl.$.inst.",0.99],
+		["ī","īhi",".n.",".m.$.pl.$.abl.",0.99],
+		["ī","ībhi",".n.",".m.$.pl.$.abl.",0.99],
+		["in","īhi",".n.",".m.$.pl.$.abl.",0.99],
+		["in","ībhi",".n.",".m.$.pl.$.abl.",0.99],
+		["ī","īsu",".n.",".m.$.pl.$.loc.",0.99],
+		["in","īsu",".n.",".m.$.pl.$.loc.",0.99],
+		["ī","ī",".n.",".f.$.sg.$.nom.",0.99],
+		["ī","ī",".n.",".f.$.sg.$.voc.",0.3],
+		["ī","iṃ",".n.",".f.$.sg.$.acc.",0.99],
+		["ī","iyā",".n.",".f.$.sg.$.gen.",0.99],
+		["ī","ayā",".n.",".f.$.sg.$.gen.",0.99],
+		["ī","yā",".n.",".f.$.sg.$.gen.",0.99],
+		["ī","iyā",".n.",".f.$.sg.$.dat.",0.99],
+		["ī","ayā",".n.",".f.$.sg.$.dat.",0.99],
+		["ī","yā",".n.",".f.$.sg.$.dat.",0.99],
+		["ī","iyā",".n.",".f.$.sg.$.inst.",0.99],
+		["ī","ayā",".n.",".f.$.sg.$.inst.",0.99],
+		["ī","yā",".n.",".f.$.sg.$.inst.",0.99],
+		["ī","iyā",".n.",".f.$.sg.$.abl.",0.99],
+		["ī","ayā",".n.",".f.$.sg.$.abl.",0.99],
+		["ī","yā",".n.",".f.$.sg.$.abl.",0.99],
+		["ī","iyā",".n.",".f.$.sg.$.loc.",0.99],
+		["ī","ayā",".n.",".f.$.sg.$.loc.",0.99],
+		["ī","yā",".n.",".f.$.sg.$.loc.",0.99],
+		["ī","iyaṃ",".n.",".f.$.sg.$.loc.",0.99],
+		["ī","ayaṃ",".n.",".f.$.sg.$.loc.",0.99],
+		["ī","yaṃ",".n.",".f.$.sg.$.loc.",0.99],
+		["ī","ī",".n.",".f.$.pl.$.nom.",0.99],
+		["ī","iyo",".n.",".f.$.pl.$.nom.",0.99],
+		["ī","yo",".n.",".f.$.pl.$.nom.",0.99],
+		["ī","ī",".n.",".f.$.pl.$.voc.",0.3],
+		["ī","iyo",".n.",".f.$.pl.$.voc.",0.3],
+		["ī","yo",".n.",".f.$.pl.$.voc.",0.3],
+		["ī","ī",".n.",".f.$.pl.$.acc.",0.99],
+		["ī","iyo",".n.",".f.$.pl.$.acc.",0.99],
+		["ī","yo",".n.",".f.$.pl.$.acc.",0.99],
+		["ī","īnaṃ",".n.",".f.$.pl.$.gen.",0.99],
+		["ī","īnaṃ",".n.",".f.$.pl.$.dat.",0.99],
+		["ī","īhi",".n.",".f.$.pl.$.inst.",0.99],
+		["ī","ībhi",".n.",".f.$.pl.$.inst.",0.99],
+		["ī","īhi",".n.",".f.$.pl.$.abl.",0.99],
+		["ī","ībhi",".n.",".f.$.pl.$.abl.",0.99],
+		["ī","īsu",".n.",".f.$.pl.$.loc.",0.99],
+		["u","u",".n.",".m.$.sg.$.nom.",0.99],
+		["u","u",".n.",".m.$.sg.$.voc.",0.3],
+		["u","uṃ",".n.",".m.$.sg.$.acc.",0.99],
+		["u","ussa",".n.",".m.$.sg.$.gen.",0.99],
+		["u","uno",".n.",".m.$.sg.$.gen.",0.99],
+		["u","ussa",".n.",".m.$.sg.$.dat.",0.99],
+		["u","uno",".n.",".m.$.sg.$.dat.",0.99],
+		["u","unā",".n.",".m.$.sg.$.inst.",0.99],
+		["u","unā",".n.",".m.$.sg.$.abl.",0.99],
+		["u","usmā",".n.",".m.$.sg.$.abl.",0.99],
+		["u","umhā",".n.",".m.$.sg.$.abl.",0.99],
+		["u","usmiṃ",".n.",".m.$.sg.$.loc.",0.99],
+		["u","umhi",".n.",".m.$.sg.$.loc.",0.99],
+		["u","ū",".n.",".m.$.pl.$.nom.",0.99],
+		["u","avo",".n.",".m.$.pl.$.nom.",0.99],
+		["u","ū",".n.",".m.$.pl.$.voc.",0.3],
+		["u","avo",".n.",".m.$.pl.$.voc.",0.3],
+		["u","ave",".n.",".m.$.pl.$.voc.",0.3],
+		["u","ū",".n.",".m.$.pl.$.acc.",0.99],
+		["u","avo",".n.",".m.$.pl.$.acc.",0.99],
+		["u","ūnaṃ",".n.",".m.$.pl.$.gen.",0.99],
+		["u","ūnaṃ",".n.",".m.$.pl.$.dat.",0.99],
+		["u","ūhi",".n.",".m.$.pl.$.inst.",0.99],
+		["u","ūbhi",".n.",".m.$.pl.$.inst.",0.99],
+		["u","ūhi",".n.",".m.$.pl.$.abl.",0.99],
+		["u","ūbhi",".n.",".m.$.pl.$.abl.",0.99],
+		["u","ūsu",".n.",".m.$.pl.$.loc.",0.99],
+		["u","u",".n.",".nt.$.sg.$.nom.",0.99],
+		["u","u",".n.",".nt.$.sg.$.voc.",0.3],
+		["u","uṃ",".n.",".nt.$.sg.$.acc.",0.99],
+		["u","ussa",".n.",".nt.$.sg.$.gen.",0.99],
+		["u","uno",".n.",".nt.$.sg.$.gen.",0.99],
+		["u","ussa",".n.",".nt.$.sg.$.dat.",0.99],
+		["u","uno",".n.",".nt.$.sg.$.dat.",0.99],
+		["u","unā",".n.",".nt.$.sg.$.inst.",0.99],
+		["u","unā",".n.",".nt.$.sg.$.abl.",0.99],
+		["u","usmā",".n.",".nt.$.sg.$.abl.",0.99],
+		["u","umhā",".n.",".nt.$.sg.$.abl.",0.99],
+		["u","usmiṃ",".n.",".nt.$.sg.$.loc.",0.99],
+		["u","umhi",".n.",".nt.$.sg.$.loc.",0.99],
+		["u","ū",".n.",".nt.$.pl.$.nom.",0.99],
+		["u","ūni",".n.",".nt.$.pl.$.nom.",0.99],
+		["u","ū",".n.",".nt.$.pl.$.voc.",0.3],
+		["u","ūni",".n.",".nt.$.pl.$.voc.",0.3],
+		["u","ū",".n.",".nt.$.pl.$.acc.",0.99],
+		["u","ūni",".n.",".nt.$.pl.$.acc.",0.99],
+		["u","ūnaṃ",".n.",".nt.$.pl.$.gen.",0.99],
+		["u","ūnaṃ",".n.",".nt.$.pl.$.dat.",0.99],
+		["u","ūhi",".n.",".nt.$.pl.$.inst.",0.99],
+		["u","ūbhi",".n.",".nt.$.pl.$.inst.",0.99],
+		["u","ūhi",".n.",".nt.$.pl.$.abl.",0.99],
+		["u","ūbhi",".n.",".nt.$.pl.$.abl.",0.99],
+		["u","ūsu",".n.",".nt.$.pl.$.loc.",0.99],
+		["u","u",".n.",".f.$.sg.$.nom.",0.99],
+		["u","u",".n.",".f.$.sg.$.voc.",0.3],
+		["u","uṃ",".n.",".f.$.sg.$.acc.",0.99],
+		["u","uyā",".n.",".f.$.sg.$.gen.",0.99],
+		["u","uyā",".n.",".f.$.sg.$.dat.",0.99],
+		["u","uyā",".n.",".f.$.sg.$.inst.",0.99],
+		["u","uyā",".n.",".f.$.sg.$.abl.",0.99],
+		["u","uto",".n.",".f.$.sg.$.abl.",0.99],
+		["u","uyā",".n.",".f.$.sg.$.loc.",0.99],
+		["u","uyaṃ",".n.",".f.$.sg.$.loc.",0.99],
+		["u","ū",".n.",".f.$.pl.$.nom.",0.99],
+		["u","uyo",".n.",".f.$.pl.$.nom.",0.99],
+		["u","ūvo",".n.",".f.$.pl.$.nom.",0.99],
+		["u","ū",".n.",".f.$.pl.$.voc.",0.3],
+		["u","uyo",".n.",".f.$.pl.$.voc.",0.3],
+		["u","ū",".n.",".f.$.pl.$.acc.",0.99],
+		["u","uyo",".n.",".f.$.pl.$.acc.",0.99],
+		["u","ūnaṃ",".n.",".f.$.pl.$.gen.",0.99],
+		["u","ūnaṃ",".n.",".f.$.pl.$.dat.",0.99],
+		["u","ūhi",".n.",".f.$.pl.$.inst.",0.99],
+		["u","ūbhi",".n.",".f.$.pl.$.inst.",0.99],
+		["u","ūhi",".n.",".f.$.pl.$.abl.",0.99],
+		["u","ūbhi",".n.",".f.$.pl.$.abl.",0.99],
+		["u","ūsu",".n.",".f.$.pl.$.loc.",0.99],
+		["ū","ū",".n.",".m.$.sg.$.nom.",0.99],
+		["ū","ū",".n.",".m.$.sg.$.voc.",0.3],
+		["ū","uṃ",".n.",".m.$.sg.$.acc.",0.99],
+		["ū","ussa",".n.",".m.$.sg.$.gen.",0.99],
+		["ū","uno",".n.",".m.$.sg.$.gen.",0.99],
+		["ū","ussa",".n.",".m.$.sg.$.dat.",0.99],
+		["ū","uno",".n.",".m.$.sg.$.dat.",0.99],
+		["ū","unā",".n.",".m.$.sg.$.inst.",0.99],
+		["ū","unā",".n.",".m.$.sg.$.abl.",0.99],
+		["ū","usmā",".n.",".m.$.sg.$.abl.",0.99],
+		["ū","umhā",".n.",".m.$.sg.$.abl.",0.99],
+		["ū","usmiṃ",".n.",".m.$.sg.$.loc.",0.99],
+		["ū","umhi",".n.",".m.$.sg.$.loc.",0.99],
+		["ū","ū",".n.",".m.$.pl.$.nom.",0.99],
+		["ū","avo",".n.",".m.$.pl.$.nom.",0.99],
+		["ū","ū",".n.",".m.$.pl.$.voc.",0.3],
+		["ū","avo",".n.",".m.$.pl.$.voc.",0.3],
+		["ū","ave",".n.",".m.$.pl.$.voc.",0.3],
+		["ū","ū",".n.",".m.$.pl.$.acc.",0.99],
+		["ū","avo",".n.",".m.$.pl.$.acc.",0.99],
+		["ū","ūnaṃ",".n.",".m.$.pl.$.gen.",0.99],
+		["ū","ūnaṃ",".n.",".m.$.pl.$.dat.",0.99],
+		["ū","ūhi",".n.",".m.$.pl.$.inst.",0.99],
+		["ū","ūbhi",".n.",".m.$.pl.$.inst.",0.99],
+		["ū","ūhi",".n.",".m.$.pl.$.abl.",0.99],
+		["ū","ūbhi",".n.",".m.$.pl.$.abl.",0.99],
+		["ū","ūsu",".n.",".m.$.pl.$.loc.",0.99],
+		["ū","ū",".n.",".f.$.sg.$.nom.",0.99],
+		["ū","ū",".n.",".f.$.sg.$.voc.",0.3],
+		["ū","uṃ",".n.",".f.$.sg.$.acc.",0.99],
+		["ū","uyā",".n.",".f.$.sg.$.gen.",0.99],
+		["ū","uyā",".n.",".f.$.sg.$.dat.",0.99],
+		["ū","uyā",".n.",".f.$.sg.$.inst.",0.99],
+		["ū","uyā",".n.",".f.$.sg.$.abl.",0.99],
+		["ū","uto",".n.",".f.$.sg.$.abl.",0.99],
+		["ū","uyā",".n.",".f.$.sg.$.loc.",0.99],
+		["ū","uyaṃ",".n.",".f.$.sg.$.loc.",0.99],
+		["ū","ū",".n.",".f.$.pl.$.nom.",0.99],
+		["ū","uyo",".n.",".f.$.pl.$.nom.",0.99],
+		["ū","ū",".n.",".f.$.pl.$.voc.",0.3],
+		["ū","uyo",".n.",".f.$.pl.$.voc.",0.3],
+		["ū","ū",".n.",".f.$.pl.$.acc.",0.99],
+		["ū","uyo",".n.",".f.$.pl.$.acc.",0.99],
+		["ū","ūnaṃ",".n.",".f.$.pl.$.gen.",0.99],
+		["ū","ūnaṃ",".n.",".f.$.pl.$.dat.",0.99],
+		["ū","ūhi",".n.",".f.$.pl.$.inst.",0.99],
+		["ū","ūbhi",".n.",".f.$.pl.$.inst.",0.99],
+		["ū","ūhi",".n.",".f.$.pl.$.abl.",0.99],
+		["ū","ūbhi",".n.",".f.$.pl.$.abl.",0.99],
+		["ū","ūsu",".n.",".f.$.pl.$.loc.",0.99],
+		["as","o",".n.",".m.$.sg.$.nom.",0.99],
+		["as","aṃ",".n.",".m.$.sg.$.nom.",0.99],
+		["o","o",".n.",".m.$.sg.$.nom.",0.99],
+		["o","aṃ",".n.",".m.$.sg.$.nom.",0.99],
+		["as","o",".n.",".m.$.sg.$.voc.",0.3],
+		["as","aṃ",".n.",".m.$.sg.$.voc.",0.3],
+		["as","ā",".n.",".m.$.sg.$.voc.",0.3],
+		["as","a",".n.",".m.$.sg.$.voc.",0.3],
+		["o","o",".n.",".m.$.sg.$.voc.",0.3],
+		["o","aṃ",".n.",".m.$.sg.$.voc.",0.3],
+		["o","ā",".n.",".m.$.sg.$.voc.",0.3],
+		["o","a",".n.",".m.$.sg.$.voc.",0.3],
+		["as","o",".n.",".m.$.sg.$.acc.",0.99],
+		["as","aṃ",".n.",".m.$.sg.$.acc.",0.99],
+		["o","o",".n.",".m.$.sg.$.acc.",0.99],
+		["o","aṃ",".n.",".m.$.sg.$.acc.",0.99],
+		["as","aso",".n.",".m.$.sg.$.gen.",0.99],
+		["as","assa",".n.",".m.$.sg.$.gen.",0.99],
+		["o","aso",".n.",".m.$.sg.$.gen.",0.99],
+		["o","assa",".n.",".m.$.sg.$.gen.",0.99],
+		["as","aso",".n.",".m.$.sg.$.dat.",0.99],
+		["as","assa",".n.",".m.$.sg.$.dat.",0.99],
+		["o","aso",".n.",".m.$.sg.$.dat.",0.99],
+		["o","assa",".n.",".m.$.sg.$.dat.",0.99],
+		["as","asā",".n.",".m.$.sg.$.inst.",0.99],
+		["as","ena",".n.",".m.$.sg.$.inst.",0.99],
+		["o","asā",".n.",".m.$.sg.$.inst.",0.99],
+		["o","ena",".n.",".m.$.sg.$.inst.",0.99],
+		["as","asā",".n.",".m.$.sg.$.abl.",0.99],
+		["as","asmā",".n.",".m.$.sg.$.abl.",0.99],
+		["as","amhā",".n.",".m.$.sg.$.abl.",0.99],
+		["as","ā",".n.",".m.$.sg.$.abl.",0.99],
+		["o","asā",".n.",".m.$.sg.$.abl.",0.99],
+		["o","asmā",".n.",".m.$.sg.$.abl.",0.99],
+		["o","amhā",".n.",".m.$.sg.$.abl.",0.99],
+		["o","ā",".n.",".m.$.sg.$.abl.",0.99],
+		["as","asi",".n.",".m.$.sg.$.loc.",0.99],
+		["as","e",".n.",".m.$.sg.$.loc.",0.99],
+		["as","asmiṃ",".n.",".m.$.sg.$.loc.",0.99],
+		["as","amhi",".n.",".m.$.sg.$.loc.",0.99],
+		["o","asi",".n.",".m.$.sg.$.loc.",0.99],
+		["o","e",".n.",".m.$.sg.$.loc.",0.99],
+		["o","asmiṃ",".n.",".m.$.sg.$.loc.",0.99],
+		["o","amhi",".n.",".m.$.sg.$.loc.",0.99],
+		["as","ā",".n.",".m.$.pl.$.nom.",0.99],
+		["o","ā",".n.",".m.$.pl.$.nom.",0.99],
+		["as","ā",".n.",".m.$.pl.$.voc.",0.3],
+		["o","ā",".n.",".m.$.pl.$.voc.",0.3],
+		["as","e",".n.",".m.$.pl.$.acc.",0.99],
+		["o","e",".n.",".m.$.pl.$.acc.",0.99],
+		["as","ānaṃ",".n.",".m.$.pl.$.gen.",0.99],
+		["o","ānaṃ",".n.",".m.$.pl.$.gen.",0.99],
+		["as","ānaṃ",".n.",".m.$.pl.$.dat.",0.99],
+		["o","ānaṃ",".n.",".m.$.pl.$.dat.",0.99],
+		["as","ehi",".n.",".m.$.pl.$.inst.",0.99],
+		["as","ebhi",".n.",".m.$.pl.$.inst.",0.99],
+		["o","ehi",".n.",".m.$.pl.$.inst.",0.99],
+		["o","ebhi",".n.",".m.$.pl.$.inst.",0.99],
+		["as","ehi",".n.",".m.$.pl.$.abl.",0.99],
+		["as","ebhi",".n.",".m.$.pl.$.abl.",0.99],
+		["o","ehi",".n.",".m.$.pl.$.abl.",0.99],
+		["o","ebhi",".n.",".m.$.pl.$.abl.",0.99],
+		["as","esu",".n.",".m.$.pl.$.loc.",0.99],
+		["o","esu",".n.",".m.$.pl.$.loc.",0.99],
+		["as","o",".n.",".nt.$.sg.$.nom.",0.99],
+		["as","aṃ",".n.",".nt.$.sg.$.nom.",0.99],
+		["o","o",".n.",".nt.$.sg.$.nom.",0.99],
+		["o","aṃ",".n.",".nt.$.sg.$.nom.",0.99],
+		["as","o",".n.",".nt.$.sg.$.voc.",0.3],
+		["as","aṃ",".n.",".nt.$.sg.$.voc.",0.3],
+		["as","ā",".n.",".nt.$.sg.$.voc.",0.3],
+		["as","a",".n.",".nt.$.sg.$.voc.",0.3],
+		["o","o",".n.",".nt.$.sg.$.voc.",0.3],
+		["o","aṃ",".n.",".nt.$.sg.$.voc.",0.3],
+		["o","ā",".n.",".nt.$.sg.$.voc.",0.3],
+		["o","a",".n.",".nt.$.sg.$.voc.",0.3],
+		["as","o",".n.",".nt.$.sg.$.acc.",0.99],
+		["as","aṃ",".n.",".nt.$.sg.$.acc.",0.99],
+		["o","o",".n.",".nt.$.sg.$.acc.",0.99],
+		["o","aṃ",".n.",".nt.$.sg.$.acc.",0.99],
+		["as","aso",".n.",".nt.$.sg.$.gen.",0.99],
+		["as","assa",".n.",".nt.$.sg.$.gen.",0.99],
+		["o","aso",".n.",".nt.$.sg.$.gen.",0.99],
+		["o","assa",".n.",".nt.$.sg.$.gen.",0.99],
+		["as","aso",".n.",".nt.$.sg.$.dat.",0.99],
+		["as","assa",".n.",".nt.$.sg.$.dat.",0.99],
+		["o","aso",".n.",".nt.$.sg.$.dat.",0.99],
+		["o","assa",".n.",".nt.$.sg.$.dat.",0.99],
+		["as","asā",".n.",".nt.$.sg.$.inst.",0.99],
+		["as","ena",".n.",".nt.$.sg.$.inst.",0.99],
+		["o","asā",".n.",".nt.$.sg.$.inst.",0.99],
+		["o","ena",".n.",".nt.$.sg.$.inst.",0.99],
+		["as","asā",".n.",".nt.$.sg.$.abl.",0.99],
+		["as","asmā",".n.",".nt.$.sg.$.abl.",0.99],
+		["as","amhā",".n.",".nt.$.sg.$.abl.",0.99],
+		["as","ā",".n.",".nt.$.sg.$.abl.",0.99],
+		["o","asā",".n.",".nt.$.sg.$.abl.",0.99],
+		["o","asmā",".n.",".nt.$.sg.$.abl.",0.99],
+		["o","amhā",".n.",".nt.$.sg.$.abl.",0.99],
+		["o","ā",".n.",".nt.$.sg.$.abl.",0.99],
+		["as","asi",".n.",".nt.$.sg.$.loc.",0.99],
+		["as","e",".n.",".nt.$.sg.$.loc.",0.99],
+		["as","asmiṃ",".n.",".nt.$.sg.$.loc.",0.99],
+		["as","amhi",".n.",".nt.$.sg.$.loc.",0.99],
+		["o","asi",".n.",".nt.$.sg.$.loc.",0.99],
+		["o","e",".n.",".nt.$.sg.$.loc.",0.99],
+		["o","asmiṃ",".n.",".nt.$.sg.$.loc.",0.99],
+		["o","amhi",".n.",".nt.$.sg.$.loc.",0.99],
+		["as","ā",".n.",".nt.$.pl.$.nom.",0.99],
+		["o","ā",".n.",".nt.$.pl.$.nom.",0.99],
+		["as","ā",".n.",".nt.$.pl.$.voc.",0.3],
+		["o","ā",".n.",".nt.$.pl.$.voc.",0.3],
+		["as","e",".n.",".nt.$.pl.$.acc.",0.99],
+		["o","e",".n.",".nt.$.pl.$.acc.",0.99],
+		["as","ānaṃ",".n.",".nt.$.pl.$.gen.",0.99],
+		["o","ānaṃ",".n.",".nt.$.pl.$.gen.",0.99],
+		["as","ānaṃ",".n.",".nt.$.pl.$.dat.",0.99],
+		["o","ānaṃ",".n.",".nt.$.pl.$.dat.",0.99],
+		["as","ehi",".n.",".nt.$.pl.$.inst.",0.99],
+		["as","ebhi",".n.",".nt.$.pl.$.inst.",0.99],
+		["o","ehi",".n.",".nt.$.pl.$.inst.",0.99],
+		["o","ebhi",".n.",".nt.$.pl.$.inst.",0.99],
+		["as","ehi",".n.",".nt.$.pl.$.abl.",0.99],
+		["as","ebhi",".n.",".nt.$.pl.$.abl.",0.99],
+		["o","ehi",".n.",".nt.$.pl.$.abl.",0.99],
+		["o","ebhi",".n.",".nt.$.pl.$.abl.",0.99],
+		["as","esu",".n.",".nt.$.pl.$.loc.",0.99],
+		["o","esu",".n.",".nt.$.pl.$.loc.",0.99],
+		["an","ā",".n.",".m.$.sg.$.nom.",0.99],
+		["an","ā",".n.",".m.$.sg.$.voc.",0.3],
+		["an","a",".n.",".m.$.sg.$.voc.",0.3],
+		["an","aṃ",".n.",".m.$.sg.$.acc.",0.99],
+		["an","ānaṃ",".n.",".m.$.sg.$.acc.",0.99],
+		["an","anaṃ",".n.",".m.$.sg.$.acc.",0.99],
+		["an","assa",".n.",".m.$.sg.$.gen.",0.99],
+		["an","ano",".n.",".m.$.sg.$.gen.",0.99],
+		["an","assa",".n.",".m.$.sg.$.dat.",0.99],
+		["an","ano",".n.",".m.$.sg.$.dat.",0.99],
+		["an","ena",".n.",".m.$.sg.$.inst.",0.99],
+		["an","anā",".n.",".m.$.sg.$.inst.",0.99],
+		["an","anā",".n.",".m.$.sg.$.abl.",0.99],
+		["an","asmā",".n.",".m.$.sg.$.abl.",0.99],
+		["an","amhā",".n.",".m.$.sg.$.abl.",0.99],
+		["an","ani",".n.",".m.$.sg.$.loc.",0.99],
+		["an","asmiṃ",".n.",".m.$.sg.$.loc.",0.99],
+		["an","amhi",".n.",".m.$.sg.$.loc.",0.99],
+		["an","ā",".n.",".m.$.pl.$.nom.",0.99],
+		["an","āno",".n.",".m.$.pl.$.nom.",0.99],
+		["an","ā",".n.",".m.$.pl.$.voc.",0.3],
+		["an","āno",".n.",".m.$.pl.$.voc.",0.3],
+		["an","āno",".n.",".m.$.pl.$.acc.",0.99],
+		["an","e",".n.",".m.$.pl.$.acc.",0.99],
+		["an","ānaṃ",".n.",".m.$.pl.$.gen.",0.99],
+		["an","ānaṃ",".n.",".m.$.pl.$.dat.",0.99],
+		["an","anehi",".n.",".m.$.pl.$.inst.",0.99],
+		["an","anebhi",".n.",".m.$.pl.$.inst.",0.99],
+		["an","anehi",".n.",".m.$.pl.$.abl.",0.99],
+		["an","anebhi",".n.",".m.$.pl.$.abl.",0.99],
+		["an","anesu",".n.",".m.$.pl.$.loc.",0.99],
+		["an","aṃ",".n.",".nt.$.sg.$.nom.",0.99],
+		["an","a",".n.",".nt.$.sg.$.voc.",0.3],
+		["an","aṃ",".n.",".nt.$.sg.$.acc.",0.99],
+		["an","assa",".n.",".nt.$.sg.$.gen.",0.99],
+		["an","assa",".n.",".nt.$.sg.$.dat.",0.99],
+		["an","āya",".n.",".nt.$.sg.$.dat.",0.99],
+		["an","ena",".n.",".nt.$.sg.$.inst.",0.99],
+		["an","ā",".n.",".nt.$.sg.$.abl.",0.99],
+		["an","asmā",".n.",".nt.$.sg.$.abl.",0.99],
+		["an","amhā",".n.",".nt.$.sg.$.abl.",0.99],
+		["an","ato",".n.",".nt.$.sg.$.abl.",0.99],
+		["an","e",".n.",".nt.$.sg.$.loc.",0.99],
+		["an","asmiṃ",".n.",".nt.$.sg.$.loc.",0.99],
+		["an","amhi",".n.",".nt.$.sg.$.loc.",0.99],
+		["an","āni",".n.",".nt.$.pl.$.nom.",0.99],
+		["an","ā",".n.",".nt.$.pl.$.nom.",0.99],
+		["an","āni",".n.",".nt.$.pl.$.voc.",0.3],
+		["an","ā",".n.",".nt.$.pl.$.voc.",0.3],
+		["an","āni",".n.",".nt.$.pl.$.acc.",0.99],
+		["an","e",".n.",".nt.$.pl.$.acc.",0.99],
+		["an","ānaṃ",".n.",".nt.$.pl.$.gen.",0.99],
+		["an","ānaṃ",".n.",".nt.$.pl.$.dat.",0.99],
+		["an","ehi",".n.",".nt.$.pl.$.inst.",0.99],
+		["an","ebhi",".n.",".nt.$.pl.$.inst.",0.99],
+		["an","ehi",".n.",".nt.$.pl.$.abl.",0.99],
+		["an","ebhi",".n.",".nt.$.pl.$.abl.",0.99],
+		["an","esu",".n.",".nt.$.pl.$.loc.",0.99],
+		["ar","ā",".n.",".f.$.sg.$.nom.",0.99],
+		["ar","ā",".n.",".f.$.sg.$.voc.",0.3],
+		["ar","aṃ",".n.",".f.$.sg.$.acc.",0.99],
+		["ar","ānaṃ",".n.",".f.$.sg.$.acc.",0.99],
+		["ar","assa",".n.",".f.$.sg.$.gen.",0.99],
+		["ar","ino",".n.",".f.$.sg.$.gen.",0.99],
+		["ar","assa",".n.",".f.$.sg.$.dat.",0.99],
+		["ar","ino",".n.",".f.$.sg.$.dat.",0.99],
+		["ar","ena",".n.",".f.$.sg.$.inst.",0.99],
+		["ar","inā",".n.",".f.$.sg.$.inst.",0.99],
+		["ar","asmā",".n.",".f.$.sg.$.abl.",0.99],
+		["ar","amhā",".n.",".f.$.sg.$.abl.",0.99],
+		["ar","ini",".n.",".f.$.sg.$.loc.",0.99],
+		["ar","asmiṃ",".n.",".f.$.sg.$.loc.",0.99],
+		["ar","amhi",".n.",".f.$.sg.$.loc.",0.99],
+		["ar","ā",".n.",".f.$.pl.$.nom.",0.99],
+		["ar","āno",".n.",".f.$.pl.$.nom.",0.99],
+		["ar","ā",".n.",".f.$.pl.$.voc.",0.3],
+		["ar","āno",".n.",".f.$.pl.$.voc.",0.3],
+		["ar","ā",".n.",".f.$.pl.$.acc.",0.99],
+		["ar","āno",".n.",".f.$.pl.$.acc.",0.99],
+		["ar","ānaṃ",".n.",".f.$.pl.$.gen.",0.99],
+		["ar","ānaṃ",".n.",".f.$.pl.$.dat.",0.99],
+		["ar","ehi",".n.",".f.$.pl.$.inst.",0.99],
+		["ar","āhi",".n.",".f.$.pl.$.inst.",0.99],
+		["ar","ehi",".n.",".f.$.pl.$.abl.",0.99],
+		["ar","āhi",".n.",".f.$.pl.$.abl.",0.99],
+		["ar","esu",".n.",".f.$.pl.$.loc.",0.99],
+		["ar","āsu",".n.",".f.$.pl.$.loc.",0.99],
+		["ar","ā",".n.",".nt.$.sg.$.nom.",0.99],
+		["ar","ā",".n.",".nt.$.sg.$.voc.",0.3],
+		["ar","aṃ",".n.",".nt.$.sg.$.acc.",0.99],
+		["ar","ānaṃ",".n.",".nt.$.sg.$.acc.",0.99],
+		["ar","assa",".n.",".nt.$.sg.$.gen.",0.99],
+		["ar","ino",".n.",".nt.$.sg.$.gen.",0.99],
+		["ar","assa",".n.",".nt.$.sg.$.dat.",0.99],
+		["ar","ino",".n.",".nt.$.sg.$.dat.",0.99],
+		["ar","ena",".n.",".nt.$.sg.$.inst.",0.99],
+		["ar","inā",".n.",".nt.$.sg.$.inst.",0.99],
+		["ar","asmā",".n.",".nt.$.sg.$.abl.",0.99],
+		["ar","amhā",".n.",".nt.$.sg.$.abl.",0.99],
+		["ar","ini",".n.",".nt.$.sg.$.loc.",0.99],
+		["ar","asmiṃ",".n.",".nt.$.sg.$.loc.",0.99],
+		["ar","amhi",".n.",".nt.$.sg.$.loc.",0.99],
+		["ar","ā",".n.",".nt.$.pl.$.nom.",0.99],
+		["ar","āno",".n.",".nt.$.pl.$.nom.",0.99],
+		["ar","ā",".n.",".nt.$.pl.$.voc.",0.3],
+		["ar","āno",".n.",".nt.$.pl.$.voc.",0.3],
+		["ar","ā",".n.",".nt.$.pl.$.acc.",0.99],
+		["ar","āno",".n.",".nt.$.pl.$.acc.",0.99],
+		["ar","ānaṃ",".n.",".nt.$.pl.$.gen.",0.99],
+		["ar","ānaṃ",".n.",".nt.$.pl.$.dat.",0.99],
+		["ar","ehi",".n.",".nt.$.pl.$.inst.",0.99],
+		["ar","āhi",".n.",".nt.$.pl.$.inst.",0.99],
+		["ar","ehi",".n.",".nt.$.pl.$.abl.",0.99],
+		["ar","āhi",".n.",".nt.$.pl.$.abl.",0.99],
+		["ar","esu",".n.",".nt.$.pl.$.loc.",0.99],
+		["ar","āsu",".n.",".nt.$.pl.$.loc.",0.99],
+		["a","e",".n.",".m.$.sg.$.nom.",0.99],
+		["a","ā",".n.",".m.$.sg.$.inst.",0.99],
+		["a","asā",".n.",".m.$.sg.$.inst.",0.99],
+		["a","ā",".n.",".m.$.sg.$.dat.",0.99],
+		["a","āya",".n.",".m.$.sg.$.gen.",0.99],
+		["a","ā",".n.",".m.$.sg.$.gen.",0.99],
+		["a","asi",".n.",".m.$.sg.$.loc.",0.99],
+		["a","e",".n.",".m.$.sg.$.voc.",0.3],
+		["a","āse",".n.",".m.$.pl.$.nom.",0.99],
+		["a","o",".n.",".m.$.pl.$.nom.",0.3],
+		["a","ān",".n.",".m.$.pl.$.acc.",0.99],
+		["a","e",".n.",".m.$.pl.$.inst.",0.99],
+		["a","ato",".n.",".m.$.pl.$.abl.",0.99],
+		["a","e",".n.",".nt.$.sg.$.nom.",0.99],
+		["a","ā",".n.",".nt.$.sg.$.inst.",0.99],
+		["a","asā",".n.",".nt.$.sg.$.inst.",0.99],
+		["a","ā",".n.",".nt.$.sg.$.dat.",0.99],
+		["a","asi",".n.",".nt.$.sg.$.loc.",0.99],
+		["a","ā",".n.",".nt.$.sg.$.voc.",0.3],
+		["a","aṃ",".n.",".nt.$.sg.$.voc.",0.3],
+		["a","āya",".n.",".nt.$.sg.$.gen.",0.99],
+		["a","ā",".n.",".nt.$.sg.$.gen.",0.99],
+		["a","o",".n.",".nt.$.pl.$.acc.",0.99],
+		["a","ato",".n.",".nt.$.pl.$.abl.",0.99],
+		["ā","ā",".n.",".f.$.sg.$.inst.",0.99],
+		["ā","āto",".n.",".f.$.sg.$.abl.",0.99],
+		["ā","a",".n.",".f.$.sg.$.voc.",0.3],
+		["ā","iyo",".n.",".f.$.pl.$.voc.",0.3],
+		["i","e",".n.",".m.$.sg.$.dat.",0.99],
+		["i","ito",".n.",".m.$.sg.$.abl.",0.99],
+		["i","e",".n.",".m.$.sg.$.gen.",0.99],
+		["i","ini",".n.",".m.$.sg.$.loc.",0.99],
+		["i","e",".n.",".m.$.sg.$.loc.",0.99],
+		["i","iyo",".n.",".m.$.pl.$.nom.",0.99],
+		["i","ino",".n.",".m.$.pl.$.nom.",0.99],
+		["i","iyo",".n.",".m.$.pl.$.acc.",0.99],
+		["i","ihi",".n.",".m.$.pl.$.inst.",0.99],
+		["i","ibhi",".n.",".m.$.pl.$.inst.",0.99],
+		["i","inaṃ",".n.",".m.$.pl.$.dat.",0.99],
+		["i","ihi",".n.",".m.$.pl.$.abl.",0.99],
+		["i","ibhi",".n.",".m.$.pl.$.abl.",0.99],
+		["i","inaṃ",".n.",".m.$.pl.$.gen.",0.99],
+		["i","isu",".n.",".m.$.pl.$.loc.",0.99],
+		["i","iyo",".n.",".m.$.pl.$.voc.",0.3],
+		["i","ihi",".n.",".nt.$.pl.$.inst.",0.99],
+		["i","ibhi",".n.",".nt.$.pl.$.inst.",0.99],
+		["i","ihi",".n.",".nt.$.pl.$.abl.",0.99],
+		["i","ibhi",".n.",".nt.$.pl.$.abl.",0.99],
+		["i","inaṃ",".n.",".nt.$.pl.$.gen.",0.99],
+		["i","inaṃ",".n.",".nt.$.pl.$.dat.",0.99],
+		["i","isu",".n.",".nt.$.pl.$.loc.",0.99],
+		["i","iṃ",".n.",".nt.$.sg.$.nom.",0.99],
+		["i","i",".n.",".nt.$.sg.$.acc.",0.99],
+		["i","e",".n.",".nt.$.sg.$.dat.",0.99],
+		["i","ito",".n.",".nt.$.sg.$.abl.",0.99],
+		["i","e",".n.",".nt.$.sg.$.gen.",0.99],
+		["i","ini",".n.",".nt.$.sg.$.loc.",0.99],
+		["i","e",".n.",".nt.$.sg.$.loc.",0.99],
+		["i","iṃ",".n.",".nt.$.sg.$.voc.",0.3],
+		["i","ī",".n.",".f.$.sg.$.nom.",0.99],
+		["i","ito",".n.",".f.$.sg.$.abl.",0.99],
+		["i","myā",".n.",".f.$.sg.$.gen.",0.99],
+		["i","āyaṃ",".n.",".f.$.sg.$.loc.",0.99],
+		["i","u",".n.",".f.$.sg.$.loc.",0.99],
+		["i","ī",".n.",".f.$.sg.$.voc.",0.3],
+		["ī","ini",".n.",".m.$.sg.$.loc.",0.99],
+		["ī","īnaṃ",".n.",".m.$.pl.$.gen.",0.99],
+		["ī","īnaṃ",".n.",".m.$.pl.$.dat.",0.99],
+		["ī","īsu",".n.",".m.$.pl.$.loc.",0.99],
+		["ī","i",".n.",".m.$.sg.$.nom.",0.99],
+		["ī","iyo",".n.",".m.$.pl.$.nom.",0.99],
+		["ī","iye",".n.",".m.$.pl.$.acc.",0.99],
+		["ī","iyaṃ",".n.",".m.$.sg.$.acc.",0.99],
+		["ī","ito",".n.",".m.$.sg.$.abl.",0.99],
+		["ī","i",".n.",".f.$.sg.$.nom.",0.99],
+		["ī","iyaṃ",".n.",".f.$.sg.$.acc.",0.99],
+		["ī","ito",".n.",".f.$.sg.$.abl.",0.99],
+		["ī","īto",".n.",".f.$.sg.$.abl.",0.99],
+		["ī","āyo",".n.",".f.$.pl.$.nom.",0.99],
+		["ī","āyo",".n.",".f.$.pl.$.nom.",0.99],
+		["ī","āyo",".n.",".f.$.pl.$.nom.",0.99],
+		["ī","inaṃ",".n.",".f.$.pl.$.gen.",0.99],
+		["ī","inaṃ",".n.",".f.$.pl.$.dat.",0.99],
+		["ī","īyanaṃ",".n.",".f.$.pl.$.gen.",0.99],
+		["ī","īyanaṃ",".n.",".f.$.pl.$.dat.",0.99],
+		["ī","iyanaṃ",".n.",".f.$.pl.$.gen.",0.99],
+		["ī","iyanaṃ",".n.",".f.$.pl.$.dat.",0.99],
+		["ī","isu",".n.",".f.$.pl.$.loc.",0.99],
+		["ar","ā",".n.",".m.$.sg.$.nom.",0.99],
+		["ar","ā",".n.",".m.$.sg.$.voc.",0.3],
+		["ar","a",".n.",".m.$.sg.$.voc.",0.3],
+		["ar","araṃ",".n.",".m.$.sg.$.acc.",0.99],
+		["ar","āraṃ",".n.",".m.$.sg.$.acc.",0.99],
+		["ar","u",".n.",".m.$.sg.$.dat.",0.99],
+		["ar","ussa",".n.",".m.$.sg.$.dat.",0.99],
+		["ar","uno",".n.",".m.$.sg.$.dat.",0.99],
+		["ar","u",".n.",".m.$.sg.$.gen.",0.99],
+		["ar","ussa",".n.",".m.$.sg.$.gen.",0.99],
+		["ar","uno",".n.",".m.$.sg.$.gen.",0.99],
+		["ar","arā",".n.",".m.$.sg.$.inst.",0.99],
+		["ar","ara",".n.",".m.$.sg.$.inst.",0.99],
+		["ar","āra",".n.",".m.$.sg.$.inst.",0.99],
+		["ar","ārā",".n.",".m.$.sg.$.inst.",0.99],
+		["ar","unā",".n.",".m.$.sg.$.inst.",0.99],
+		["ar","arā",".n.",".m.$.sg.$.abl.",0.99],
+		["ar","ara",".n.",".m.$.sg.$.abl.",0.99],
+		["ar","āra",".n.",".m.$.sg.$.abl.",0.99],
+		["ar","ārā",".n.",".m.$.sg.$.abl.",0.99],
+		["ar","unā",".n.",".m.$.sg.$.abl.",0.99],
+		["ar","ari",".n.",".m.$.sg.$.loc.",0.99],
+		["ar","āro",".n.",".m.$.pl.$.nom.",0.99],
+		["ar","ā",".n.",".m.$.pl.$.nom.",0.99],
+		["ar","āro",".n.",".m.$.pl.$.voc.",0.3],
+		["ar","ā",".n.",".m.$.pl.$.voc.",0.3],
+		["ar","āro",".n.",".m.$.pl.$.acc.",0.99],
+		["ar","āre",".n.",".m.$.pl.$.acc.",0.99],
+		["ar","ānaṃ",".n.",".m.$.pl.$.dat.",0.99],
+		["ar","ārānaṃ",".n.",".m.$.pl.$.dat.",0.99],
+		["ar","ūnaṃ",".n.",".m.$.pl.$.dat.",0.99],
+		["ar","ānaṃ",".n.",".m.$.pl.$.gen.",0.99],
+		["ar","ārānaṃ",".n.",".m.$.pl.$.gen.",0.99],
+		["ar","ūnaṃ",".n.",".m.$.pl.$.gen.",0.99],
+		["ar","ārehi",".n.",".m.$.pl.$.inst.",0.99],
+		["ar","ārebhi",".n.",".m.$.pl.$.inst.",0.99],
+		["ar","ārehi",".n.",".m.$.pl.$.abl.",0.99],
+		["ar","ārebhi",".n.",".m.$.pl.$.abl.",0.99],
+		["ar","āresu",".n.",".m.$.pl.$.loc.",0.99],
+		["ar","ūsu",".n.",".m.$.pl.$.loc.",0.99],
+		["ar","āyo",".n.",".m.$.sg.$.voc.",0.3],
+		["ar","iyo",".n.",".m.$.sg.$.voc.",0.3],
+		["an","ane",".n.",".m.$.sg.$.loc.",0.99],
+		["an","ā",".n.",".m.$.pl.$.voc.",0.3],
+		["an","ubhi",".n.",".m.$.pl.$.inst.",0.99],
+		["an","ūbhi",".n.",".m.$.pl.$.inst.",0.99],
+		["an","uhi",".n.",".m.$.pl.$.inst.",0.99],
+		["an","ūhi",".n.",".m.$.pl.$.inst.",0.99],
+		["an","ūnaṃ",".n.",".m.$.pl.$.gen.",0.99],
+		["an","ūnaṃ",".n.",".m.$.pl.$.gen.",0.99],
+		["an","esu",".n.",".m.$.pl.$.loc.",0.99],
+		["an","ūsu",".n.",".m.$.pl.$.loc.",0.99],
+		["an","usu",".n.",".m.$.pl.$.loc.",0.99],
+		["an","a",".n.",".nt.$.sg.$.nom.",0.99],
+		["an","a",".n.",".nt.$.sg.$.acc.",0.99],
+		["an","anā",".n.",".nt.$.sg.$.inst.",0.99],
+		["an","unā",".n.",".nt.$.sg.$.inst.",0.99],
+		["an","no",".n.",".nt.$.sg.$.dat.",0.99],
+		["an","unā",".n.",".nt.$.sg.$.abl.",0.99],
+		["an","no",".n.",".nt.$.sg.$.dat.",0.99],
+		["an","ani",".n.",".nt.$.sg.$.loc.",0.99],
+		["an","ā",".n.",".nt.$.pl.$.voc.",0.3],
+		["as","āni",".n.",".m.$.pl.$.nom.",0.99],
+		["as","ā",".n.",".m.$.pl.$.acc.",0.99],
+		["as","āni",".n.",".m.$.pl.$.acc.",0.99],
+		["as","āni",".n.",".m.$.pl.$.voc.",0.3],
+		["as","āni",".n.",".m.$.pl.$.nom.",0.99],
+		["as","ā",".n.",".m.$.pl.$.acc.",0.99],
+		["as","āni",".n.",".m.$.pl.$.acc.",0.99],
+		["as","āni",".n.",".m.$.pl.$.voc.",0.3],
+		["as","āni",".n.",".m.$.pl.$.nom.",0.99],
+		["as","ā",".n.",".m.$.pl.$.acc.",0.99],
+		["as","āni",".n.",".m.$.pl.$.acc.",0.99],
+		["as","āni",".n.",".m.$.pl.$.voc.",0.3],
+		["us","u",".n.",".m.$.sg.$.nom.",0.99],
+		["us","uṃ",".n.",".m.$.sg.$.nom.",0.99],
+		["us","u",".n.",".m.$.sg.$.voc.",0.3],
+		["us","uṃ",".n.",".m.$.sg.$.voc.",0.3],
+		["us","u",".n.",".m.$.sg.$.acc.",0.99],
+		["us","uṃ",".n.",".m.$.sg.$.acc.",0.99],
+		["us","ussa",".n.",".m.$.sg.$.dat.",0.99],
+		["us","uno",".n.",".m.$.sg.$.dat.",0.99],
+		["us","ussa",".n.",".m.$.sg.$.gen.",0.99],
+		["us","uno",".n.",".m.$.sg.$.gen.",0.99],
+		["us","unā",".n.",".m.$.sg.$.inst.",0.99],
+		["us","usā",".n.",".m.$.sg.$.inst.",0.99],
+		["us","unā",".n.",".m.$.sg.$.abl.",0.99],
+		["us","usā",".n.",".m.$.sg.$.abl.",0.99],
+		["us","uni",".n.",".m.$.sg.$.loc.",0.99],
+		["us","usi",".n.",".m.$.sg.$.loc.",0.99],
+		["us","ū",".n.",".m.$.pl.$.nom.",0.99],
+		["us","ūni",".n.",".m.$.pl.$.nom.",0.99],
+		["us","ū",".n.",".m.$.pl.$.voc.",0.3],
+		["us","ūni",".n.",".m.$.pl.$.voc.",0.3],
+		["us","ū",".n.",".m.$.pl.$.acc.",0.99],
+		["us","ūni",".n.",".m.$.pl.$.acc.",0.99],
+		["us","ūnaṃ",".n.",".m.$.pl.$.dat.",0.99],
+		["us","ūsaṃ",".n.",".m.$.pl.$.dat.",0.99],
+		["us","ūnaṃ",".n.",".m.$.pl.$.gen.",0.99],
+		["us","ūsaṃ",".n.",".m.$.pl.$.gen.",0.99],
+		["us","ūhi",".n.",".m.$.pl.$.inst.",0.99],
+		["us","ūbhi",".n.",".m.$.pl.$.inst.",0.99],
+		["us","ūhi",".n.",".m.$.pl.$.abl.",0.99],
+		["us","ūbhi",".n.",".m.$.pl.$.abl.",0.99],
+		["us","ūsu",".n.",".m.$.pl.$.loc.",0.99],
+		["a","assā",".n.",".m.$.sg.$.gen.",0.99],
+		["a","assā",".n.",".m.$.sg.$.dat.",0.99],
+		["a","enā",".n.",".m.$.sg.$.inst.",0.99],
+		["a","amhī",".n.",".m.$.sg.$.loc.",0.99],
+		["a","ehī",".n.",".m.$.pl.$.inst.",0.99],
+		["a","ebhī",".n.",".m.$.pl.$.inst.",0.99],
+		["a","ehī",".n.",".m.$.pl.$.abl.",0.99],
+		["a","ebhī",".n.",".m.$.pl.$.abl.",0.99],
+		["a","esū",".n.",".m.$.pl.$.loc.",0.99],
+		["a","assā",".n.",".nt.$.sg.$.gen.",0.99],
+		["a","assā",".n.",".nt.$.sg.$.dat.",0.99],
+		["a","enā",".n.",".nt.$.sg.$.inst.",0.99],
+		["a","amhī",".n.",".nt.$.sg.$.loc.",0.99],
+		["a","ānī",".n.",".nt.$.pl.$.nom.",0.99],
+		["a","ānī",".n.",".nt.$.pl.$.voc.",0.3],
+		["a","ānī",".n.",".nt.$.pl.$.acc.",0.99],
+		["a","ehī",".n.",".nt.$.pl.$.inst.",0.99],
+		["a","ebhī",".n.",".nt.$.pl.$.inst.",0.99],
+		["a","ehī",".n.",".nt.$.pl.$.abl.",0.99],
+		["a","ebhī",".n.",".nt.$.pl.$.abl.",0.99],
+		["a","esū",".n.",".nt.$.pl.$.loc.",0.99],
+		["ā","āhī",".n.",".f.$.pl.$.inst.",0.99],
+		["ā","ābhī",".n.",".f.$.pl.$.inst.",0.99],
+		["ā","āhī",".n.",".f.$.pl.$.abl.",0.99],
+		["ā","ābhī",".n.",".f.$.pl.$.abl.",0.99],
+		["ā","āsū",".n.",".f.$.pl.$.loc.",0.99],
+		["i","issā",".n.",".m.$.sg.$.gen.",0.99],
+		["i","issā",".n.",".m.$.sg.$.dat.",0.99],
+		["i","imhī",".n.",".m.$.sg.$.loc.",0.99],
+		["i","īhī",".n.",".m.$.pl.$.inst.",0.99],
+		["i","ībhī",".n.",".m.$.pl.$.inst.",0.99],
+		["i","īhī",".n.",".m.$.pl.$.abl.",0.99],
+		["i","ībhī",".n.",".m.$.pl.$.abl.",0.99],
+		["i","īsū",".n.",".m.$.pl.$.loc.",0.99],
+		["i","assā",".n.",".nt.$.sg.$.gen.",0.99],
+		["i","assā",".n.",".nt.$.sg.$.dat.",0.99],
+		["i","imhī",".n.",".nt.$.sg.$.loc.",0.99],
+		["i","īnī",".n.",".nt.$.pl.$.nom.",0.99],
+		["i","īnī",".n.",".nt.$.pl.$.voc.",0.3],
+		["i","īnī",".n.",".nt.$.pl.$.acc.",0.99],
+		["i","īhī",".n.",".nt.$.pl.$.inst.",0.99],
+		["i","ībhī",".n.",".nt.$.pl.$.inst.",0.99],
+		["i","īhī",".n.",".nt.$.pl.$.abl.",0.99],
+		["i","ībhī",".n.",".nt.$.pl.$.abl.",0.99],
+		["i","īsū",".n.",".nt.$.pl.$.loc.",0.99],
+		["i","īhī",".n.",".f.$.pl.$.inst.",0.99],
+		["i","ībhī",".n.",".f.$.pl.$.inst.",0.99],
+		["i","īhī",".n.",".f.$.pl.$.abl.",0.99],
+		["i","ībhī",".n.",".f.$.pl.$.abl.",0.99],
+		["i","īsū",".n.",".f.$.pl.$.loc.",0.99],
+		["ī","issā",".n.",".m.$.sg.$.gen.",0.99],
+		["in","issā",".n.",".m.$.sg.$.gen.",0.99],
+		["ī","issā",".n.",".m.$.sg.$.dat.",0.99],
+		["in","issā",".n.",".m.$.sg.$.dat.",0.99],
+		["ī","imhī",".n.",".m.$.sg.$.loc.",0.99],
+		["in","imhī",".n.",".m.$.sg.$.loc.",0.99],
+		["ī","īhī",".n.",".m.$.pl.$.inst.",0.99],
+		["ī","ībhī",".n.",".m.$.pl.$.inst.",0.99],
+		["in","īhī",".n.",".m.$.pl.$.inst.",0.99],
+		["in","ībhī",".n.",".m.$.pl.$.inst.",0.99],
+		["ī","īhī",".n.",".m.$.pl.$.abl.",0.99],
+		["ī","ībhī",".n.",".m.$.pl.$.abl.",0.99],
+		["in","īhī",".n.",".m.$.pl.$.abl.",0.99],
+		["in","ībhī",".n.",".m.$.pl.$.abl.",0.99],
+		["ī","īsū",".n.",".m.$.pl.$.loc.",0.99],
+		["in","īsū",".n.",".m.$.pl.$.loc.",0.99],
+		["ī","īhī",".n.",".f.$.pl.$.inst.",0.99],
+		["ī","ībhī",".n.",".f.$.pl.$.inst.",0.99],
+		["ī","īhī",".n.",".f.$.pl.$.abl.",0.99],
+		["ī","ībhī",".n.",".f.$.pl.$.abl.",0.99],
+		["ī","īsū",".n.",".f.$.pl.$.loc.",0.99],
+		["u","ussā",".n.",".m.$.sg.$.gen.",0.99],
+		["u","ussā",".n.",".m.$.sg.$.dat.",0.99],
+		["u","umhī",".n.",".m.$.sg.$.loc.",0.99],
+		["u","ūhī",".n.",".m.$.pl.$.inst.",0.99],
+		["u","ūbhī",".n.",".m.$.pl.$.inst.",0.99],
+		["u","ūhī",".n.",".m.$.pl.$.abl.",0.99],
+		["u","ūbhī",".n.",".m.$.pl.$.abl.",0.99],
+		["u","ūsū",".n.",".m.$.pl.$.loc.",0.99],
+		["u","ussā",".n.",".nt.$.sg.$.gen.",0.99],
+		["u","ussā",".n.",".nt.$.sg.$.dat.",0.99],
+		["u","umhī",".n.",".nt.$.sg.$.loc.",0.99],
+		["u","ūnī",".n.",".nt.$.pl.$.nom.",0.99],
+		["u","ūnī",".n.",".nt.$.pl.$.voc.",0.3],
+		["u","ūnī",".n.",".nt.$.pl.$.acc.",0.99],
+		["u","ūhī",".n.",".nt.$.pl.$.inst.",0.99],
+		["u","ūbhī",".n.",".nt.$.pl.$.inst.",0.99],
+		["u","ūhī",".n.",".nt.$.pl.$.abl.",0.99],
+		["u","ūbhī",".n.",".nt.$.pl.$.abl.",0.99],
+		["u","ūsū",".n.",".nt.$.pl.$.loc.",0.99],
+		["u","ūhī",".n.",".f.$.pl.$.inst.",0.99],
+		["u","ūbhī",".n.",".f.$.pl.$.inst.",0.99],
+		["u","ūhī",".n.",".f.$.pl.$.abl.",0.99],
+		["u","ūbhī",".n.",".f.$.pl.$.abl.",0.99],
+		["u","ūsū",".n.",".f.$.pl.$.loc.",0.99],
+		["ū","ussā",".n.",".m.$.sg.$.gen.",0.99],
+		["ū","ussā",".n.",".m.$.sg.$.dat.",0.99],
+		["ū","umhī",".n.",".m.$.sg.$.loc.",0.99],
+		["ū","ūhī",".n.",".m.$.pl.$.inst.",0.99],
+		["ū","ūbhī",".n.",".m.$.pl.$.inst.",0.99],
+		["ū","ūhī",".n.",".m.$.pl.$.abl.",0.99],
+		["ū","ūbhī",".n.",".m.$.pl.$.abl.",0.99],
+		["ū","ūsū",".n.",".m.$.pl.$.loc.",0.99],
+		["ū","ūhī",".n.",".f.$.pl.$.inst.",0.99],
+		["ū","ūbhī",".n.",".f.$.pl.$.inst.",0.99],
+		["ū","ūhī",".n.",".f.$.pl.$.abl.",0.99],
+		["ū","ūbhī",".n.",".f.$.pl.$.abl.",0.99],
+		["ū","ūsū",".n.",".f.$.pl.$.loc.",0.99],
+		["as","assā",".n.",".m.$.sg.$.gen.",0.99],
+		["o","assā",".n.",".m.$.sg.$.gen.",0.99],
+		["as","assā",".n.",".m.$.sg.$.dat.",0.99],
+		["o","assā",".n.",".m.$.sg.$.dat.",0.99],
+		["as","enā",".n.",".m.$.sg.$.inst.",0.99],
+		["o","enā",".n.",".m.$.sg.$.inst.",0.99],
+		["as","asī",".n.",".m.$.sg.$.loc.",0.99],
+		["as","amhī",".n.",".m.$.sg.$.loc.",0.99],
+		["o","asī",".n.",".m.$.sg.$.loc.",0.99],
+		["o","amhī",".n.",".m.$.sg.$.loc.",0.99],
+		["as","ehī",".n.",".m.$.pl.$.inst.",0.99],
+		["as","ebhī",".n.",".m.$.pl.$.inst.",0.99],
+		["o","ehī",".n.",".m.$.pl.$.inst.",0.99],
+		["o","ebhī",".n.",".m.$.pl.$.inst.",0.99],
+		["as","ehī",".n.",".m.$.pl.$.abl.",0.99],
+		["as","ebhī",".n.",".m.$.pl.$.abl.",0.99],
+		["o","ehī",".n.",".m.$.pl.$.abl.",0.99],
+		["o","ebhī",".n.",".m.$.pl.$.abl.",0.99],
+		["as","esū",".n.",".m.$.pl.$.loc.",0.99],
+		["o","esū",".n.",".m.$.pl.$.loc.",0.99],
+		["as","assā",".n.",".nt.$.sg.$.gen.",0.99],
+		["o","assā",".n.",".nt.$.sg.$.gen.",0.99],
+		["as","assā",".n.",".nt.$.sg.$.dat.",0.99],
+		["o","assā",".n.",".nt.$.sg.$.dat.",0.99],
+		["as","enā",".n.",".nt.$.sg.$.inst.",0.99],
+		["o","enā",".n.",".nt.$.sg.$.inst.",0.99],
+		["as","asī",".n.",".nt.$.sg.$.loc.",0.99],
+		["as","amhī",".n.",".nt.$.sg.$.loc.",0.99],
+		["o","asī",".n.",".nt.$.sg.$.loc.",0.99],
+		["o","amhī",".n.",".nt.$.sg.$.loc.",0.99],
+		["as","ehī",".n.",".nt.$.pl.$.inst.",0.99],
+		["as","ebhī",".n.",".nt.$.pl.$.inst.",0.99],
+		["o","ehī",".n.",".nt.$.pl.$.inst.",0.99],
+		["o","ebhī",".n.",".nt.$.pl.$.inst.",0.99],
+		["as","ehī",".n.",".nt.$.pl.$.abl.",0.99],
+		["as","ebhī",".n.",".nt.$.pl.$.abl.",0.99],
+		["o","ehī",".n.",".nt.$.pl.$.abl.",0.99],
+		["o","ebhī",".n.",".nt.$.pl.$.abl.",0.99],
+		["as","esū",".n.",".nt.$.pl.$.loc.",0.99],
+		["o","esū",".n.",".nt.$.pl.$.loc.",0.99],
+		["an","assā",".n.",".m.$.sg.$.gen.",0.99],
+		["an","assā",".n.",".m.$.sg.$.dat.",0.99],
+		["an","enā",".n.",".m.$.sg.$.inst.",0.99],
+		["an","anī",".n.",".m.$.sg.$.loc.",0.99],
+		["an","amhī",".n.",".m.$.sg.$.loc.",0.99],
+		["an","anehī",".n.",".m.$.pl.$.inst.",0.99],
+		["an","anebhī",".n.",".m.$.pl.$.inst.",0.99],
+		["an","anehī",".n.",".m.$.pl.$.abl.",0.99],
+		["an","anebhī",".n.",".m.$.pl.$.abl.",0.99],
+		["an","anesū",".n.",".m.$.pl.$.loc.",0.99],
+		["an","assā",".n.",".nt.$.sg.$.gen.",0.99],
+		["an","assā",".n.",".nt.$.sg.$.dat.",0.99],
+		["an","enā",".n.",".nt.$.sg.$.inst.",0.99],
+		["an","amhī",".n.",".nt.$.sg.$.loc.",0.99],
+		["an","ānī",".n.",".nt.$.pl.$.nom.",0.99],
+		["an","ānī",".n.",".nt.$.pl.$.voc.",0.3],
+		["an","ānī",".n.",".nt.$.pl.$.acc.",0.99],
+		["an","ehī",".n.",".nt.$.pl.$.inst.",0.99],
+		["an","ebhī",".n.",".nt.$.pl.$.inst.",0.99],
+		["an","ehī",".n.",".nt.$.pl.$.abl.",0.99],
+		["an","ebhī",".n.",".nt.$.pl.$.abl.",0.99],
+		["an","esū",".n.",".nt.$.pl.$.loc.",0.99],
+		["ar","assā",".n.",".f.$.sg.$.gen.",0.99],
+		["ar","assā",".n.",".f.$.sg.$.dat.",0.99],
+		["ar","enā",".n.",".f.$.sg.$.inst.",0.99],
+		["ar","amhī",".n.",".f.$.sg.$.loc.",0.99],
+		["ar","ehī",".n.",".f.$.pl.$.inst.",0.99],
+		["ar","āhī",".n.",".f.$.pl.$.inst.",0.99],
+		["ar","ehī",".n.",".f.$.pl.$.abl.",0.99],
+		["ar","āhī",".n.",".f.$.pl.$.abl.",0.99],
+		["ar","esū",".n.",".f.$.pl.$.loc.",0.99],
+		["ar","āsū",".n.",".f.$.pl.$.loc.",0.99],
+		["ar","assā",".n.",".nt.$.sg.$.gen.",0.99],
+		["ar","assā",".n.",".nt.$.sg.$.dat.",0.99],
+		["ar","enā",".n.",".nt.$.sg.$.inst.",0.99],
+		["ar","amhī",".n.",".nt.$.sg.$.loc.",0.99],
+		["ar","ehī",".n.",".nt.$.pl.$.inst.",0.99],
+		["ar","āhī",".n.",".nt.$.pl.$.inst.",0.99],
+		["ar","ehī",".n.",".nt.$.pl.$.abl.",0.99],
+		["ar","āhī",".n.",".nt.$.pl.$.abl.",0.99],
+		["ar","esū",".n.",".nt.$.pl.$.loc.",0.99],
+		["ar","āsū",".n.",".nt.$.pl.$.loc.",0.99],
+		["a","asī",".n.",".m.$.sg.$.loc.",0.99],
+		["a","asī",".n.",".nt.$.sg.$.loc.",0.99],
+		["i","ihī",".n.",".m.$.pl.$.inst.",0.99],
+		["i","ibhī",".n.",".m.$.pl.$.inst.",0.99],
+		["i","ihī",".n.",".m.$.pl.$.abl.",0.99],
+		["i","ibhī",".n.",".m.$.pl.$.abl.",0.99],
+		["i","isū",".n.",".m.$.pl.$.loc.",0.99],
+		["i","ihī",".n.",".nt.$.pl.$.inst.",0.99],
+		["i","ibhī",".n.",".nt.$.pl.$.inst.",0.99],
+		["i","ihī",".n.",".nt.$.pl.$.abl.",0.99],
+		["i","ibhī",".n.",".nt.$.pl.$.abl.",0.99],
+		["i","isū",".n.",".nt.$.pl.$.loc.",0.99],
+		["ī","īsū",".n.",".m.$.pl.$.loc.",0.99],
+		["ī","isū",".n.",".f.$.pl.$.loc.",0.99],
+		["ar","ussā",".n.",".m.$.sg.$.dat.",0.99],
+		["ar","ussā",".n.",".m.$.sg.$.gen.",0.99],
+		["ar","arī",".n.",".m.$.sg.$.loc.",0.99],
+		["ar","ārehī",".n.",".m.$.pl.$.inst.",0.99],
+		["ar","ārebhī",".n.",".m.$.pl.$.inst.",0.99],
+		["ar","ārehī",".n.",".m.$.pl.$.abl.",0.99],
+		["ar","ārebhī",".n.",".m.$.pl.$.abl.",0.99],
+		["ar","āresū",".n.",".m.$.pl.$.loc.",0.99],
+		["ar","ūsū",".n.",".m.$.pl.$.loc.",0.99],
+		["an","ubhī",".n.",".m.$.pl.$.inst.",0.99],
+		["an","ūbhī",".n.",".m.$.pl.$.inst.",0.99],
+		["an","uhī",".n.",".m.$.pl.$.inst.",0.99],
+		["an","ūhī",".n.",".m.$.pl.$.inst.",0.99],
+		["an","esū",".n.",".m.$.pl.$.loc.",0.99],
+		["an","ūsū",".n.",".m.$.pl.$.loc.",0.99],
+		["an","usū",".n.",".m.$.pl.$.loc.",0.99],
+		["an","anī",".n.",".nt.$.sg.$.loc.",0.99],
+		["as","ānī",".n.",".m.$.pl.$.nom.",0.99],
+		["as","ānī",".n.",".m.$.pl.$.acc.",0.99],
+		["as","ānī",".n.",".m.$.pl.$.voc.",0.3],
+		["as","ānī",".n.",".m.$.pl.$.nom.",0.99],
+		["as","ānī",".n.",".m.$.pl.$.acc.",0.99],
+		["as","ānī",".n.",".m.$.pl.$.voc.",0.3],
+		["as","ānī",".n.",".m.$.pl.$.nom.",0.99],
+		["as","ānī",".n.",".m.$.pl.$.acc.",0.99],
+		["as","ānī",".n.",".m.$.pl.$.voc.",0.3],
+		["us","ussā",".n.",".m.$.sg.$.dat.",0.99],
+		["us","ussā",".n.",".m.$.sg.$.gen.",0.99],
+		["us","unī",".n.",".m.$.sg.$.loc.",0.99],
+		["us","usī",".n.",".m.$.sg.$.loc.",0.99],
+		["us","ūnī",".n.",".m.$.pl.$.nom.",0.99],
+		["us","ūnī",".n.",".m.$.pl.$.voc.",0.3],
+		["us","ūnī",".n.",".m.$.pl.$.acc.",0.99],
+		["us","ūhī",".n.",".m.$.pl.$.inst.",0.99],
+		["us","ūbhī",".n.",".m.$.pl.$.inst.",0.99],
+		["us","ūhī",".n.",".m.$.pl.$.abl.",0.99],
+		["us","ūbhī",".n.",".m.$.pl.$.abl.",0.99],
+		["us","ūsū",".n.",".m.$.pl.$.loc.",0.99],
+		["ant","ā",".n.",".m.$.pl.$.nom.",0.99],
+		["ant","ā",".n.",".m.$.pl.$.voc.",0.3],
+		["ant","ā",".n.",".m.$.sg.$.nom.",0.99],
+		["ant","a",".n.",".m.$.sg.$.voc.",0.3],
+		["ant","ā",".n.",".m.$.sg.$.voc.",0.3],
+		["ant","ā",".n.",".nt.$.pl.$.nom.",0.99],
+		["ant","ā",".n.",".nt.$.pl.$.voc.",0.3],
+		["ant","a",".n.",".nt.$.sg.$.voc.",0.3],
+		["ant","ā",".n.",".nt.$.sg.$.voc.",0.3],
+		["ant","ā",".n.",".m.$.sg.$.voc.",0.3],
+		["ant","ā",".n.",".nt.$.sg.$.voc.",0.3],
+		["ant","aṃ",".n.",".m.$.sg.$.acc.",0.99],
+		["ant","aṃ",".n.",".nt.$.sg.$.acc.",0.99],
+		["ant","aṃ",".n.",".nt.$.sg.$.nom.",0.99],
+		["ant","aṃ",".n.",".m.$.sg.$.nom.",0.99],
+		["ant","aṃ",".n.",".m.$.sg.$.voc.",0.3],
+		["ant","aṃ",".n.",".nt.$.sg.$.voc.",0.3],
+		["ant","aṃ",".n.",".m.$.sg.$.voc.",0.3],
+		["ant","aṃ",".n.",".nt.$.sg.$.voc.",0.3],
+		["ant","ānaṃ",".n.",".m.$.pl.$.dat.",0.99],
+		["ant","ānaṃ",".n.",".m.$.pl.$.gen.",0.99],
+		["ant","e",".n.",".m.$.pl.$.acc.",0.99],
+		["ant","ebhi",".n.",".m.$.pl.$.abl.",0.99],
+		["ant","ebhi",".n.",".m.$.pl.$.inst.",0.99],
+		["ant","ehi",".n.",".m.$.pl.$.abl.",0.99],
+		["ant","ehi",".n.",".m.$.pl.$.inst.",0.99],
+		["ant","esu",".n.",".m.$.pl.$.loc.",0.99],
+		["anta","ā",".n.",".m.$.pl.$.nom.",0.99],
+		["anta","ā",".n.",".m.$.pl.$.voc.",0.3],
+		["anta","ā",".n.",".m.$.sg.$.nom.",0.99],
+		["anta","a",".n.",".m.$.sg.$.voc.",0.3],
+		["anta","ā",".n.",".m.$.sg.$.voc.",0.3],
+		["anta","ā",".n.",".nt.$.pl.$.nom.",0.99],
+		["anta","ā",".n.",".nt.$.pl.$.voc.",0.3],
+		["anta","a",".n.",".nt.$.sg.$.voc.",0.3],
+		["anta","ā",".n.",".nt.$.sg.$.voc.",0.3],
+		["anta","ā",".n.",".m.$.sg.$.voc.",0.3],
+		["anta","ā",".n.",".nt.$.sg.$.voc.",0.3],
+		["anta","aṃ",".n.",".m.$.sg.$.acc.",0.99],
+		["anta","aṃ",".n.",".nt.$.sg.$.acc.",0.99],
+		["anta","aṃ",".n.",".nt.$.sg.$.nom.",0.99],
+		["anta","aṃ",".n.",".m.$.sg.$.nom.",0.99],
+		["anta","aṃ",".n.",".m.$.sg.$.voc.",0.3],
+		["anta","aṃ",".n.",".nt.$.sg.$.voc.",0.3],
+		["anta","aṃ",".n.",".m.$.sg.$.voc.",0.3],
+		["anta","aṃ",".n.",".nt.$.sg.$.voc.",0.3],
+		["anta","ānaṃ",".n.",".m.$.pl.$.dat.",0.99],
+		["anta","ānaṃ",".n.",".m.$.pl.$.gen.",0.99],
+		["anta","e",".n.",".m.$.pl.$.acc.",0.99],
+		["anta","ebhi",".n.",".m.$.pl.$.abl.",0.99],
+		["anta","ebhi",".n.",".m.$.pl.$.inst.",0.99],
+		["anta","ehi",".n.",".m.$.pl.$.abl.",0.99],
+		["anta","ehi",".n.",".m.$.pl.$.inst.",0.99],
+		["anta","esu",".n.",".m.$.pl.$.loc.",0.99],
+		["ti","ti",".v.",".3p.$.sg.$.pres.",0.99],
+		["ti","nti",".v.",".3p.$.pl.$.pres.",0.99],
+		["ti","te",".v.",".3p.$.sg.$.pres.",0.99],
+		["ti","nte",".v.",".3p.$.pl.$.pres.",0.99],
+		["ti","re",".v.",".3p.$.pl.$.pres.",0.99],
+		["ti","ssati",".v.",".3p.$.sg.$.fut.",0.99],
+		["ti","ssanti",".v.",".3p.$.pl.$.fut.",0.99],
+		["ti","ssate",".v.",".3p.$.sg.$.fut.",0.99],
+		["ti","ssante",".v.",".3p.$.pl.$.fut.",0.99],
+		["ti","ssare",".v.",".3p.$.pl.$.fut.",0.99],
+		["ti","tu",".v.",".3p.$.sg.$.imp.",0.99],
+		["ti","ntu",".v.",".3p.$.pl.$.imp.",0.99],
+		["ti","taṃ",".v.",".3p.$.sg.$.imp.",0.99],
+		["ti","ntaṃ",".v.",".3p.$.pl.$.imp.",0.99],
+		["ti","sā",".v.",".3p.$.sg.$.cond.",0.99],
+		["ti","ssa",".v.",".3p.$.sg.$.cond.",0.99],
+		["ti","ssati",".v.",".3p.$.sg.$.cond.",0.99],
+		["ti","ssaṃsu",".v.",".3p.$.pl.$.cond.",0.99],
+		["ti","ssatha",".v.",".3p.$.sg.$.cond.",0.99],
+		["ti","ssiṃsu",".v.",".3p.$.pl.$.cond.",0.99],
+		["ti","si",".v.",".3p.$.sg.$.aor.",0.99],
+		["ti","sī",".v.",".3p.$.sg.$.aor.",0.99],
+		["ti","sā",".v.",".3p.$.sg.$.aor.",0.99],
+		["ti","siṃsu",".v.",".3p.$.pl.$.aor.",0.99],
+		["ti","sṃ",".v.",".3p.$.pl.$.aor.",0.99],
+		["ti","suṃū",".v.",".3p.$.pl.$.aor.",0.99],
+		["ti","sā",".v.",".3p.$.sg.$.aor.",0.99],
+		["ti","sa",".v.",".3p.$.sg.$.aor.",0.99],
+		["ti","stthuṃ",".v.",".3p.$.pl.$.aor.",0.99],
+		["ti","satthuṃ",".v.",".3p.$.pl.$.aor.",0.99],
+		["ti","mi",".v.",".1p.$.sg.$.pres.",0.99],
+		["ti","ma",".v.",".1p.$.pl.$.pres.",0.99],
+		["ti","e",".v.",".1p.$.sg.$.pres.",0.99],
+		["ti","mhe",".v.",".1p.$.pl.$.pres.",0.99],
+		["ti","mahe",".v.",".1p.$.pl.$.pres.",0.99],
+		["ti","mha",".v.",".1p.$.pl.$.pres.",0.99],
+		["ti","mase",".v.",".1p.$.pl.$.pres.",0.99],
+		["ti","mhase",".v.",".1p.$.pl.$.pres.",0.99],
+		["ti","ssāmi",".v.",".1p.$.sg.$.fut.",0.99],
+		["ti","ssāma",".v.",".1p.$.pl.$.fut.",0.99],
+		["ti","ssaṃ",".v.",".1p.$.sg.$.fut.",0.99],
+		["ti","ssāmhe",".v.",".1p.$.pl.$.fut.",0.99],
+		["ti","ssāmase",".v.",".1p.$.pl.$.fut.",0.99],
+		["ti","mi",".v.",".1p.$.sg.$.imp.",0.99],
+		["ti","ma",".v.",".1p.$.pl.$.imp.",0.99],
+		["ti","ssa",".v.",".1p.$.sg.$.cond.",0.99],
+		["ti","ssamhā",".v.",".1p.$.pl.$.cond.",0.99],
+		["ti","ssaṃ",".v.",".1p.$.sg.$.cond.",0.99],
+		["ti","ssāmhase",".v.",".1p.$.pl.$.cond.",0.99],
+		["ti","siṃ",".v.",".1p.$.sg.$.aor.",0.99],
+		["ti","saṃ",".v.",".1p.$.sg.$.aor.",0.99],
+		["ti","sṃ",".v.",".1p.$.sg.$.aor.",0.99],
+		["ti","sa",".v.",".1p.$.sg.$.aor.",0.99],
+		["ti","sā",".v.",".1p.$.sg.$.aor.",0.99],
+		["ti","simha",".v.",".1p.$.pl.$.aor.",0.99],
+		["ti","simhā",".v.",".1p.$.pl.$.aor.",0.99],
+		["ti","sa",".v.",".1p.$.sg.$.aor.",0.99],
+		["ti","simhe",".v.",".1p.$.pl.$.aor.",0.99],
+		["ti","si",".v.",".2p.$.sg.$.pres.",0.99],
+		["ti","tha",".v.",".2p.$.pl.$.pres.",0.99],
+		["ti","se",".v.",".2p.$.sg.$.pres.",0.99],
+		["ti","vhe",".v.",".2p.$.pl.$.pres.",0.99],
+		["ti","ssasi",".v.",".2p.$.sg.$.fut.",0.99],
+		["ti","ssatha",".v.",".2p.$.pl.$.fut.",0.99],
+		["ti","ssase",".v.",".2p.$.sg.$.fut.",0.99],
+		["ti","ssavhe",".v.",".2p.$.pl.$.fut.",0.99],
+		["ti","hi",".v.",".2p.$.sg.$.imp.",0.99],
+		["ti","ta",".v.",".2p.$.pl.$.imp.",0.99],
+		["ti","ssu",".v.",".2p.$.sg.$.imp.",0.99],
+		["ti","vho",".v.",".2p.$.pl.$.imp.",0.99],
+		["ti","se",".v.",".2p.$.sg.$.cond.",0.99],
+		["ti","ssa",".v.",".2p.$.sg.$.cond.",0.99],
+		["ti","ssasi",".v.",".2p.$.sg.$.cond.",0.99],
+		["ti","ssatha",".v.",".2p.$.pl.$.cond.",0.99],
+		["ti","ssase",".v.",".2p.$.sg.$.cond.",0.99],
+		["ti","ssavhe",".v.",".2p.$.pl.$.cond.",0.99],
+		["ti","si",".v.",".2p.$.sg.$.aor.",0.99],
+		["ti","so",".v.",".2p.$.sg.$.aor.",0.99],
+		["ti","sā",".v.",".2p.$.sg.$.aor.",0.99],
+		["ti","sttha",".v.",".2p.$.pl.$.aor.",0.99],
+		["ti","sse",".v.",".2p.$.sg.$.aor.",0.99],
+		["ti","svhaṃ",".v.",".2p.$.pl.$.aor.",0.99],
+		["ti","eyya",".v.",".3p.$.sg.$.opt.",0.99],
+		["ati","eyyuṃ",".v.",".3p.$.pl.$.opt.",0.99],
+		["ati","etha",".v.",".3p.$.sg.$.opt.",0.99],
+		["ati","eraṃ",".v.",".3p.$.pl.$.opt.",0.99],
+		["ati","issati",".v.",".3p.$.sg.$.fut.",0.99],
+		["ati","issanti",".v.",".3p.$.pl.$.fut.",0.99],
+		["ati","issate",".v.",".3p.$.sg.$.fut.",0.99],
+		["ati","issante",".v.",".3p.$.pl.$.fut.",0.99],
+		["ati","issare",".v.",".3p.$.pl.$.fut.",0.99],
+		["ati","i",".v.",".3p.$.sg.$.aor.",0.99],
+		["ati","ī",".v.",".3p.$.sg.$.aor.",0.99],
+		["ati","ā",".v.",".3p.$.sg.$.aor.",0.99],
+		["ati","iṃsu",".v.",".3p.$.pl.$.aor.",0.99],
+		["ati","ṃ",".v.",".3p.$.pl.$.aor.",0.99],
+		["ati","uṃū",".v.",".3p.$.pl.$.aor.",0.99],
+		["ati","ā",".v.",".3p.$.sg.$.aor.",0.99],
+		["ati","a",".v.",".3p.$.sg.$.aor.",0.99],
+		["ati","tthuṃ",".v.",".3p.$.pl.$.aor.",0.99],
+		["ati","atthuṃ",".v.",".3p.$.pl.$.aor.",0.99],
+		["ati","āmi",".v.",".1p.$.sg.$.pres.",0.99],
+		["ati","āma",".v.",".1p.$.pl.$.pres.",0.99],
+		["ati","e",".v.",".1p.$.sg.$.imp.",0.99],
+		["ati","āmase",".v.",".1p.$.pl.$.imp.",0.99],
+		["ati","eyyāmi",".v.",".1p.$.sg.$.opt.",0.99],
+		["ati","eyyāma",".v.",".1p.$.pl.$.opt.",0.99],
+		["ati","eyyaṃ",".v.",".1p.$.sg.$.opt.",0.99],
+		["ati","eyyāmhe",".v.",".1p.$.pl.$.opt.",0.99],
+		["ati","issāmi",".v.",".1p.$.sg.$.fut.",0.99],
+		["ati","issāma",".v.",".1p.$.pl.$.fut.",0.99],
+		["ati","issaṃ",".v.",".1p.$.sg.$.fut.",0.99],
+		["ati","issāmhe",".v.",".1p.$.pl.$.fut.",0.99],
+		["ati","issāmase",".v.",".1p.$.pl.$.fut.",0.99],
+		["ati","iṃ",".v.",".1p.$.sg.$.aor.",0.99],
+		["ati","aṃ",".v.",".1p.$.sg.$.aor.",0.99],
+		["ati","ṃ",".v.",".1p.$.sg.$.aor.",0.99],
+		["ati","a",".v.",".1p.$.sg.$.aor.",0.99],
+		["ati","ā",".v.",".1p.$.sg.$.aor.",0.99],
+		["ati","imha",".v.",".1p.$.pl.$.aor.",0.99],
+		["ati","imhā",".v.",".1p.$.pl.$.aor.",0.99],
+		["ati","a",".v.",".1p.$.sg.$.aor.",0.99],
+		["ati","imhe",".v.",".1p.$.pl.$.aor.",0.99],
+		["ati","eyyāsi",".v.",".2p.$.sg.$.opt.",0.99],
+		["ati","eyyātha",".v.",".2p.$.pl.$.opt.",0.99],
+		["ati","etho",".v.",".2p.$.sg.$.opt.",0.99],
+		["ati","eyyavho",".v.",".2p.$.pl.$.opt.",0.99],
+		["ati","issasi",".v.",".2p.$.sg.$.fut.",0.99],
+		["ati","issatha",".v.",".2p.$.pl.$.fut.",0.99],
+		["ati","issase",".v.",".2p.$.sg.$.fut.",0.99],
+		["ati","issavhe",".v.",".2p.$.pl.$.fut.",0.99],
+		["ati","i",".v.",".2p.$.sg.$.aor.",0.99],
+		["ati","o",".v.",".2p.$.sg.$.aor.",0.99],
+		["ati","ā",".v.",".2p.$.sg.$.aor.",0.99],
+		["ati","ttha",".v.",".2p.$.pl.$.aor.",0.99],
+		["ati","se",".v.",".2p.$.sg.$.aor.",0.99],
+		["ati","vhaṃ",".v.",".2p.$.pl.$.aor.",0.99],
+		["āti","etha",".v.",".3p.$.sg.$.opt.",0.99],
+		["āti","eraṃ",".v.",".3p.$.pl.$.opt.",0.99],
+		["āti","issati",".v.",".3p.$.sg.$.fut.",0.99],
+		["āti","issanti",".v.",".3p.$.pl.$.fut.",0.99],
+		["āti","issate",".v.",".3p.$.sg.$.fut.",0.99],
+		["āti","issante",".v.",".3p.$.pl.$.fut.",0.99],
+		["āti","issare",".v.",".3p.$.pl.$.fut.",0.99],
+		["āti","i",".v.",".3p.$.sg.$.aor.",0.99],
+		["āti","ī",".v.",".3p.$.sg.$.aor.",0.99],
+		["āti","ā",".v.",".3p.$.sg.$.aor.",0.99],
+		["āti","iṃsu",".v.",".3p.$.pl.$.aor.",0.99],
+		["āti","ṃ",".v.",".3p.$.pl.$.aor.",0.99],
+		["āti","uṃū",".v.",".3p.$.pl.$.aor.",0.99],
+		["āti","ā",".v.",".3p.$.sg.$.aor.",0.99],
+		["āti","a",".v.",".3p.$.sg.$.aor.",0.99],
+		["āti","tthuṃ",".v.",".3p.$.pl.$.aor.",0.99],
+		["āti","atthuṃ",".v.",".3p.$.pl.$.aor.",0.99],
+		["āti","e",".v.",".1p.$.sg.$.imp.",0.99],
+		["āti","āmase",".v.",".1p.$.pl.$.imp.",0.99],
+		["āti","eyyuṃ",".v.",".3p.$.pl.$.opt.",0.99],
+		["āti","eyyāmi",".v.",".1p.$.sg.$.opt.",0.99],
+		["āti","eyyāma",".v.",".1p.$.pl.$.opt.",0.99],
+		["āti","eyyaṃ",".v.",".1p.$.sg.$.opt.",0.99],
+		["āti","eyyāmhe",".v.",".1p.$.pl.$.opt.",0.99],
+		["āti","issāmi",".v.",".1p.$.sg.$.fut.",0.99],
+		["āti","issāma",".v.",".1p.$.pl.$.fut.",0.99],
+		["āti","issaṃ",".v.",".1p.$.sg.$.fut.",0.99],
+		["āti","issāmhe",".v.",".1p.$.pl.$.fut.",0.99],
+		["āti","issāmase",".v.",".1p.$.pl.$.fut.",0.99],
+		["āti","iṃ",".v.",".1p.$.sg.$.aor.",0.99],
+		["āti","aṃ",".v.",".1p.$.sg.$.aor.",0.99],
+		["āti","ṃ",".v.",".1p.$.sg.$.aor.",0.99],
+		["āti","a",".v.",".1p.$.sg.$.aor.",0.99],
+		["āti","ā",".v.",".1p.$.sg.$.aor.",0.99],
+		["āti","imha",".v.",".1p.$.pl.$.aor.",0.99],
+		["āti","imhā",".v.",".1p.$.pl.$.aor.",0.99],
+		["āti","a",".v.",".1p.$.sg.$.aor.",0.99],
+		["āti","imhe",".v.",".1p.$.pl.$.aor.",0.99],
+		["āti","eyyāsi",".v.",".2p.$.sg.$.opt.",0.99],
+		["āti","eyyātha",".v.",".2p.$.pl.$.opt.",0.99],
+		["āti","etho",".v.",".2p.$.sg.$.opt.",0.99],
+		["āti","eyyavho",".v.",".2p.$.pl.$.opt.",0.99],
+		["āti","issasi",".v.",".2p.$.sg.$.fut.",0.99],
+		["āti","issatha",".v.",".2p.$.pl.$.fut.",0.99],
+		["āti","issase",".v.",".2p.$.sg.$.fut.",0.99],
+		["āti","issavhe",".v.",".2p.$.pl.$.fut.",0.99],
+		["āti","i",".v.",".2p.$.sg.$.aor.",0.99],
+		["āti","o",".v.",".2p.$.sg.$.aor.",0.99],
+		["āti","ā",".v.",".2p.$.sg.$.aor.",0.99],
+		["āti","ttha",".v.",".2p.$.pl.$.aor.",0.99],
+		["āti","se",".v.",".2p.$.sg.$.aor.",0.99],
+		["āti","vhaṃ",".v.",".2p.$.pl.$.aor.",0.99],
+		["eti","etha",".v.",".3p.$.sg.$.opt.",0.99],
+		["eti","eraṃ",".v.",".3p.$.pl.$.opt.",0.99],
+		["eti","issati",".v.",".3p.$.sg.$.fut.",0.99],
+		["eti","issanti",".v.",".3p.$.pl.$.fut.",0.99],
+		["eti","issate",".v.",".3p.$.sg.$.fut.",0.99],
+		["eti","issante",".v.",".3p.$.pl.$.fut.",0.99],
+		["eti","issare",".v.",".3p.$.pl.$.fut.",0.99],
+		["eti","i",".v.",".3p.$.sg.$.aor.",0.99],
+		["eti","ī",".v.",".3p.$.sg.$.aor.",0.99],
+		["eti","ā",".v.",".3p.$.sg.$.aor.",0.99],
+		["eti","iṃsu",".v.",".3p.$.pl.$.aor.",0.99],
+		["eti","ṃ",".v.",".3p.$.pl.$.aor.",0.99],
+		["eti","uṃū",".v.",".3p.$.pl.$.aor.",0.99],
+		["eti","ā",".v.",".3p.$.sg.$.aor.",0.99],
+		["eti","a",".v.",".3p.$.sg.$.aor.",0.99],
+		["eti","tthuṃ",".v.",".3p.$.pl.$.aor.",0.99],
+		["eti","atthuṃ",".v.",".3p.$.pl.$.aor.",0.99],
+		["eti","e",".v.",".1p.$.sg.$.imp.",0.99],
+		["eti","āmase",".v.",".1p.$.pl.$.imp.",0.99],
+		["eti","eyyāmi",".v.",".1p.$.sg.$.opt.",0.99],
+		["eti","eyyuṃ",".v.",".3p.$.pl.$.opt.",0.99],
+		["eti","eyyāma",".v.",".1p.$.pl.$.opt.",0.99],
+		["eti","eyyaṃ",".v.",".1p.$.sg.$.opt.",0.99],
+		["eti","eyyāmhe",".v.",".1p.$.pl.$.opt.",0.99],
+		["eti","issāmi",".v.",".1p.$.sg.$.fut.",0.99],
+		["eti","issāma",".v.",".1p.$.pl.$.fut.",0.99],
+		["eti","issaṃ",".v.",".1p.$.sg.$.fut.",0.99],
+		["eti","issāmhe",".v.",".1p.$.pl.$.fut.",0.99],
+		["eti","issāmase",".v.",".1p.$.pl.$.fut.",0.99],
+		["eti","iṃ",".v.",".1p.$.sg.$.aor.",0.99],
+		["eti","aṃ",".v.",".1p.$.sg.$.aor.",0.99],
+		["eti","ṃ",".v.",".1p.$.sg.$.aor.",0.99],
+		["eti","a",".v.",".1p.$.sg.$.aor.",0.99],
+		["eti","ā",".v.",".1p.$.sg.$.aor.",0.99],
+		["eti","imha",".v.",".1p.$.pl.$.aor.",0.99],
+		["eti","imhā",".v.",".1p.$.pl.$.aor.",0.99],
+		["eti","a",".v.",".1p.$.sg.$.aor.",0.99],
+		["eti","imhe",".v.",".1p.$.pl.$.aor.",0.99],
+		["eti","eyyāsi",".v.",".2p.$.sg.$.opt.",0.99],
+		["eti","eyyātha",".v.",".2p.$.pl.$.opt.",0.99],
+		["eti","etho",".v.",".2p.$.sg.$.opt.",0.99],
+		["eti","eyyavho",".v.",".2p.$.pl.$.opt.",0.99],
+		["eti","issasi",".v.",".2p.$.sg.$.fut.",0.99],
+		["eti","issatha",".v.",".2p.$.pl.$.fut.",0.99],
+		["eti","issase",".v.",".2p.$.sg.$.fut.",0.99],
+		["eti","issavhe",".v.",".2p.$.pl.$.fut.",0.99],
+		["eti","i",".v.",".2p.$.sg.$.aor.",0.99],
+		["eti","o",".v.",".2p.$.sg.$.aor.",0.99],
+		["eti","ā",".v.",".2p.$.sg.$.aor.",0.99],
+		["eti","ttha",".v.",".2p.$.pl.$.aor.",0.99],
+		["eti","se",".v.",".2p.$.sg.$.aor.",0.99],
+		["eti","vhaṃ",".v.",".2p.$.pl.$.aor.",0.99],
+		["oti","etha",".v.",".3p.$.sg.$.opt.",0.99],
+		["oti","eraṃ",".v.",".3p.$.pl.$.opt.",0.99],
+		["oti","issati",".v.",".3p.$.sg.$.fut.",0.99],
+		["oti","issanti",".v.",".3p.$.pl.$.fut.",0.99],
+		["oti","issate",".v.",".3p.$.sg.$.fut.",0.99],
+		["oti","issante",".v.",".3p.$.pl.$.fut.",0.99],
+		["oti","issare",".v.",".3p.$.pl.$.fut.",0.99],
+		["oti","i",".v.",".3p.$.sg.$.aor.",0.99],
+		["oti","ī",".v.",".3p.$.sg.$.aor.",0.99],
+		["oti","ā",".v.",".3p.$.sg.$.aor.",0.99],
+		["oti","iṃsu",".v.",".3p.$.pl.$.aor.",0.99],
+		["oti","ṃ",".v.",".3p.$.pl.$.aor.",0.99],
+		["oti","uṃū",".v.",".3p.$.pl.$.aor.",0.99],
+		["oti","ā",".v.",".3p.$.sg.$.aor.",0.99],
+		["oti","a",".v.",".3p.$.sg.$.aor.",0.99],
+		["oti","tthuṃ",".v.",".3p.$.pl.$.aor.",0.99],
+		["oti","atthuṃ",".v.",".3p.$.pl.$.aor.",0.99],
+		["oti","e",".v.",".1p.$.sg.$.imp.",0.99],
+		["oti","āmase",".v.",".1p.$.pl.$.imp.",0.99],
+		["oti","eyyuṃ",".v.",".3p.$.pl.$.opt.",0.99],
+		["oti","eyyāmi",".v.",".1p.$.sg.$.opt.",0.99],
+		["oti","eyyāma",".v.",".1p.$.pl.$.opt.",0.99],
+		["oti","eyyaṃ",".v.",".1p.$.sg.$.opt.",0.99],
+		["oti","eyyāmhe",".v.",".1p.$.pl.$.opt.",0.99],
+		["oti","issāmi",".v.",".1p.$.sg.$.fut.",0.99],
+		["oti","issāma",".v.",".1p.$.pl.$.fut.",0.99],
+		["oti","issaṃ",".v.",".1p.$.sg.$.fut.",0.99],
+		["oti","issāmhe",".v.",".1p.$.pl.$.fut.",0.99],
+		["oti","issāmase",".v.",".1p.$.pl.$.fut.",0.99],
+		["oti","iṃ",".v.",".1p.$.sg.$.aor.",0.99],
+		["oti","aṃ",".v.",".1p.$.sg.$.aor.",0.99],
+		["oti","ṃ",".v.",".1p.$.sg.$.aor.",0.99],
+		["oti","a",".v.",".1p.$.sg.$.aor.",0.99],
+		["oti","ā",".v.",".1p.$.sg.$.aor.",0.99],
+		["oti","imha",".v.",".1p.$.pl.$.aor.",0.99],
+		["oti","imhā",".v.",".1p.$.pl.$.aor.",0.99],
+		["oti","a",".v.",".1p.$.sg.$.aor.",0.99],
+		["oti","imhe",".v.",".1p.$.pl.$.aor.",0.99],
+		["oti","eyyāsi",".v.",".2p.$.sg.$.opt.",0.99],
+		["oti","eyyātha",".v.",".2p.$.pl.$.opt.",0.99],
+		["oti","etho",".v.",".2p.$.sg.$.opt.",0.99],
+		["oti","eyyavho",".v.",".2p.$.pl.$.opt.",0.99],
+		["oti","issasi",".v.",".2p.$.sg.$.fut.",0.99],
+		["oti","issatha",".v.",".2p.$.pl.$.fut.",0.99],
+		["oti","issase",".v.",".2p.$.sg.$.fut.",0.99],
+		["oti","issavhe",".v.",".2p.$.pl.$.fut.",0.99],
+		["oti","i",".v.",".2p.$.sg.$.aor.",0.99],
+		["oti","o",".v.",".2p.$.sg.$.aor.",0.99],
+		["oti","ā",".v.",".2p.$.sg.$.aor.",0.99],
+		["oti","ttha",".v.",".2p.$.pl.$.aor.",0.99],
+		["oti","se",".v.",".2p.$.sg.$.aor.",0.99],
+		["oti","vhaṃ",".v.",".2p.$.pl.$.aor.",0.99],
+		["ati","ittha",".v.",".2p.$.pl.$.aor.",0.99],
+
+		["ti","māna",".ti:base.",".prp.",0.99],
+		["ati","anta",".ti:base.",".prp.",0.99],
+		["ti","ta",".ti:base.",".pp.",0.99],
+		["ti","na",".ti:base.",".pp.",0.99],
+		["eti","enta",".ti:base.",".prp.",0.99],
+		["ati","eyya",".ti:base.",".fpp.",0.99],
+		["eti","eyya",".ti:base.",".fpp.",0.99],
+		["oti","eyya",".ti:base.",".fpp.",0.99],
+		["ti","tabba",".ti:base.",".fpp.",0.99],
+		["ati","itabba",".ti:base.",".fpp.",0.99],
+		["eti","itabba",".ti:base.",".fpp.",0.99],
+		["oti","itabba",".ti:base.",".fpp.",0.99],
+		["ati","anīya",".ti:base.",".fpp.",0.99],
+		["eti","anīya",".ti:base.",".fpp.",0.99],
+		["oti","anīya",".ti:base.",".fpp.",0.99],
+		["ati","āpeti",".v:base.",".caus.",0.99],
+		["ati","yati",".v:base.",".pp.",0.99],
+		["oti","āpeti",".v:base.",".caus.",0.99],
+		["oti","yati",".v:base.",".pp.",0.99],
+	];
+		
+	public $derivatives = [
+		["ti","māna",".ti:base.",".prp.",0.99],
+		["ati","anta",".ti:base.",".prp.",0.99],
+		["ti","ta",".ti:base.",".pp.",0.99],
+		["ti","na",".ti:base.",".pp.",0.99],
+		["eti","enta",".ti:base.",".prp.",0.99],
+		["ati","eyya",".ti:base.",".fpp.",0.99],
+		["eti","eyya",".ti:base.",".fpp.",0.99],
+		["oti","eyya",".ti:base.",".fpp.",0.99],
+		["ti","tabba",".ti:base.",".fpp.",0.99],
+		["ati","itabba",".ti:base.",".fpp.",0.99],
+		["eti","itabba",".ti:base.",".fpp.",0.99],
+		["oti","itabba",".ti:base.",".fpp.",0.99],
+		["ati","anīya",".ti:base.",".fpp.",0.99],
+		["eti","anīya",".ti:base.",".fpp.",0.99],
+		["oti","anīya",".ti:base.",".fpp.",0.99],
+		["ati","āpeti",".v:base.",".caus.",0.99],
+		["ati","yati",".v:base.",".caus.",0.99],
+		["oti","āpeti",".v:base.",".pp.",0.99],
+		["oti","yati",".v:base.",".pp.",0.99],
+	];
+	public $union = [
+		["ssa","ssāpi"],
+		["ssa","ssāti"],
+		["ena","enāti"],
+		["ena","enāpi"],
+		["ṃ","ñca"],
+		["ṃ","nti"],
+		["a","āti"],
+		["ā","āti"],
+		["ī","īti"],
+		["i","īti"],
+		["o","oti"],
+		["u","ūti"],
+		["ū","ūti"],
+		["ā","āpi"],
+		["a","āpi"],
+		["e","epi"],
+		["ī","īpi"],
+		["i","īpi"],
+		["o","opi"],
+		["e","epi"],
+		["ū","upi"],
+		["u","upi"],
+		["ṃ","mpi"],
+		["o","ova"],
+		["e","eva"]
+	];
+}

+ 726 - 0
app/Tools/TurboSplit.php

@@ -0,0 +1,726 @@
+<?php
+namespace App\Tools;
+require_once __DIR__.'/../../public/app/public/casesuf.inc';
+
+use Illuminate\Support\Facades\Cache;
+use Illuminate\Support\Facades\Log;
+use Illuminate\Support\Facades\DB;
+use App\Models\WordPart;
+use App\Models\UserDict;
+use Illuminate\Support\Arr;
+
+class TurboSplit
+{
+	protected $path = array();
+	protected $isDebug = false;
+	#当前搜索路径信心指数,如果过低,马上终止这个路径的搜索
+	protected $currPathCf;
+	//结果数组
+	protected $result = array();
+	//过程中最大结果数量
+	protected $MAX_RESULT = 100;
+	//返回值最大结果数量
+	protected $MAX_RESULT2 = 5;
+	//最大递归深度
+	protected $MAX_DEEP = 16;
+	//连音规则表
+	protected $sandhi = [
+		["a" => "", "b" => "", "c" => "", "len" => 0, "adj_len" => 0, "advance" => false,"cf"=>1.0],
+		["a" => "a", "b" => "a", "c" => "ā", "len" => 1, "adj_len" => 0, "advance" => false,"cf"=>0.99999],
+		["a" => "ā", "b" => "ā", "c" => "ā", "len" => 1, "adj_len" => 0, "advance" => false,"cf"=>0.9999],
+		["a" => "a", "b" => "ā", "c" => "ā", "len" => 1, "adj_len" => 0, "advance" => false,"cf"=>0.9999],
+		["a" => "ā", "b" => "a", "c" => "ā", "len" => 1, "adj_len" => 0, "advance" => false,"cf"=>0.9999],
+		["a" => "a", "b" => "e", "c" => "e", "len" => 1, "adj_len" => 0, "advance" => false,"cf"=>0.9999],
+		["a" => "a", "b" => "i", "c" => "i", "len" => 1, "adj_len" => 0, "advance" => false,"cf"=>0.9999],
+		["a" => "a", "b" => "o", "c" => "o", "len" => 1, "adj_len" => 0, "advance" => false,"cf"=>0.9999],
+		["a" => "a", "b" => "u", "c" => "o", "len" => 1, "adj_len" => 0, "advance" => false,"cf"=>0.9999],
+		["a" => "u", "b" => "a", "c" => "o", "len" => 1, "adj_len" => 0, "advance" => false,"cf"=>0.9999],
+		["a" => "u", "b" => "u", "c" => "ū", "len" => 1, "adj_len" => 0, "advance" => false,"cf"=>0.9999],
+		["a" => "a", "b" => "u", "c" => "u", "len" => 1, "adj_len" => 0, "advance" => false,"cf"=>0.9999],
+		["a" => "a", "b" => "ī", "c" => "ī", "len" => 1, "adj_len" => 0, "advance" => false,"cf"=>0.9999],
+		["a" => "a", "b" => "ū", "c" => "ū", "len" => 1, "adj_len" => 0, "advance" => false,"cf"=>0.9999],
+		["a" => "a", "b" => "i", "c" => "e", "len" => 1, "adj_len" => 0, "advance" => false,"cf"=>0.9999],
+		["a" => "e", "b" => "a", "c" => "e", "len" => 1, "adj_len" => 0, "advance" => false,"cf"=>0.9999],
+		["a" => "i", "b" => "i", "c" => "ī", "len" => 1, "adj_len" => 0, "advance" => false,"cf"=>0.9999],
+		["a" => "i", "b" => "e", "c" => "e", "len" => 1, "adj_len" => 0, "advance" => false,"cf"=>0.9999],
+		["a" => "i", "b" => "a", "c" => "ya", "len" => 2, "adj_len" => 0, "advance" => false,"cf"=>0.9999],
+		["a" => "a", "b" => "atth", "c" => "atth", "len" => 4, "adj_len" => 0, "advance" => false,"cf"=>0.9999],
+		["a" => "taṃ", "b" => "n", "c" => "tann", "len" => 4, "adj_len" => 0, "advance" => false,"cf"=>0.9999],
+		["a" => "[ṃ]", "b" => "api", "c" => "mpi", "len" => 3, "adj_len" => 0, "advance" => false,"cf"=>0.9999],
+		["a" => "[ṃ]", "b" => "eva", "c" => "meva", "len" => 4, "adj_len" => 0, "advance" => false,"cf"=>0.9999],
+		["a" => "[o]", "b" => "iva", "c" => "ova", "len" => 3, "adj_len" => 0, "advance" => false,"cf"=>0.9999],
+		["a" => "o", "b" => "a", "c" => "o", "len" => 1, "adj_len" => 0, "advance" => false,"cf"=>0.9999],
+		["a" => "a", "b" => "ādi", "c" => "ādi", "len" => 3, "adj_len" => 0, "advance" => false,"cf"=>0.9999],
+		["a" => "a[ānaṃ]", "b" => "a", "c" => "ānama", "len" => 5, "adj_len" => 0, "advance" => false,"cf"=>0.9999],
+		["a" => "a", "b" => "iti", "c" => "āti", "len" => 3, "adj_len" => 0, "advance" => false,"cf"=>0.9999],
+		["a" => "[ṃ]", "b" => "ca", "c" => "ñca", "len" => 3, "adj_len" => 0, "advance" => false,"cf"=>0.9999],
+		["a" => "[ṃ]", "b" => "iti", "c" => "nti", "len" => 3, "adj_len" => 0, "advance" => false,"cf"=>0.9999],
+		["a" => "[ṃ]", "b" => "a", "c" => "ma", "len" => 2, "adj_len" => 0, "advance" => false,"cf"=>0.9999],
+		["a" => "ṃ", "b" => "a", "c" => "m", "len" => 1, "adj_len" => 0, "advance" => false,"cf"=>0.9999],
+		["a" => "[ṃ]", "b" => "ā", "c" => "mā", "len" => 2, "adj_len" => 0, "advance" => false,"cf"=>0.8],
+		["a" => "[ṃ]", "b" => "u", "c" => "mu", "len" => 2, "adj_len" => 0, "advance" => false,"cf"=>0.8],
+		["a" => "[ṃ]", "b" => "h", "c" => "ñh", "len" => 2, "adj_len" => 0, "advance" => false,"cf"=>0.8],
+		["a" => "ā", "b" => "[ṃ]", "c" => "am", "len" => 2, "adj_len" => 0, "advance" => false,"cf"=>0.8],
+		["a" => "a", "b" => "[ṃ]", "c" => "am", "len" => 2, "adj_len" => 0, "advance" => false,"cf"=>0.8],
+		["a" => "ī", "b" => "[ṃ]", "c" => "im", "len" => 2, "adj_len" => 0, "advance" => false,"cf"=>0.8],
+		["a" => "ati", "b" => "tabba", "c" => "atabba", "len" => 6, "adj_len" => 0, "advance" => false,"cf"=>0.9999],
+		["a" => "ati", "b" => "tabba", "c" => "itabba", "len" => 6, "adj_len" => 0, "advance" => false,"cf"=>0.9999],
+		["a" => "iti", "b" => "a", "c" => "icca", "len" => 4, "adj_len" => 0, "advance" => false,"cf"=>0.9999],
+		["a" => "uṃ", "b" => "a", "c" => "uma", "len" => 3, "adj_len" => 0, "advance" => false,"cf"=>0.9999],
+		["a" => "u[ūnaṃ]", "b" => "a", "c" => "ūnama", "len" => 5, "adj_len" => 0, "advance" => false,"cf"=>0.9999],
+		["a" => "ī[īnaṃ]", "b" => "a", "c" => "īnama", "len" => 5, "adj_len" => 0, "advance" => false,"cf"=>0.9999],
+		["a" => "su", "b" => "a", "c" => "sva", "len" => 3, "adj_len" => 0, "advance" => false,"cf"=>0.9999],
+		["a" => "ā", "b" => "iti", "c" => "āti", "len" => 3, "adj_len" => 0, "advance" => false,"cf"=>0.9999],
+		["a" => "a", "b" => "iti", "c" => "āti", "len" => 3, "adj_len" => 0, "advance" => false,"cf"=>0.99999],
+		["a" => "e", "b" => "iti", "c" => "eti", "len" => 3, "adj_len" => 0, "advance" => false,"cf"=>0.99999],
+		["a" => "ī", "b" => "iti", "c" => "īti", "len" => 3, "adj_len" => 0, "advance" => false,"cf"=>0.9999],
+		["a" => "i", "b" => "iti", "c" => "īti", "len" => 3, "adj_len" => 0, "advance" => false,"cf"=>0.99999],
+		["a" => "o", "b" => "iti", "c" => "oti", "len" => 3, "adj_len" => 0, "advance" => false,"cf"=>0.99999],
+		["a" => "ū", "b" => "iti", "c" => "ūti", "len" => 3, "adj_len" => 0, "advance" => false,"cf"=>0.9999],
+		["a" => "u", "b" => "iti", "c" => "ūti", "len" => 3, "adj_len" => 0, "advance" => false,"cf"=>0.99999],
+		["a" => "ṃ", "b" => "iti", "c" => "nti", "len" => 3, "adj_len" => 0, "advance" => false,"cf"=>0.99999],
+		["a" => "ṃ", "b" => "ca", "c" => "ñca", "len" => 3, "adj_len" => 0, "advance" => false,"cf"=>1.0],
+		["a" => "ṃ", "b" => "cāti", "c" => "ñcāti", "len" => 5, "adj_len" => 0, "advance" => false,"cf"=>1.0],
+		["a" => "ṃ", "b" => "cet", "c" => "ñcet", "len" => 4, "adj_len" => 0, "advance" => false,"cf"=>0.9999],
+		["a" => "ṃ", "b" => "ev", "c" => "mev", "len" => 3, "adj_len" => 0, "advance" => false,"cf"=>0.99999],
+		["a" => "a", "b" => "a", "c" => "a", "len" => 1, "adj_len" => -1, "advance" => true,"cf"=>0.99],
+		["a" => "ī", "b" => "", "c" => "i", "len" => 1, "adj_len" => 0, "advance" => true,"cf"=>0.9],
+	];
+
+	protected $sandhi2 = [
+		["a" => "ṃ", "b" => "ca", "c" => "ñca", "len" => 3, "adj_len" => 0, "advance" => false,"cf"=>1.0],
+		["a" => "ṃ", "b" => "hi", "c" => "ñhi", "len" => 3, "adj_len" => 0, "advance" => false,"cf"=>1.0],
+		["a" => "ena", "b" => "iti", "c" => "enāti", "len" => 5, "adj_len" => 0, "advance" => false,"cf"=>1.0],
+		["a" => "a", "b" => "iti", "c" => "āti", "len" => 3, "adj_len" => 0, "advance" => false,"cf"=>0.9],
+		["a" => "ā", "b" => "iti", "c" => "āti", "len" => 3, "adj_len" => 0, "advance" => false,"cf"=>0.6],
+		["a" => "e", "b" => "iti", "c" => "eti", "len" => 3, "adj_len" => 0, "advance" => false,"cf"=>0.9],
+		["a" => "i", "b" => "iti", "c" => "īti", "len" => 3, "adj_len" => 0, "advance" => false,"cf"=>0.9],
+		["a" => "o", "b" => "iti", "c" => "oti", "len" => 3, "adj_len" => 0, "advance" => false,"cf"=>0.9],
+		["a" => "u", "b" => "iti", "c" => "ūti", "len" => 3, "adj_len" => 0, "advance" => false,"cf"=>0.9],
+		["a" => "ṃ", "b" => "iti", "c" => "nti", "len" => 3, "adj_len" => 0, "advance" => false,"cf"=>0.9],
+		["a" => "ī", "b" => "eva", "c" => "iyeva", "len" => 5, "adj_len" => 0, "advance" => false,"cf"=>0.9],
+		["a" => "ī", "b" => "eva", "c" => "īyeva", "len" => 5, "adj_len" => 0, "advance" => false,"cf"=>0.9999],
+		["a" => "u", "b" => "eva", "c" => "uyeva", "len" => 5, "adj_len" => 0, "advance" => false,"cf"=>0.9999],
+		["a" => "ṃ", "b" => "eva", "c" => "ṃyeva", "len" => 5, "adj_len" => 0, "advance" => false,"cf"=>0.9999],
+		["a" => "i", "b" => "eva", "c" => "yeva", "len" => 4, "adj_len" => 0, "advance" => false,"cf"=>0.9999],
+		["a" => "o", "b" => "eva", "c" => "ova", "len" => 3, "adj_len" => 0, "advance" => false,"cf"=>0.9999],
+		["a" => "ṃ", "b" => "eva", "c" => "meva", "len" => 4, "adj_len" => 0, "advance" => false,"cf"=>0.9999],
+		["a" => "u", "b" => "eva", "c" => "veva", "len" => 4, "adj_len" => 0, "advance" => false,"cf"=>0.9999],
+		["a" => "a", "b" => "eva", "c" => "eva", "len" => 3, "adj_len" => 0, "advance" => false,"cf"=>0.9999],
+		["a" => "e", "b" => "eva", "c" => "eva", "len" => 3, "adj_len" => 0, "advance" => false,"cf"=>0.9999],
+		["a" => "a", "b" => "api", "c" => "āpi", "len" => 3, "adj_len" => 0, "advance" => false,"cf"=>0.9999],
+		["a" => "ā", "b" => "api", "c" => "āpi", "len" => 3, "adj_len" => 0, "advance" => false,"cf"=>0.9999],
+		["a" => "e", "b" => "api", "c" => "epi", "len" => 3, "adj_len" => 0, "advance" => false,"cf"=>0.9999],
+		["a" => "i", "b" => "api", "c" => "īpi", "len" => 3, "adj_len" => 0, "advance" => false,"cf"=>0.9999],
+		["a" => "ī", "b" => "api", "c" => "īpi", "len" => 3, "adj_len" => 0, "advance" => false,"cf"=>0.9999],
+		["a" => "o", "b" => "api", "c" => "opi", "len" => 3, "adj_len" => 0, "advance" => false,"cf"=>0.9999],
+		["a" => "u", "b" => "api", "c" => "ūpi", "len" => 3, "adj_len" => 0, "advance" => false,"cf"=>0.9999],
+		["a" => "ū", "b" => "api", "c" => "ūpi", "len" => 3, "adj_len" => 0, "advance" => false,"cf"=>0.9999],
+		["a" => "u", "b" => "api", "c" => "upi", "len" => 3, "adj_len" => 0, "advance" => false,"cf"=>0.9999],
+		["a" => "ṃ", "b" => "api", "c" => "mpi", "len" => 3, "adj_len" => 0, "advance" => false,"cf"=>0.9999],
+	];
+
+	/**
+     * Create a new class instance.
+     *
+     * @return void
+     */
+    public function __construct()
+    {
+		for($i=0;$i<$this->MAX_DEEP;$i++ ){
+			array_push($this->path, array("", 0));
+		}
+		
+        return;
+    }
+
+	/**
+     * 从双元音处切开
+     * @param  string  $word
+     * @return void
+     */
+	public function splitDiphthong($word)
+	{
+		//diphthong table双元音表
+		$search = array('aa', 'ae', 'ai', 'ao', 'au', 'aā', 'aī', 'aū', 'ea', 'ee', 'ei', 'eo', 'eu', 'eā', 'eī', 'eū', 'ia', 'ie', 'ii', 'io', 'iu', 'iā', 'iī', 'iū', 'oa', 'oe', 'oi', 'oo', 'ou', 'oā', 'oī', 'oū', 'ua', 'ue', 'ui', 'uo', 'uu', 'uā', 'uī', 'uū', 'āa', 'āe', 'āi', 'āo', 'āu', 'āā', 'āī', 'āū', 'īa', 'īe', 'īi', 'īo', 'īu', 'īā', 'īī', 'īū', 'ūa', 'ūe', 'ūi', 'ūo', 'ūu', 'ūā', 'ūī', 'ūū');
+		$replace = array('a-a', 'a-e', 'a-i', 'a-o', 'a-u', 'a-ā', 'a-ī', 'a-ū', 'e-a', 'e-e', 'e-i', 'e-o', 'e-u', 'e-ā', 'e-ī', 'e-ū', 'i-a', 'i-e', 'i-i', 'i-o', 'i-u', 'i-ā', 'i-ī', 'i-ū', 'o-a', 'o-e', 'o-i', 'o-o', 'o-u', 'o-ā', 'o-ī', 'o-ū', 'u-a', 'u-e', 'u-i', 'u-o', 'u-u', 'u-ā', 'u-ī', 'u-ū', 'ā-a', 'ā-e', 'ā-i', 'ā-o', 'ā-u', 'ā-ā', 'ā-ī', 'ā-ū', 'ī-a', 'ī-e', 'ī-i', 'ī-o', 'ī-u', 'ī-ā', 'ī-ī', 'ī-ū', 'ū-a', 'ū-e', 'ū-i', 'ū-o', 'ū-u', 'ū-ā', 'ū-ī', 'ū-ū');
+		//将双元音拆开
+		//step 1 : split at diphthong . ~aa~ -> ~a-a~
+		$word1 = str_replace($search, $replace, $word);
+		//按连字符拆开处理
+		$arrword = str_getcsv($word1, "-");
+		return $arrword;
+	}
+
+	/**
+     * 查询单词是否存在
+     * @param  string  $word
+     * @return array(int $wordWeight, int $endingLenght)
+     */
+	public function dict_lookup($word)
+	{
+		global $case;		//语尾表
+		if (strlen($word) <= 1) {
+			return array(0,0);
+		}
+		//去掉单词首尾的 []
+		if(mb_substr($word,0,1) !== "["){
+			$search = $word;
+		}
+		else{
+			$search = str_replace("[","",$word);
+			$search = str_replace("]","",$search);		
+		}
+		//获取单词权重
+		$row = Cache::remember('palicanon/wordpart/weight/'.$search, 100 , function() use($search) {
+			return WordPart::where('word',$search)->value('weight');
+		});
+		if ($row) {
+			//找到
+			return array($row,0);
+		} else {
+			//去除尾查
+			$newWord = array();
+			for ($row = 0; $row < count($case); $row++) {
+				$len = mb_strlen($case[$row][1], "UTF-8");
+				$end = mb_substr($search, 0 - $len, null, "UTF-8");
+				if ($end == $case[$row][1]) {
+					$base = mb_substr($search, 0, mb_strlen($search, "UTF-8") - $len, "UTF-8") . $case[$row][0];
+					if ($base != $search) {
+						$newWord[$base] = mb_strlen($case[$row][1],"UTF-8");
+					}
+				}
+			}
+			#找到最高频的base
+			$base_weight = 0;
+			$len = 0;
+			foreach ($newWord as $x => $x_value) {
+				$row = Cache::remember('palicanon/wordpart/weight/'.$search, 100 , function() use($x) {
+					return WordPart::where('word',$x)->value('weight');
+				});
+				if ($row) {
+					if ($row > $base_weight) {
+						$base_weight = $row;
+						$len=$x_value;
+					}
+				}
+			}
+			return array($base_weight,$len);
+		}
+	}
+
+	/**
+	 * 查找某个单词是否在现有词典出现
+	 * 返回信心指数
+	 * look up single word in dictionary vocabulary
+	 * return the confidence value
+	 * 
+	 * 
+	 * 
+	 */
+	public function isExsit($word, $adj_len = 0){
+		$this->log("正在查询:{$word}");
+
+		$isFound = false;
+		$count = 0;
+		$cacheKey = "turbosplit/part/";
+		$wordPart  = Cache::remember($cacheKey.$word,1000,function() use($word){
+			return implode(',',$this->dict_lookup($word));
+		});
+		$arrWordPart = explode(',',$wordPart);
+		$word_count = $arrWordPart[0];
+		$case_len = $arrWordPart[1];
+		if ($word_count > 0) {
+			$this->log("查到:{$word}:{$word_count}个");
+			$isFound = true;
+			$count = $word_count + 1;
+		}		
+
+		//fomular of confidence value 信心值计算公式
+		if ($isFound) {
+			$cf  = Cache::remember("turbosplit/confidence/".$word,1000,function() use($word,$count,$case_len){
+				$len = mb_strlen($word, "UTF-8") - $case_len;
+				$len_correct = 1.2;
+				$count2 = 1.1 + pow($count, 1.18);
+				$conf_num = pow(1 / $count2, pow(($len - 0.5), $len_correct));
+				return round(1 / (1 + 640 * $conf_num), 9);
+			});
+			return ($cf);
+		} else {
+			return (-1);
+		}
+	}
+
+	/**
+	 * 核心拆分函数
+	 * $strWord, word to be look up 要查询的词
+	 * $deep, 当前递归深度
+	 * $express=true, 快速查询
+	 * $adj_len=0 长度校正系数
+	 * $c_threshhold 信心指数阈值
+	 * 
+	 * 
+	 * 
+	 */
+	function split($strWord, $deep = 0, $express = false, $adj_len = 0, $c_threshhold = 0.8, $w_threshhold = 0.8, $forward = true, $sandhi_advance = false)
+	{
+		$this->log("spliting word={$strWord} deep={$deep}");
+		$output = array();
+		#当前搜索路径信心指数,如果过低,马上终止这个路径的搜索
+		if($deep == 0){
+			$this->currPathCf = 1;
+		}
+		//达到最大搜索深度,返回
+		if ($deep >= $this->MAX_DEEP) {
+			$word = "";
+			$cf = 1.0;
+			for ($i = 0; $i < $deep; $i++) {
+				if (!empty($this->path[$i][0])) {
+					$word .= $this->path[$i][0] ;
+					if($this->isDebug) {
+						$word .= "(" . $this->path[$i][1] . ")";
+					}
+					$word .= "+";
+					$cf = $cf * $this->path[$i][1];
+				}
+			}
+			$len = pow(mb_strlen($strWord, "UTF-8"), 3);
+			$cf += (0 - $len) / ($len + 150);
+			$word .= "{$strWord}";
+			if ($forward == true) {
+				$this->result[$word] = $cf;
+				return 0;
+			} else {
+				$reverseWord = $this->word_reverse($word);
+				$this->result[$reverseWord] = $cf;
+				return 0;
+			}
+			
+		}
+		//直接找到
+		$confidence = $this->isExsit($strWord, $adj_len);
+		if ($confidence > $c_threshhold) {
+			array_push($output, array($strWord, "", $confidence));
+		} 
+		else {
+			$confidence = $this->isExsit("[" . $strWord . "]");
+			if ($confidence > $c_threshhold) {
+				array_push($output, array("[" . $strWord . "]", "", $confidence));
+			}
+		}
+
+		//如果开头有双辅音,去掉第一个辅音。因为巴利语中没有以双辅音开头的单词。
+		$doubleword = "kkggccjjṭṭḍḍttddppbb";
+		if (mb_strlen($strWord, "UTF-8") > 2) {
+			$left2 = mb_substr($strWord, 0, 2, "UTF-8");
+			if (mb_strpos($doubleword, $left2, 0, "UTF-8") !== false) {
+				$strWord = mb_substr($strWord, 1, null, "UTF-8");
+			}
+		}
+
+		$len = mb_strlen($strWord, "UTF-8");
+		if ($len > 2) {
+			if ($forward) {
+				#正向切
+				$this->log("正向切");
+				for ($i = $len; $i > 1; $i--) {
+					foreach ($this->sandhi as $key => $row) {
+						//应用连音规则切分单词
+						if ($sandhi_advance == false && $row["advance"] == true) {
+							//continue;
+						}
+						if (mb_substr($strWord, $i - $row["len"], $row["len"], "UTF-8") == $row["c"]) {
+							$str1 = mb_substr($strWord, 0, $i - $row["len"], "UTF-8") . $row["a"];
+							$str2 = $row["b"] . mb_substr($strWord, $i, null, "UTF-8");
+							$confidence = $this->isExsit($str1, $adj_len)*$row["cf"];
+							if ($confidence > $c_threshhold) {
+								//信心指数大于预设的阈值,插入
+								array_push($output, array($str1, $str2, $confidence, $row["adj_len"]));
+								$this->log("插入结构数组:{$str1} 剩余{$str2} 应用:{$row["a"]}-{$row["b"]}-{$row["c"]}");
+								if ($express) {
+									break;
+								}
+							}
+						}
+					}
+				}
+			} else {
+				#反向切
+				for ($i = 1; $i < $len - 1; $i++) {
+					foreach ($this->sandhi as $key => $row) {
+						if ($sandhi_advance == false && $row["advance"] == true) {
+							//continue;
+						}
+						if (mb_substr($strWord, $i, $row["len"], "UTF-8") == $row["c"]) {
+							$str1 = mb_substr($strWord, 0, $i, "UTF-8") . $row["a"];
+							$str2 = $row["b"] . mb_substr($strWord, $i + $row["len"], null, "UTF-8");
+							$confidence = $this->isExsit($str2, $adj_len)*$row["cf"];
+							if ($confidence > $c_threshhold) {
+								array_push($output, array($str2, $str1, $confidence, $row["adj_len"]));
+								$this->log("将此次结果插入结果数组:剩余={$str2}");
+								if ($express) {
+									break;
+								}
+							}
+						}
+					}
+				}
+			}
+		}
+		
+		$word = "";
+		$this->log("结果数组个数:".count($output));
+		if (count($output) > 0) {
+			foreach ($output as $part) {
+				$checked = $part[0];
+				$remainder = $part[1];
+				$this->log("剩余部分:{$remainder}");
+				$this->path[$deep][0] = $checked;
+				$this->path[$deep][1] = $part[2];
+
+				if (empty($remainder)) {
+					#全切完了
+					$this->log("全切完了");
+					$word = "";
+					$cf = 1.0;
+					for ($i = 0; $i < $deep; $i++) {
+						$word .= $this->path[$i][0];
+						if ($this->isDebug) {
+							$word .= "(" . $this->path[$i][1] . ")";
+						}
+						$word .= "+";
+						$cf = $cf * $this->path[$i][1];
+					}
+
+					if ($this->isDebug) {
+						$word .= $checked . "({$part[2]})";
+					} else {
+						$word .= $checked;
+					}
+					$cf = $cf * $part[2];
+					if ($cf > $w_threshhold) {
+						if ($forward == true) {
+							$this->result[$word] = $cf;
+							return 0;
+						} else {
+							$reverseWord = $this->word_reverse($word);
+							$this->result[$reverseWord] = $cf;
+							return 0;
+						}
+					}
+				} else {
+					#计算当前信心指数
+					$cf = 1.0;
+					for ($i = 0; $i < $deep; $i++) {
+						$cf = $cf * $this->path[$i][1];
+					}
+					$this->log("计算当前信心指数:{$cf}");
+					if($cf<$w_threshhold){
+						$this->log("信心指数过低,提前返回 {$cf}");
+						return 0;
+					}else{
+						#接着切
+						$this->log("接着切:{$remainder}");
+						$this->split($remainder, ($deep + 1), $express, $adj_len, $c_threshhold, $w_threshhold, $forward, $sandhi_advance);					
+					}
+				}
+			}
+		}else {
+			#尾巴查不到了
+			$this->log("尾巴查不到了");
+			$word = "";
+			$cf = 1.0;
+			for ($i = 0; $i < $deep; $i++) {
+				$word .= $this->path[$i][0];
+				if ($this->isDebug) {
+					$word .= "(" . $this->path[$i][1] . ")";
+				}
+				$word .= "+";
+				$cf = $cf * $this->path[$i][1];
+			}
+			
+			$len = pow(mb_strlen($strWord, "UTF-8"), 3);
+			
+			if ($forward) {
+				$cf =(1-$cf) * $len / ($len + 150);
+			} else {
+				$cf =(1-$cf) * $len / ($len + 5);
+			}
+			
+			if ($this->isDebug) {
+				$word = $word.$strWord . "(0)";
+			} else {
+				$word = $word .$strWord;
+			}
+
+			if ($cf > $w_threshhold) {
+				if ($forward == true) {
+					$this->result[$word] = $cf;
+					return 0;
+				} 
+				else {
+					$reverseWord = $this->word_reverse($word);
+					$this->result[$reverseWord] = $cf;
+					return 0;
+				}
+			}
+		}
+
+	}
+
+	/**
+	 * 颠倒词序
+	 */
+	public function word_reverse($word)
+	{
+		$reverse = array();
+		$newword = explode("+", $word);
+		$len = count($newword);
+		if ($len > 0) {
+			for ($i = $len - 1; $i >= 0; $i--) {
+				# code...
+				$reverse[] = $newword[$i];
+			}
+			$output = implode("+", $reverse);
+			return $output;
+		} else {
+			return $word;
+		}
+	}
+
+	/**
+	 * 拆分后的处理
+	 */
+	public function split2($word){
+		$input = explode("+",$word);
+		$newword=array();
+		foreach ($input as $value) {
+			//去掉带小括号的调试信息
+			$word = strstr($value,"(",true);
+			if($word == false){
+				$word = $value;
+			}
+			if(mb_strlen($word,"UTF-8")>4){
+				# 先看有没有中文意思
+				//Log::info("先看有没有中文意思");
+				if(UserDict::where('word',$word)->where('mean','<>','')->where('language','<>','my')->exists()){
+					$newword[]=$word;
+				}else{
+					//Log::info("如果没有查巴缅替换拆分");
+					#如果没有查巴缅替换拆分
+					if(UserDict::where('word',$word)->where('dict_id','61f23efb-b526-4a8e-999e-076965034e60')->exists()){
+						$pmPart = explode("+",UserDict::where('word',$word)->where('dict_id','61f23efb-b526-4a8e-999e-076965034e60')->value('factors')) ;
+						foreach ($pmPart as  $pm) {
+							# code...
+							$newword[]=$pm;
+						}
+					}
+					else{
+						//Log::info("如果没有查规则变形");
+						#如果没有查规则变形
+						if(UserDict::where('word',$word)->where('source','_SYS_REGULAR_')->exists()){
+							$rglPart = explode("+",UserDict::where('word',$word)->where('source','_SYS_REGULAR_')->value('factors')) ;
+							#看巴缅有没有第一部分
+							//Log::info("看巴缅有没有第一部分");
+							if(UserDict::where('word',$rglPart[0])->where('dict_id','61f23efb-b526-4a8e-999e-076965034e60')->exists()){
+								$pmPart = explode("+",UserDict::where('word',$rglPart[0])->where('dict_id','61f23efb-b526-4a8e-999e-076965034e60')->value('factors')) ;
+								foreach ($pmPart as  $pm) {
+									# code...
+									$newword[]=$pm;
+								}
+							}
+							else{
+								#没有
+								$newword[]=$rglPart[0];
+							}
+							$newword[]=$rglPart[1];
+						}
+						else{
+							#还没有就认命了
+							//Log::info("还没有就认命了");
+							$newword[]=$word;
+						}
+					}
+				}
+			}
+			else{
+				$newword[]=$word;
+			}
+
+		}
+		return implode("+",$newword);
+	}
+
+
+	/**
+	 * 预处理连音词
+	 */
+	public function splitSandhi($word){
+		$newWord = "";
+		$firstWord=$word;
+		do {
+			$isFound = false;
+			foreach ($this->sandhi2 as $key => $sandhi) {
+				# code...
+				$len = $sandhi["len"];
+				$end = mb_substr($firstWord, 0 - $len, null, "UTF-8");
+				if ($end == $sandhi["c"]) {
+					$word1 = mb_substr($firstWord, 0, mb_strlen($firstWord, "UTF-8") - $len, "UTF-8") .$sandhi["a"];
+					$word2 = $sandhi["b"];
+					$newWord = $word2 . "-" .$newWord;
+					$firstWord = $word1;
+					$isFound=true;
+					break;
+				}
+			}
+		} while ($isFound);
+		$newWord = $firstWord . "-" .$newWord;
+		return mb_substr($newWord,0,-1, "UTF-8");
+	}
+
+	public function splitA($word){
+		$output = array();
+		//预处理连音词
+		$word1 = $this->splitSandhi($word);
+		# 处理双元音
+		Log::info("处理双元音");
+		$arrword = $this->splitDiphthong($word1);
+		if (count($arrword) > 1) {
+			array_push($output,['word'=>$word,'type'=>'.un.','grammar'=>'','parent'=>'','factors'=>implode("+", $arrword),'confidence'=>0.9999]);
+		}
+
+		foreach ($arrword as $oneword) {
+			$this->result = array(); //清空递归程序的输出容器
+			
+			if(mb_strlen($oneword)>35){
+				//长词使用快速切分 正向切分 不使用少见sandi规则
+				$this->split($oneword, 0, true, 0.8, 0.9, 0, true, false);
+				$min_result = 1;
+			}else{
+				$this->split($oneword, 0, false, 0.8, 0.9, 0, true, false);
+				$min_result=3;
+			}
+			Log::info("正向切分结束 结果数量".count($this->result));
+			
+			if(count($this->result)<$min_result){
+				//有效结果过少
+				$this->split($oneword, 0, false, 0.2, 0.8, 0, true, true);
+				Log::info("有效结果过少 再次正切".count($this->result) );
+				if(count($this->result)<2){
+					$this->split($oneword, 0, false, 0.2, 0.8, 0, false, true);
+					Log::info("有效结果过少 再次反切:结果数量" . count($this->result));
+				}
+			}
+
+			Log::info("{$oneword}:" . count($this->result));
+			if (count($this->result) > 0) {
+				arsort($this->result); //按信心指数排序
+				$iCount = 0;
+				foreach ($this->result as $row => $value) {
+					$factors = $row;
+					if(strpos($row,'[') !== FALSE){
+						$type = '.un.';
+						$factors = \str_replace(['+[ṃ]+','[ṃ]+'],'ṃ+',$row);
+					}else{
+						$type = '.cp.';
+					}
+					$newword = ['word'=>$oneword,'type'=>$type,'grammar'=>'','parent'=>'','factors'=>$factors,'confidence'=>$value];
+					array_push($output,$newword);
+
+					if($iCount==0){
+						//对于最优结果进行处理 找到base
+						$wordWithType = ['word'=>$oneword,'type'=>'','grammar'=>'','parent'=>'','factors'=>$factors,'confidence'=>$value];
+						
+						Log::info("查找base");
+						
+						$factors = explode('+',$row);
+						$endOfFactor = end($factors);
+
+						Log::info("结尾词:".$endOfFactor);
+						$caseman = new CaseMan();
+						//猜测单词的base
+						$parents = $caseman->WordToBase($oneword,1,false);
+						//找到结尾单词的base
+						$end_parents = $caseman->WordToBase($endOfFactor);
+
+						if(count($parents)>0){
+							foreach ($parents as $base=>$case) {
+								# code...
+								if(count($end_parents)>0){
+									foreach ($end_parents as $base2=>$case2) {
+										if(\mb_substr($base2,-2)===\mb_substr($base,-2)){
+											Log::info("{$base} ok");
+											foreach ($case as $value) {
+												# code...
+												foreach ($case2 as $value2) {
+													//验证语法信息是否正确
+													if($value['type'] == $value2['type'] && $value['grammar'] == $value2['grammar']){
+														$wordWithType['type'] = $value['type'];
+														$wordWithType['grammar'] = $value['grammar'];
+														$wordWithType['factors'] = $value['factors'];
+														$wordWithType['parent'] = $base;
+														$wordWithType['confidence'] = $value2['confidence'];
+														Log::info("word:{$wordWithType['word']} ; type:{$wordWithType['type']}; grammar:{$wordWithType['grammar']};parent:{$wordWithType['parent']}");
+														array_push($output,$wordWithType);	
+													}
+												}
+											}
+										}
+									}
+								}else{
+									foreach ($case as $value) {
+										$wordWithType['type'] = $value['type'];
+										$wordWithType['grammar'] = $value['grammar'];
+										$wordWithType['factors'] = $value['factors'];
+										$wordWithType['parent'] = $base;
+										$wordWithType['confidence'] = 0.1;
+										array_push($output,$wordWithType);	
+									}
+								}
+							}
+						}
+					}
+					//后处理 进一步切分没有意思的长词
+					Log::info("后处理 进一步切分没有意思的长词");
+					$new = $this->split2($row);
+					if($new !== $row){
+						$newword['factors'] = $new;
+						array_push($output,$newword);
+						#再处理一次
+						$new2 = $this->split2($new);
+						if($new2!==$new){
+							$newword['factors'] = $new2;
+							array_push($output,$newword);
+						}
+					}
+					$iCount++;
+					if ($iCount > $this->MAX_RESULT2) {
+						break;
+					}
+				}
+			} else {
+				Log::error("{$oneword} 切分失败");
+			}
+		}
+		return $output;
+	}
+
+	public function setting($param=null){
+
+	}
+
+	public function getResult(){
+		return $this->result;
+	}
+
+	private function log($message){
+		if ($this->isDebug) {
+			Log::info($message);
+		}
+	}
+
+	private function pushResult($word,$cf){
+		array_push($this->result,array($word=>$cf));
+	}
+}
+

+ 3147 - 0
app/Tools/ending.csv

@@ -0,0 +1,3147 @@
+a","b","c","","d","","e
+[,"ti","tuṃ",".v:ind.",".inf.","0.99",],
+[,"ati","ituṃ",".v:ind.",".inf.","0.99",],
+[,"ati","itvā",".v:ind.",".abs.","0.99",],
+[,"ati","atvā",".v:ind.",".abs.","0.99",],
+[,"ti","tvā",".v:ind.",".abs.","0.99",],
+[,"ant","antā",".ti.",".m.$.pl.$.nom.","0.99",],
+[,"ant","antā",".ti.",".m.$.pl.$.voc.","0.3",],
+[,"ant","antā",".ti.",".m.$.sg.$.abl.","0.99",],
+[,"ant","anta",".ti.",".m.$.sg.$.voc.","0.3",],
+[,"ant","antā",".ti.",".m.$.sg.$.voc.","0.3",],
+[,"ant","anta",".ti.",".nt.$.pl.$.acc.","0.99",],
+[,"ant","antā",".ti.",".nt.$.pl.$.acc.","0.99",],
+[,"ant","anta",".ti.",".nt.$.pl.$.nom.","0.99",],
+[,"ant","antā",".ti.",".nt.$.pl.$.nom.","0.99",],
+[,"ant","anta",".ti.",".nt.$.pl.$.voc.","0.3",],
+[,"ant","antā",".ti.",".nt.$.pl.$.voc.","0.3",],
+[,"ant","antā",".ti.",".nt.$.sg.$.abl.","0.99",],
+[,"ant","anta",".ti.",".nt.$.sg.$.voc.","0.3",],
+[,"ant","antā",".ti.",".nt.$.sg.$.voc.","0.3",],
+[,"ant","antaṃ",".ti.",".m.$.sg.$.acc.","0.99",],
+[,"ant","antaṃ",".ti.",".nt.$.sg.$.acc.","0.99",],
+[,"ant","antaṃ",".ti.",".nt.$.sg.$.nom.","0.99",],
+[,"ant","antaṃ",".ti.",".nt.$.sg.$.nom.","0.99",],
+[,"ant","antaṃ",".ti.",".m.$.sg.$.acc.","0.99",],
+[,"ant","antaṃ",".ti.",".nt.$.sg.$.acc.","0.99",],
+[,"ant","antamhā",".ti.",".m.$.sg.$.abl.","0.99",],
+[,"ant","antamhā",".ti.",".nt.$.sg.$.abl.","0.99",],
+[,"ant","antamhā",".ti.",".m.$.sg.$.abl.","0.99",],
+[,"ant","antamhā",".ti.",".nt.$.sg.$.abl.","0.99",],
+[,"ant","antamhi",".ti.",".m.$.sg.$.loc.","0.99",],
+[,"ant","antamhi",".ti.",".nt.$.sg.$.loc.","0.99",],
+[,"ant","antamhi",".ti.",".m.$.sg.$.loc.","0.99",],
+[,"ant","antamhi",".ti.",".nt.$.sg.$.loc.","0.99",],
+[,"ant","antānaṃ",".ti.",".m.$.pl.$.dat.","0.99",],
+[,"ant","antānaṃ",".ti.",".m.$.pl.$.gen.","0.99",],
+[,"ant","antānaṃ",".ti.",".nt.$.pl.$.dat.","0.99",],
+[,"ant","antānaṃ",".ti.",".nt.$.pl.$.gen.","0.99",],
+[,"ant","antānaṃ",".ti.",".nt.$.pl.$.dat.","0.99",],
+[,"ant","antānaṃ",".ti.",".nt.$.pl.$.gen.","0.99",],
+[,"ant","antani",".ti.",".nt.$.pl.$.acc.","0.99",],
+[,"ant","antāni",".ti.",".nt.$.pl.$.acc.","0.99",],
+[,"ant","antani",".ti.",".nt.$.pl.$.nom.","0.99",],
+[,"ant","antāni",".ti.",".nt.$.pl.$.nom.","0.99",],
+[,"ant","antani",".ti.",".nt.$.pl.$.voc.","0.3",],
+[,"ant","antāni",".ti.",".nt.$.pl.$.voc.","0.3",],
+[,"ant","antasmā",".ti.",".m.$.sg.$.abl.","0.99",],
+[,"ant","antasmā",".ti.",".nt.$.sg.$.abl.","0.99",],
+[,"ant","antasmā",".ti.",".m.$.sg.$.abl.","0.99",],
+[,"ant","antasmā",".ti.",".nt.$.sg.$.abl.","0.99",],
+[,"ant","antasmiṃ",".ti.",".m.$.sg.$.loc.","0.99",],
+[,"ant","antasmiṃ",".ti.",".nt.$.sg.$.loc.","0.99",],
+[,"ant","antasmiṃ",".ti.",".m.$.sg.$.loc.","0.99",],
+[,"ant","antasmiṃ",".ti.",".nt.$.sg.$.loc.","0.99",],
+[,"ant","antassa",".ti.",".m.$.sg.$.dat.","0.99",],
+[,"ant","antassa",".ti.",".m.$.sg.$.gen.","0.99",],
+[,"ant","antassa",".ti.",".nt.$.sg.$.dat.","0.99",],
+[,"ant","antassa",".ti.",".nt.$.sg.$.gen.","0.99",],
+[,"ant","antassa",".ti.",".m.$.sg.$.dat.","0.99",],
+[,"ant","antassa",".ti.",".m.$.sg.$.gen.","0.99",],
+[,"ant","antassa",".ti.",".nt.$.sg.$.dat.","0.99",],
+[,"ant","antassa",".ti.",".nt.$.sg.$.gen.","0.99",],
+[,"ant","ante",".ti.",".m.$.pl.$.acc.","0.99",],
+[,"ant","ante",".ti.",".m.$.sg.$.loc.","0.99",],
+[,"ant","ante",".ti.",".nt.$.pl.$.acc.","0.99",],
+[,"ant","ante",".ti.",".nt.$.sg.$.loc.","0.99",],
+[,"ant","antebhi",".ti.",".m.$.pl.$.abl.","0.99",],
+[,"ant","antebhi",".ti.",".m.$.pl.$.inst.","0.99",],
+[,"ant","antebhi",".ti.",".nt.$.pl.$.abl.","0.99",],
+[,"ant","antebhi",".ti.",".nt.$.pl.$.inst.","0.99",],
+[,"ant","antehi",".ti.",".m.$.pl.$.abl.","0.99",],
+[,"ant","antehi",".ti.",".m.$.pl.$.inst.","0.99",],
+[,"ant","antehi",".ti.",".nt.$.pl.$.abl.","0.99",],
+[,"ant","antehi",".ti.",".nt.$.pl.$.inst.","0.99",],
+[,"ant","antesu",".ti.",".m.$.pl.$.loc.","0.99",],
+[,"ant","antesu",".ti.",".nt.$.pl.$.loc.","0.99",],
+[,"ant","antesu",".ti.",".nt.$.pl.$.loc.","0.99",],
+[,"ant","antī",".ti.",".f.$.pl.$.acc.","0.99",],
+[,"ant","antī",".ti.",".f.$.pl.$.nom.","0.99",],
+[,"ant","antī",".ti.",".f.$.pl.$.voc.","0.3",],
+[,"ant","antī",".ti.",".f.$.sg.$.nom.","0.99",],
+[,"ant","antī",".ti.",".f.$.sg.$.voc.","0.3",],
+[,"ant","antībhi",".ti.",".f.$.pl.$.abl.","0.99",],
+[,"ant","antībhi",".ti.",".f.$.pl.$.inst.","0.99",],
+[,"ant","antīhi",".ti.",".f.$.pl.$.abl.","0.99",],
+[,"ant","antīhi",".ti.",".f.$.pl.$.inst.","0.99",],
+[,"ant","antiṃ",".ti.",".f.$.sg.$.acc.","0.99",],
+[,"ant","antīnaṃ",".ti.",".f.$.pl.$.dat.","0.99",],
+[,"ant","antīnaṃ",".ti.",".f.$.pl.$.gen.","0.99",],
+[,"ant","antīsu",".ti.",".f.$.pl.$.loc.","0.99",],
+[,"ant","antiyā",".ti.",".f.$.sg.$.abl.","0.99",],
+[,"ant","antiyā",".ti.",".f.$.sg.$.dat.","0.99",],
+[,"ant","antiyā",".ti.",".f.$.sg.$.gen.","0.99",],
+[,"ant","antiyā",".ti.",".f.$.sg.$.inst.","0.99",],
+[,"ant","antiyā",".ti.",".f.$.sg.$.loc.","0.99",],
+[,"ant","antiyaṃ",".ti.",".f.$.sg.$.loc.","0.99",],
+[,"ant","antiyo",".ti.",".f.$.pl.$.acc.","0.99",],
+[,"ant","antiyo",".ti.",".f.$.pl.$.nom.","0.99",],
+[,"ant","antiyo",".ti.",".f.$.pl.$.voc.","0.3",],
+[,"ant","anto",".ti.",".m.$.pl.$.nom.","0.99",],
+[,"ant","anto",".ti.",".m.$.pl.$.voc.","0.3",],
+[,"ant","anto",".ti.",".m.$.sg.$.nom.","0.99",],
+[,"ant","anto",".ti.",".nt.$.pl.$.nom.","0.99",],
+[,"ant","anto",".ti.",".nt.$.pl.$.voc.","0.3",],
+[,"ant","anto",".ti.",".nt.$.sg.$.nom.","0.99",],
+[,"ant","atā",".ti.",".m.$.sg.$.abl.","0.99",],
+[,"ant","atā",".ti.",".m.$.sg.$.inst.","0.99",],
+[,"ant","atā",".ti.",".nt.$.sg.$.abl.","0.99",],
+[,"ant","atā",".ti.",".nt.$.sg.$.inst.","0.99",],
+[,"ant","atā",".ti.",".m.$.sg.$.abl.","0.99",],
+[,"ant","atā",".ti.",".m.$.sg.$.inst.","0.99",],
+[,"ant","atā",".ti.",".nt.$.sg.$.abl.","0.99",],
+[,"ant","atā",".ti.",".nt.$.sg.$.inst.","0.99",],
+[,"ant","ataṃ",".ti.",".m.$.pl.$.dat.","0.99",],
+[,"ant","ataṃ",".ti.",".m.$.pl.$.gen.","0.99",],
+[,"ant","ataṃ",".ti.",".nt.$.pl.$.dat.","0.99",],
+[,"ant","ataṃ",".ti.",".nt.$.pl.$.gen.","0.99",],
+[,"ant","ataṃ",".ti.",".nt.$.pl.$.dat.","0.99",],
+[,"ant","ataṃ",".ti.",".nt.$.pl.$.gen.","0.99",],
+[,"ant","atena",".ti.",".m.$.sg.$.inst.","0.99",],
+[,"ant","atena",".ti.",".nt.$.sg.$.inst.","0.99",],
+[,"ant","atena",".ti.",".m.$.sg.$.inst.","0.99",],
+[,"ant","atena",".ti.",".nt.$.sg.$.inst.","0.99",],
+[,"ant","atī",".ti.",".f.$.pl.$.acc.","0.99",],
+[,"ant","atī",".ti.",".f.$.pl.$.nom.","0.99",],
+[,"ant","atī",".ti.",".f.$.pl.$.voc.","0.3",],
+[,"ant","atī",".ti.",".f.$.sg.$.nom.","0.99",],
+[,"ant","atī",".ti.",".f.$.sg.$.voc.","0.3",],
+[,"ant","ati",".ti.",".m.$.sg.$.loc.","0.99",],
+[,"ant","ati",".ti.",".nt.$.sg.$.loc.","0.99",],
+[,"ant","ati",".ti.",".m.$.sg.$.loc.","0.99",],
+[,"ant","ati",".ti.",".nt.$.sg.$.loc.","0.99",],
+[,"ant","atībhi",".ti.",".f.$.pl.$.abl.","0.99",],
+[,"ant","atībhi",".ti.",".f.$.pl.$.inst.","0.99",],
+[,"ant","atīhi",".ti.",".f.$.pl.$.abl.","0.99",],
+[,"ant","atīhi",".ti.",".f.$.pl.$.inst.","0.99",],
+[,"ant","atiṃ",".ti.",".f.$.sg.$.acc.","0.99",],
+[,"ant","atīnaṃ",".ti.",".f.$.pl.$.dat.","0.99",],
+[,"ant","atīnaṃ",".ti.",".f.$.pl.$.gen.","0.99",],
+[,"ant","atīsu",".ti.",".f.$.pl.$.loc.","0.99",],
+[,"ant","atiyā",".ti.",".f.$.sg.$.abl.","0.99",],
+[,"ant","atiyā",".ti.",".f.$.sg.$.dat.","0.99",],
+[,"ant","atiyā",".ti.",".f.$.sg.$.gen.","0.99",],
+[,"ant","atiyā",".ti.",".f.$.sg.$.inst.","0.99",],
+[,"ant","atiyā",".ti.",".f.$.sg.$.loc.","0.99",],
+[,"ant","atiyaṃ",".ti.",".f.$.sg.$.loc.","0.99",],
+[,"ant","atiyo",".ti.",".f.$.pl.$.acc.","0.99",],
+[,"ant","atiyo",".ti.",".f.$.pl.$.nom.","0.99",],
+[,"ant","atiyo",".ti.",".f.$.pl.$.voc.","0.3",],
+[,"ant","ato",".ti.",".m.$.sg.$.dat.","0.99",],
+[,"ant","ato",".ti.",".m.$.sg.$.gen.","0.99",],
+[,"ant","ato",".ti.",".nt.$.sg.$.dat.","0.99",],
+[,"ant","ato",".ti.",".nt.$.sg.$.gen.","0.99",],
+[,"ant","ato",".ti.",".m.$.sg.$.dat.","0.99",],
+[,"ant","ato",".ti.",".m.$.sg.$.gen.","0.99",],
+[,"ant","ato",".ti.",".nt.$.sg.$.dat.","0.99",],
+[,"ant","ato",".ti.",".nt.$.sg.$.gen.","0.99",],
+[,"anta","antā",".ti.",".m.$.pl.$.nom.","0.99",],
+[,"anta","antā",".ti.",".m.$.pl.$.voc.","0.3",],
+[,"anta","antā",".ti.",".m.$.sg.$.abl.","0.99",],
+[,"anta","anta",".ti.",".m.$.sg.$.voc.","0.3",],
+[,"anta","antā",".ti.",".m.$.sg.$.voc.","0.3",],
+[,"anta","anta",".ti.",".nt.$.pl.$.acc.","0.99",],
+[,"anta","antā",".ti.",".nt.$.pl.$.acc.","0.99",],
+[,"anta","anta",".ti.",".nt.$.pl.$.nom.","0.99",],
+[,"anta","antā",".ti.",".nt.$.pl.$.nom.","0.99",],
+[,"anta","anta",".ti.",".nt.$.pl.$.voc.","0.3",],
+[,"anta","antā",".ti.",".nt.$.pl.$.voc.","0.3",],
+[,"anta","antā",".ti.",".nt.$.sg.$.abl.","0.99",],
+[,"anta","anta",".ti.",".nt.$.sg.$.voc.","0.3",],
+[,"anta","antā",".ti.",".nt.$.sg.$.voc.","0.3",],
+[,"anta","antaṃ",".ti.",".m.$.sg.$.acc.","0.99",],
+[,"anta","antaṃ",".ti.",".nt.$.sg.$.acc.","0.99",],
+[,"anta","antaṃ",".ti.",".nt.$.sg.$.nom.","0.99",],
+[,"anta","antaṃ",".ti.",".nt.$.sg.$.nom.","0.99",],
+[,"anta","antaṃ",".ti.",".m.$.sg.$.acc.","0.99",],
+[,"anta","antaṃ",".ti.",".nt.$.sg.$.acc.","0.99",],
+[,"anta","antamhā",".ti.",".m.$.sg.$.abl.","0.99",],
+[,"anta","antamhā",".ti.",".nt.$.sg.$.abl.","0.99",],
+[,"anta","antamhā",".ti.",".m.$.sg.$.abl.","0.99",],
+[,"anta","antamhā",".ti.",".nt.$.sg.$.abl.","0.99",],
+[,"anta","antamhi",".ti.",".m.$.sg.$.loc.","0.99",],
+[,"anta","antamhi",".ti.",".nt.$.sg.$.loc.","0.99",],
+[,"anta","antamhi",".ti.",".m.$.sg.$.loc.","0.99",],
+[,"anta","antamhi",".ti.",".nt.$.sg.$.loc.","0.99",],
+[,"anta","antānaṃ",".ti.",".m.$.pl.$.dat.","0.99",],
+[,"anta","antānaṃ",".ti.",".m.$.pl.$.gen.","0.99",],
+[,"anta","antānaṃ",".ti.",".nt.$.pl.$.dat.","0.99",],
+[,"anta","antānaṃ",".ti.",".nt.$.pl.$.gen.","0.99",],
+[,"anta","antānaṃ",".ti.",".nt.$.pl.$.dat.","0.99",],
+[,"anta","antānaṃ",".ti.",".nt.$.pl.$.gen.","0.99",],
+[,"anta","antani",".ti.",".nt.$.pl.$.acc.","0.99",],
+[,"anta","antāni",".ti.",".nt.$.pl.$.acc.","0.99",],
+[,"anta","antani",".ti.",".nt.$.pl.$.nom.","0.99",],
+[,"anta","antāni",".ti.",".nt.$.pl.$.nom.","0.99",],
+[,"anta","antani",".ti.",".nt.$.pl.$.voc.","0.3",],
+[,"anta","antāni",".ti.",".nt.$.pl.$.voc.","0.3",],
+[,"anta","antasmā",".ti.",".m.$.sg.$.abl.","0.99",],
+[,"anta","antasmā",".ti.",".nt.$.sg.$.abl.","0.99",],
+[,"anta","antasmā",".ti.",".m.$.sg.$.abl.","0.99",],
+[,"anta","antasmā",".ti.",".nt.$.sg.$.abl.","0.99",],
+[,"anta","antasmiṃ",".ti.",".m.$.sg.$.loc.","0.99",],
+[,"anta","antasmiṃ",".ti.",".nt.$.sg.$.loc.","0.99",],
+[,"anta","antasmiṃ",".ti.",".m.$.sg.$.loc.","0.99",],
+[,"anta","antasmiṃ",".ti.",".nt.$.sg.$.loc.","0.99",],
+[,"anta","antassa",".ti.",".m.$.sg.$.dat.","0.99",],
+[,"anta","antassa",".ti.",".m.$.sg.$.gen.","0.99",],
+[,"anta","antassa",".ti.",".nt.$.sg.$.dat.","0.99",],
+[,"anta","antassa",".ti.",".nt.$.sg.$.gen.","0.99",],
+[,"anta","antassa",".ti.",".m.$.sg.$.dat.","0.99",],
+[,"anta","antassa",".ti.",".m.$.sg.$.gen.","0.99",],
+[,"anta","antassa",".ti.",".nt.$.sg.$.dat.","0.99",],
+[,"anta","antassa",".ti.",".nt.$.sg.$.gen.","0.99",],
+[,"anta","ante",".ti.",".m.$.pl.$.acc.","0.99",],
+[,"anta","ante",".ti.",".m.$.sg.$.loc.","0.99",],
+[,"anta","ante",".ti.",".nt.$.pl.$.acc.","0.99",],
+[,"anta","ante",".ti.",".nt.$.sg.$.loc.","0.99",],
+[,"anta","antebhi",".ti.",".m.$.pl.$.abl.","0.99",],
+[,"anta","antebhi",".ti.",".m.$.pl.$.inst.","0.99",],
+[,"anta","antebhi",".ti.",".nt.$.pl.$.abl.","0.99",],
+[,"anta","antebhi",".ti.",".nt.$.pl.$.inst.","0.99",],
+[,"anta","antehi",".ti.",".m.$.pl.$.abl.","0.99",],
+[,"anta","antehi",".ti.",".m.$.pl.$.inst.","0.99",],
+[,"anta","antehi",".ti.",".nt.$.pl.$.abl.","0.99",],
+[,"anta","antehi",".ti.",".nt.$.pl.$.inst.","0.99",],
+[,"anta","antesu",".ti.",".m.$.pl.$.loc.","0.99",],
+[,"anta","antesu",".ti.",".nt.$.pl.$.loc.","0.99",],
+[,"anta","antesu",".ti.",".nt.$.pl.$.loc.","0.99",],
+[,"anta","antī",".ti.",".f.$.pl.$.acc.","0.99",],
+[,"anta","antī",".ti.",".f.$.pl.$.nom.","0.99",],
+[,"anta","antī",".ti.",".f.$.pl.$.voc.","0.3",],
+[,"anta","antī",".ti.",".f.$.sg.$.nom.","0.99",],
+[,"anta","antī",".ti.",".f.$.sg.$.voc.","0.3",],
+[,"anta","antībhi",".ti.",".f.$.pl.$.abl.","0.99",],
+[,"anta","antībhi",".ti.",".f.$.pl.$.inst.","0.99",],
+[,"anta","antīhi",".ti.",".f.$.pl.$.abl.","0.99",],
+[,"anta","antīhi",".ti.",".f.$.pl.$.inst.","0.99",],
+[,"anta","antiṃ",".ti.",".f.$.sg.$.acc.","0.99",],
+[,"anta","antīnaṃ",".ti.",".f.$.pl.$.dat.","0.99",],
+[,"anta","antīnaṃ",".ti.",".f.$.pl.$.gen.","0.99",],
+[,"anta","antīsu",".ti.",".f.$.pl.$.loc.","0.99",],
+[,"anta","antiyā",".ti.",".f.$.sg.$.abl.","0.99",],
+[,"anta","antiyā",".ti.",".f.$.sg.$.dat.","0.99",],
+[,"anta","antiyā",".ti.",".f.$.sg.$.gen.","0.99",],
+[,"anta","antiyā",".ti.",".f.$.sg.$.inst.","0.99",],
+[,"anta","antiyā",".ti.",".f.$.sg.$.loc.","0.99",],
+[,"anta","antiyaṃ",".ti.",".f.$.sg.$.loc.","0.99",],
+[,"anta","antiyo",".ti.",".f.$.pl.$.acc.","0.99",],
+[,"anta","antiyo",".ti.",".f.$.pl.$.nom.","0.99",],
+[,"anta","antiyo",".ti.",".f.$.pl.$.voc.","0.3",],
+[,"anta","anto",".ti.",".m.$.pl.$.nom.","0.99",],
+[,"anta","anto",".ti.",".m.$.pl.$.voc.","0.3",],
+[,"anta","anto",".ti.",".m.$.sg.$.nom.","0.99",],
+[,"anta","anto",".ti.",".nt.$.pl.$.nom.","0.99",],
+[,"anta","anto",".ti.",".nt.$.pl.$.voc.","0.3",],
+[,"anta","anto",".ti.",".nt.$.sg.$.nom.","0.99",],
+[,"anta","atā",".ti.",".m.$.sg.$.abl.","0.99",],
+[,"anta","atā",".ti.",".m.$.sg.$.inst.","0.99",],
+[,"anta","atā",".ti.",".nt.$.sg.$.abl.","0.99",],
+[,"anta","atā",".ti.",".nt.$.sg.$.inst.","0.99",],
+[,"anta","atā",".ti.",".m.$.sg.$.abl.","0.99",],
+[,"anta","atā",".ti.",".m.$.sg.$.inst.","0.99",],
+[,"anta","atā",".ti.",".nt.$.sg.$.abl.","0.99",],
+[,"anta","atā",".ti.",".nt.$.sg.$.inst.","0.99",],
+[,"anta","ataṃ",".ti.",".m.$.pl.$.dat.","0.99",],
+[,"anta","ataṃ",".ti.",".m.$.pl.$.gen.","0.99",],
+[,"anta","ataṃ",".ti.",".nt.$.pl.$.dat.","0.99",],
+[,"anta","ataṃ",".ti.",".nt.$.pl.$.gen.","0.99",],
+[,"anta","ataṃ",".ti.",".nt.$.pl.$.dat.","0.99",],
+[,"anta","ataṃ",".ti.",".nt.$.pl.$.gen.","0.99",],
+[,"anta","atena",".ti.",".m.$.sg.$.inst.","0.99",],
+[,"anta","atena",".ti.",".nt.$.sg.$.inst.","0.99",],
+[,"anta","atena",".ti.",".m.$.sg.$.inst.","0.99",],
+[,"anta","atena",".ti.",".nt.$.sg.$.inst.","0.99",],
+[,"anta","atī",".ti.",".f.$.pl.$.acc.","0.99",],
+[,"anta","atī",".ti.",".f.$.pl.$.nom.","0.99",],
+[,"anta","atī",".ti.",".f.$.pl.$.voc.","0.3",],
+[,"anta","atī",".ti.",".f.$.sg.$.nom.","0.99",],
+[,"anta","atī",".ti.",".f.$.sg.$.voc.","0.3",],
+[,"anta","ati",".ti.",".m.$.sg.$.loc.","0.99",],
+[,"anta","ati",".ti.",".nt.$.sg.$.loc.","0.99",],
+[,"anta","ati",".ti.",".m.$.sg.$.loc.","0.99",],
+[,"anta","ati",".ti.",".nt.$.sg.$.loc.","0.99",],
+[,"anta","atībhi",".ti.",".f.$.pl.$.abl.","0.99",],
+[,"anta","atībhi",".ti.",".f.$.pl.$.inst.","0.99",],
+[,"anta","atīhi",".ti.",".f.$.pl.$.abl.","0.99",],
+[,"anta","atīhi",".ti.",".f.$.pl.$.inst.","0.99",],
+[,"anta","atiṃ",".ti.",".f.$.sg.$.acc.","0.99",],
+[,"anta","atīnaṃ",".ti.",".f.$.pl.$.dat.","0.99",],
+[,"anta","atīnaṃ",".ti.",".f.$.pl.$.gen.","0.99",],
+[,"anta","atīsu",".ti.",".f.$.pl.$.loc.","0.99",],
+[,"anta","atiyā",".ti.",".f.$.sg.$.abl.","0.99",],
+[,"anta","atiyā",".ti.",".f.$.sg.$.dat.","0.99",],
+[,"anta","atiyā",".ti.",".f.$.sg.$.gen.","0.99",],
+[,"anta","atiyā",".ti.",".f.$.sg.$.inst.","0.99",],
+[,"anta","atiyā",".ti.",".f.$.sg.$.loc.","0.99",],
+[,"anta","atiyaṃ",".ti.",".f.$.sg.$.loc.","0.99",],
+[,"anta","atiyo",".ti.",".f.$.pl.$.acc.","0.99",],
+[,"anta","atiyo",".ti.",".f.$.pl.$.nom.","0.99",],
+[,"anta","atiyo",".ti.",".f.$.pl.$.voc.","0.3",],
+[,"anta","ato",".ti.",".m.$.sg.$.dat.","0.99",],
+[,"anta","ato",".ti.",".m.$.sg.$.gen.","0.99",],
+[,"anta","ato",".ti.",".nt.$.sg.$.dat.","0.99",],
+[,"anta","ato",".ti.",".nt.$.sg.$.gen.","0.99",],
+[,"anta","ato",".ti.",".m.$.sg.$.dat.","0.99",],
+[,"anta","ato",".ti.",".m.$.sg.$.gen.","0.99",],
+[,"anta","ato",".ti.",".nt.$.sg.$.dat.","0.99",],
+[,"anta","ato",".ti.",".nt.$.sg.$.gen.","0.99",],
+[,"mant","mā",".ti.",".m.$.pl.$.nom.","0.99",],
+[,"mant","mā",".ti.",".m.$.pl.$.voc.","0.3",],
+[,"mant","mā",".ti.",".m.$.sg.$.nom.","0.99",],
+[,"mant","ma",".ti.",".m.$.sg.$.voc.","0.3",],
+[,"mant","mā",".ti.",".m.$.sg.$.voc.","0.3",],
+[,"mant","mā",".ti.",".nt.$.pl.$.nom.","0.99",],
+[,"mant","mā",".ti.",".nt.$.pl.$.voc.","0.3",],
+[,"mant","ma",".ti.",".nt.$.sg.$.voc.","0.3",],
+[,"mant","mā",".ti.",".nt.$.sg.$.voc.","0.3",],
+[,"mant","mā",".ti.",".m.$.sg.$.voc.","0.3",],
+[,"mant","mā",".ti.",".nt.$.sg.$.voc.","0.3",],
+[,"mant","maṃ",".ti.",".m.$.sg.$.acc.","0.99",],
+[,"mant","maṃ",".ti.",".nt.$.sg.$.acc.","0.99",],
+[,"mant","maṃ",".ti.",".nt.$.sg.$.nom.","0.99",],
+[,"mant","maṃ",".ti.",".m.$.sg.$.nom.","0.99",],
+[,"mant","maṃ",".ti.",".m.$.sg.$.voc.","0.3",],
+[,"mant","maṃ",".ti.",".nt.$.sg.$.voc.","0.3",],
+[,"mant","maṃ",".ti.",".m.$.sg.$.voc.","0.3",],
+[,"mant","maṃ",".ti.",".nt.$.sg.$.voc.","0.3",],
+[,"mant","mānaṃ",".ti.",".m.$.pl.$.dat.","0.99",],
+[,"mant","mānaṃ",".ti.",".m.$.pl.$.gen.","0.99",],
+[,"mant","mantā",".ti.",".m.$.pl.$.nom.","0.99",],
+[,"mant","mantā",".ti.",".m.$.pl.$.voc.","0.3",],
+[,"mant","mantā",".ti.",".m.$.sg.$.abl.","0.99",],
+[,"mant","manta",".ti.",".m.$.sg.$.voc.","0.3",],
+[,"mant","mantā",".ti.",".m.$.sg.$.voc.","0.3",],
+[,"mant","manta",".ti.",".nt.$.pl.$.acc.","0.99",],
+[,"mant","mantā",".ti.",".nt.$.pl.$.acc.","0.99",],
+[,"mant","manta",".ti.",".nt.$.pl.$.nom.","0.99",],
+[,"mant","mantā",".ti.",".nt.$.pl.$.nom.","0.99",],
+[,"mant","manta",".ti.",".nt.$.pl.$.voc.","0.3",],
+[,"mant","mantā",".ti.",".nt.$.pl.$.voc.","0.3",],
+[,"mant","mantā",".ti.",".nt.$.sg.$.abl.","0.99",],
+[,"mant","manta",".ti.",".nt.$.sg.$.voc.","0.3",],
+[,"mant","mantā",".ti.",".nt.$.sg.$.voc.","0.3",],
+[,"mant","mantaṃ",".ti.",".m.$.sg.$.acc.","0.99",],
+[,"mant","mantaṃ",".ti.",".nt.$.sg.$.acc.","0.99",],
+[,"mant","mantaṃ",".ti.",".nt.$.sg.$.nom.","0.99",],
+[,"mant","mantaṃ",".ti.",".nt.$.sg.$.nom.","0.99",],
+[,"mant","mantaṃ",".ti.",".m.$.sg.$.acc.","0.99",],
+[,"mant","mantaṃ",".ti.",".nt.$.sg.$.acc.","0.99",],
+[,"mant","mantamhā",".ti.",".m.$.sg.$.abl.","0.99",],
+[,"mant","mantamhā",".ti.",".nt.$.sg.$.abl.","0.99",],
+[,"mant","mantamhā",".ti.",".m.$.sg.$.abl.","0.99",],
+[,"mant","mantamhā",".ti.",".nt.$.sg.$.abl.","0.99",],
+[,"mant","mantamhi",".ti.",".m.$.sg.$.loc.","0.99",],
+[,"mant","mantamhi",".ti.",".nt.$.sg.$.loc.","0.99",],
+[,"mant","mantamhi",".ti.",".m.$.sg.$.loc.","0.99",],
+[,"mant","mantamhi",".ti.",".nt.$.sg.$.loc.","0.99",],
+[,"mant","mantānaṃ",".ti.",".m.$.pl.$.dat.","0.99",],
+[,"mant","mantānaṃ",".ti.",".m.$.pl.$.gen.","0.99",],
+[,"mant","mantānaṃ",".ti.",".nt.$.pl.$.dat.","0.99",],
+[,"mant","mantānaṃ",".ti.",".nt.$.pl.$.gen.","0.99",],
+[,"mant","mantānaṃ",".ti.",".nt.$.pl.$.dat.","0.99",],
+[,"mant","mantānaṃ",".ti.",".nt.$.pl.$.gen.","0.99",],
+[,"mant","mantani",".ti.",".nt.$.pl.$.acc.","0.99",],
+[,"mant","mantāni",".ti.",".nt.$.pl.$.acc.","0.99",],
+[,"mant","mantani",".ti.",".nt.$.pl.$.nom.","0.99",],
+[,"mant","mantāni",".ti.",".nt.$.pl.$.nom.","0.99",],
+[,"mant","mantani",".ti.",".nt.$.pl.$.voc.","0.3",],
+[,"mant","mantāni",".ti.",".nt.$.pl.$.voc.","0.3",],
+[,"mant","mantasmā",".ti.",".m.$.sg.$.abl.","0.99",],
+[,"mant","mantasmā",".ti.",".nt.$.sg.$.abl.","0.99",],
+[,"mant","mantasmā",".ti.",".m.$.sg.$.abl.","0.99",],
+[,"mant","mantasmā",".ti.",".nt.$.sg.$.abl.","0.99",],
+[,"mant","mantasmiṃ",".ti.",".m.$.sg.$.loc.","0.99",],
+[,"mant","mantasmiṃ",".ti.",".nt.$.sg.$.loc.","0.99",],
+[,"mant","mantasmiṃ",".ti.",".m.$.sg.$.loc.","0.99",],
+[,"mant","mantasmiṃ",".ti.",".nt.$.sg.$.loc.","0.99",],
+[,"mant","mantassa",".ti.",".m.$.sg.$.dat.","0.99",],
+[,"mant","mantassa",".ti.",".m.$.sg.$.gen.","0.99",],
+[,"mant","mantassa",".ti.",".nt.$.sg.$.dat.","0.99",],
+[,"mant","mantassa",".ti.",".nt.$.sg.$.gen.","0.99",],
+[,"mant","mantassa",".ti.",".m.$.sg.$.dat.","0.99",],
+[,"mant","mantassa",".ti.",".m.$.sg.$.gen.","0.99",],
+[,"mant","mantassa",".ti.",".nt.$.sg.$.dat.","0.99",],
+[,"mant","mantassa",".ti.",".nt.$.sg.$.gen.","0.99",],
+[,"mant","mante",".ti.",".m.$.pl.$.acc.","0.99",],
+[,"mant","mante",".ti.",".m.$.sg.$.loc.","0.99",],
+[,"mant","mante",".ti.",".nt.$.pl.$.acc.","0.99",],
+[,"mant","mante",".ti.",".nt.$.sg.$.loc.","0.99",],
+[,"mant","mantebhi",".ti.",".m.$.pl.$.abl.","0.99",],
+[,"mant","mantebhi",".ti.",".m.$.pl.$.inst.","0.99",],
+[,"mant","mantebhi",".ti.",".nt.$.pl.$.abl.","0.99",],
+[,"mant","mantebhi",".ti.",".nt.$.pl.$.inst.","0.99",],
+[,"mant","mantehi",".ti.",".m.$.pl.$.abl.","0.99",],
+[,"mant","mantehi",".ti.",".m.$.pl.$.inst.","0.99",],
+[,"mant","mantehi",".ti.",".nt.$.pl.$.abl.","0.99",],
+[,"mant","mantehi",".ti.",".nt.$.pl.$.inst.","0.99",],
+[,"mant","mantesu",".ti.",".m.$.pl.$.loc.","0.99",],
+[,"mant","mantesu",".ti.",".nt.$.pl.$.loc.","0.99",],
+[,"mant","mantesu",".ti.",".nt.$.pl.$.loc.","0.99",],
+[,"mant","mantī",".ti.",".f.$.pl.$.acc.","0.99",],
+[,"mant","mantī",".ti.",".f.$.pl.$.nom.","0.99",],
+[,"mant","mantī",".ti.",".f.$.pl.$.voc.","0.3",],
+[,"mant","mantī",".ti.",".f.$.sg.$.nom.","0.99",],
+[,"mant","mantī",".ti.",".f.$.sg.$.voc.","0.3",],
+[,"mant","mantībhi",".ti.",".f.$.pl.$.abl.","0.99",],
+[,"mant","mantībhi",".ti.",".f.$.pl.$.inst.","0.99",],
+[,"mant","mantīhi",".ti.",".f.$.pl.$.abl.","0.99",],
+[,"mant","mantīhi",".ti.",".f.$.pl.$.inst.","0.99",],
+[,"mant","mantiṃ",".ti.",".f.$.sg.$.acc.","0.99",],
+[,"mant","mantīnaṃ",".ti.",".f.$.pl.$.dat.","0.99",],
+[,"mant","mantīnaṃ",".ti.",".f.$.pl.$.gen.","0.99",],
+[,"mant","mantīsu",".ti.",".f.$.pl.$.loc.","0.99",],
+[,"mant","mantiyā",".ti.",".f.$.sg.$.abl.","0.99",],
+[,"mant","mantiyā",".ti.",".f.$.sg.$.dat.","0.99",],
+[,"mant","mantiyā",".ti.",".f.$.sg.$.gen.","0.99",],
+[,"mant","mantiyā",".ti.",".f.$.sg.$.inst.","0.99",],
+[,"mant","mantiyā",".ti.",".f.$.sg.$.loc.","0.99",],
+[,"mant","mantiyaṃ",".ti.",".f.$.sg.$.loc.","0.99",],
+[,"mant","mantiyo",".ti.",".f.$.pl.$.acc.","0.99",],
+[,"mant","mantiyo",".ti.",".f.$.pl.$.nom.","0.99",],
+[,"mant","mantiyo",".ti.",".f.$.pl.$.voc.","0.3",],
+[,"mant","manto",".ti.",".m.$.pl.$.nom.","0.99",],
+[,"mant","manto",".ti.",".m.$.pl.$.voc.","0.3",],
+[,"mant","manto",".ti.",".m.$.sg.$.nom.","0.99",],
+[,"mant","manto",".ti.",".nt.$.pl.$.nom.","0.99",],
+[,"mant","manto",".ti.",".nt.$.pl.$.voc.","0.3",],
+[,"mant","manto",".ti.",".nt.$.sg.$.nom.","0.99",],
+[,"mant","matā",".ti.",".m.$.sg.$.abl.","0.99",],
+[,"mant","matā",".ti.",".m.$.sg.$.inst.","0.99",],
+[,"mant","matā",".ti.",".nt.$.sg.$.abl.","0.99",],
+[,"mant","matā",".ti.",".nt.$.sg.$.inst.","0.99",],
+[,"mant","matā",".ti.",".m.$.sg.$.abl.","0.99",],
+[,"mant","matā",".ti.",".m.$.sg.$.inst.","0.99",],
+[,"mant","matā",".ti.",".nt.$.sg.$.abl.","0.99",],
+[,"mant","matā",".ti.",".nt.$.sg.$.inst.","0.99",],
+[,"mant","mataṃ",".ti.",".m.$.pl.$.dat.","0.99",],
+[,"mant","mataṃ",".ti.",".m.$.pl.$.gen.","0.99",],
+[,"mant","mataṃ",".ti.",".nt.$.pl.$.dat.","0.99",],
+[,"mant","mataṃ",".ti.",".nt.$.pl.$.gen.","0.99",],
+[,"mant","mataṃ",".ti.",".nt.$.pl.$.dat.","0.99",],
+[,"mant","mataṃ",".ti.",".nt.$.pl.$.gen.","0.99",],
+[,"mant","matena",".ti.",".m.$.sg.$.inst.","0.99",],
+[,"mant","matena",".ti.",".nt.$.sg.$.inst.","0.99",],
+[,"mant","matena",".ti.",".m.$.sg.$.inst.","0.99",],
+[,"mant","matena",".ti.",".nt.$.sg.$.inst.","0.99",],
+[,"mant","matī",".ti.",".f.$.pl.$.acc.","0.99",],
+[,"mant","matī",".ti.",".f.$.pl.$.nom.","0.99",],
+[,"mant","matī",".ti.",".f.$.pl.$.voc.","0.3",],
+[,"mant","matī",".ti.",".f.$.sg.$.nom.","0.99",],
+[,"mant","matī",".ti.",".f.$.sg.$.voc.","0.3",],
+[,"mant","mati",".ti.",".m.$.sg.$.loc.","0.99",],
+[,"mant","mati",".ti.",".nt.$.sg.$.loc.","0.99",],
+[,"mant","mati",".ti.",".m.$.sg.$.loc.","0.99",],
+[,"mant","mati",".ti.",".nt.$.sg.$.loc.","0.99",],
+[,"mant","matībhi",".ti.",".f.$.pl.$.abl.","0.99",],
+[,"mant","matībhi",".ti.",".f.$.pl.$.inst.","0.99",],
+[,"mant","matīhi",".ti.",".f.$.pl.$.abl.","0.99",],
+[,"mant","matīhi",".ti.",".f.$.pl.$.inst.","0.99",],
+[,"mant","matiṃ",".ti.",".f.$.sg.$.acc.","0.99",],
+[,"mant","matīnaṃ",".ti.",".f.$.pl.$.dat.","0.99",],
+[,"mant","matīnaṃ",".ti.",".f.$.pl.$.gen.","0.99",],
+[,"mant","matīsu",".ti.",".f.$.pl.$.loc.","0.99",],
+[,"mant","matiyā",".ti.",".f.$.sg.$.abl.","0.99",],
+[,"mant","matiyā",".ti.",".f.$.sg.$.dat.","0.99",],
+[,"mant","matiyā",".ti.",".f.$.sg.$.gen.","0.99",],
+[,"mant","matiyā",".ti.",".f.$.sg.$.inst.","0.99",],
+[,"mant","matiyā",".ti.",".f.$.sg.$.loc.","0.99",],
+[,"mant","matiyaṃ",".ti.",".f.$.sg.$.loc.","0.99",],
+[,"mant","matiyo",".ti.",".f.$.pl.$.acc.","0.99",],
+[,"mant","matiyo",".ti.",".f.$.pl.$.nom.","0.99",],
+[,"mant","matiyo",".ti.",".f.$.pl.$.voc.","0.3",],
+[,"mant","mato",".ti.",".m.$.sg.$.dat.","0.99",],
+[,"mant","mato",".ti.",".m.$.sg.$.gen.","0.99",],
+[,"mant","mato",".ti.",".nt.$.sg.$.dat.","0.99",],
+[,"mant","mato",".ti.",".nt.$.sg.$.gen.","0.99",],
+[,"mant","mato",".ti.",".m.$.sg.$.dat.","0.99",],
+[,"mant","mato",".ti.",".m.$.sg.$.gen.","0.99",],
+[,"mant","mato",".ti.",".nt.$.sg.$.dat.","0.99",],
+[,"mant","mato",".ti.",".nt.$.sg.$.gen.","0.99",],
+[,"mant","me",".ti.",".m.$.pl.$.acc.","0.99",],
+[,"mant","mebhi",".ti.",".m.$.pl.$.abl.","0.99",],
+[,"mant","mebhi",".ti.",".m.$.pl.$.inst.","0.99",],
+[,"mant","mehi",".ti.",".m.$.pl.$.abl.","0.99",],
+[,"mant","mehi",".ti.",".m.$.pl.$.inst.","0.99",],
+[,"mant","mesu",".ti.",".m.$.pl.$.loc.","0.99",],
+[,"vant","vā",".ti.",".m.$.pl.$.nom.","0.99",],
+[,"vant","vā",".ti.",".m.$.pl.$.voc.","0.3",],
+[,"vant","vā",".ti.",".m.$.sg.$.nom.","0.99",],
+[,"vant","va",".ti.",".m.$.sg.$.voc.","0.3",],
+[,"vant","vā",".ti.",".m.$.sg.$.voc.","0.3",],
+[,"vant","vā",".ti.",".nt.$.pl.$.nom.","0.99",],
+[,"vant","vā",".ti.",".nt.$.pl.$.voc.","0.3",],
+[,"vant","va",".ti.",".nt.$.sg.$.voc.","0.3",],
+[,"vant","vā",".ti.",".nt.$.sg.$.voc.","0.3",],
+[,"vant","vā",".ti.",".m.$.sg.$.voc.","0.3",],
+[,"vant","vā",".ti.",".nt.$.sg.$.voc.","0.3",],
+[,"vant","vaṃ",".ti.",".m.$.sg.$.acc.","0.99",],
+[,"vant","vaṃ",".ti.",".nt.$.sg.$.acc.","0.99",],
+[,"vant","vaṃ",".ti.",".nt.$.sg.$.nom.","0.99",],
+[,"vant","vaṃ",".ti.",".m.$.sg.$.nom.","0.99",],
+[,"vant","vaṃ",".ti.",".m.$.sg.$.voc.","0.3",],
+[,"vant","vaṃ",".ti.",".nt.$.sg.$.voc.","0.3",],
+[,"vant","vaṃ",".ti.",".m.$.sg.$.voc.","0.3",],
+[,"vant","vaṃ",".ti.",".nt.$.sg.$.voc.","0.3",],
+[,"vant","vānaṃ",".ti.",".m.$.pl.$.dat.","0.99",],
+[,"vant","vānaṃ",".ti.",".m.$.pl.$.gen.","0.99",],
+[,"vant","vantā",".ti.",".m.$.pl.$.nom.","0.99",],
+[,"vant","vantā",".ti.",".m.$.pl.$.voc.","0.3",],
+[,"vant","vantā",".ti.",".m.$.sg.$.abl.","0.99",],
+[,"vant","vanta",".ti.",".m.$.sg.$.voc.","0.3",],
+[,"vant","vantā",".ti.",".m.$.sg.$.voc.","0.3",],
+[,"vant","vanta",".ti.",".nt.$.pl.$.acc.","0.99",],
+[,"vant","vantā",".ti.",".nt.$.pl.$.acc.","0.99",],
+[,"vant","vanta",".ti.",".nt.$.pl.$.nom.","0.99",],
+[,"vant","vantā",".ti.",".nt.$.pl.$.nom.","0.99",],
+[,"vant","vanta",".ti.",".nt.$.pl.$.voc.","0.3",],
+[,"vant","vantā",".ti.",".nt.$.pl.$.voc.","0.3",],
+[,"vant","vantā",".ti.",".nt.$.sg.$.abl.","0.99",],
+[,"vant","vanta",".ti.",".nt.$.sg.$.voc.","0.3",],
+[,"vant","vantā",".ti.",".nt.$.sg.$.voc.","0.3",],
+[,"vant","vantaṃ",".ti.",".m.$.sg.$.acc.","0.99",],
+[,"vant","vantaṃ",".ti.",".nt.$.sg.$.acc.","0.99",],
+[,"vant","vantaṃ",".ti.",".nt.$.sg.$.nom.","0.99",],
+[,"vant","vantaṃ",".ti.",".nt.$.sg.$.nom.","0.99",],
+[,"vant","vantaṃ",".ti.",".m.$.sg.$.acc.","0.99",],
+[,"vant","vantaṃ",".ti.",".nt.$.sg.$.acc.","0.99",],
+[,"vant","vantamhā",".ti.",".m.$.sg.$.abl.","0.99",],
+[,"vant","vantamhā",".ti.",".nt.$.sg.$.abl.","0.99",],
+[,"vant","vantamhā",".ti.",".m.$.sg.$.abl.","0.99",],
+[,"vant","vantamhā",".ti.",".nt.$.sg.$.abl.","0.99",],
+[,"vant","vantamhi",".ti.",".m.$.sg.$.loc.","0.99",],
+[,"vant","vantamhi",".ti.",".nt.$.sg.$.loc.","0.99",],
+[,"vant","vantamhi",".ti.",".m.$.sg.$.loc.","0.99",],
+[,"vant","vantamhi",".ti.",".nt.$.sg.$.loc.","0.99",],
+[,"vant","vantānaṃ",".ti.",".m.$.pl.$.dat.","0.99",],
+[,"vant","vantānaṃ",".ti.",".m.$.pl.$.gen.","0.99",],
+[,"vant","vantānaṃ",".ti.",".nt.$.pl.$.dat.","0.99",],
+[,"vant","vantānaṃ",".ti.",".nt.$.pl.$.gen.","0.99",],
+[,"vant","vantānaṃ",".ti.",".nt.$.pl.$.dat.","0.99",],
+[,"vant","vantānaṃ",".ti.",".nt.$.pl.$.gen.","0.99",],
+[,"vant","vantani",".ti.",".nt.$.pl.$.acc.","0.99",],
+[,"vant","vantāni",".ti.",".nt.$.pl.$.acc.","0.99",],
+[,"vant","vantani",".ti.",".nt.$.pl.$.nom.","0.99",],
+[,"vant","vantāni",".ti.",".nt.$.pl.$.nom.","0.99",],
+[,"vant","vantani",".ti.",".nt.$.pl.$.voc.","0.3",],
+[,"vant","vantāni",".ti.",".nt.$.pl.$.voc.","0.3",],
+[,"vant","vantasmā",".ti.",".m.$.sg.$.abl.","0.99",],
+[,"vant","vantasmā",".ti.",".nt.$.sg.$.abl.","0.99",],
+[,"vant","vantasmā",".ti.",".m.$.sg.$.abl.","0.99",],
+[,"vant","vantasmā",".ti.",".nt.$.sg.$.abl.","0.99",],
+[,"vant","vantasmiṃ",".ti.",".m.$.sg.$.loc.","0.99",],
+[,"vant","vantasmiṃ",".ti.",".nt.$.sg.$.loc.","0.99",],
+[,"vant","vantasmiṃ",".ti.",".m.$.sg.$.loc.","0.99",],
+[,"vant","vantasmiṃ",".ti.",".nt.$.sg.$.loc.","0.99",],
+[,"vant","vantassa",".ti.",".m.$.sg.$.dat.","0.99",],
+[,"vant","vantassa",".ti.",".m.$.sg.$.gen.","0.99",],
+[,"vant","vantassa",".ti.",".nt.$.sg.$.dat.","0.99",],
+[,"vant","vantassa",".ti.",".nt.$.sg.$.gen.","0.99",],
+[,"vant","vantassa",".ti.",".m.$.sg.$.dat.","0.99",],
+[,"vant","vantassa",".ti.",".m.$.sg.$.gen.","0.99",],
+[,"vant","vantassa",".ti.",".nt.$.sg.$.dat.","0.99",],
+[,"vant","vantassa",".ti.",".nt.$.sg.$.gen.","0.99",],
+[,"vant","vante",".ti.",".m.$.pl.$.acc.","0.99",],
+[,"vant","vante",".ti.",".m.$.sg.$.loc.","0.99",],
+[,"vant","vante",".ti.",".nt.$.pl.$.acc.","0.99",],
+[,"vant","vante",".ti.",".nt.$.sg.$.loc.","0.99",],
+[,"vant","vantebhi",".ti.",".m.$.pl.$.abl.","0.99",],
+[,"vant","vantebhi",".ti.",".m.$.pl.$.inst.","0.99",],
+[,"vant","vantebhi",".ti.",".nt.$.pl.$.abl.","0.99",],
+[,"vant","vantebhi",".ti.",".nt.$.pl.$.inst.","0.99",],
+[,"vant","vantehi",".ti.",".m.$.pl.$.abl.","0.99",],
+[,"vant","vantehi",".ti.",".m.$.pl.$.inst.","0.99",],
+[,"vant","vantehi",".ti.",".nt.$.pl.$.abl.","0.99",],
+[,"vant","vantehi",".ti.",".nt.$.pl.$.inst.","0.99",],
+[,"vant","vantesu",".ti.",".m.$.pl.$.loc.","0.99",],
+[,"vant","vantesu",".ti.",".nt.$.pl.$.loc.","0.99",],
+[,"vant","vantesu",".ti.",".nt.$.pl.$.loc.","0.99",],
+[,"vant","vantī",".ti.",".f.$.pl.$.acc.","0.99",],
+[,"vant","vantī",".ti.",".f.$.pl.$.nom.","0.99",],
+[,"vant","vantī",".ti.",".f.$.pl.$.voc.","0.3",],
+[,"vant","vantī",".ti.",".f.$.sg.$.nom.","0.99",],
+[,"vant","vantī",".ti.",".f.$.sg.$.voc.","0.3",],
+[,"vant","vantībhi",".ti.",".f.$.pl.$.abl.","0.99",],
+[,"vant","vantībhi",".ti.",".f.$.pl.$.inst.","0.99",],
+[,"vant","vantīhi",".ti.",".f.$.pl.$.abl.","0.99",],
+[,"vant","vantīhi",".ti.",".f.$.pl.$.inst.","0.99",],
+[,"vant","vantiṃ",".ti.",".f.$.sg.$.acc.","0.99",],
+[,"vant","vantīnaṃ",".ti.",".f.$.pl.$.dat.","0.99",],
+[,"vant","vantīnaṃ",".ti.",".f.$.pl.$.gen.","0.99",],
+[,"vant","vantīsu",".ti.",".f.$.pl.$.loc.","0.99",],
+[,"vant","vantiyā",".ti.",".f.$.sg.$.abl.","0.99",],
+[,"vant","vantiyā",".ti.",".f.$.sg.$.dat.","0.99",],
+[,"vant","vantiyā",".ti.",".f.$.sg.$.gen.","0.99",],
+[,"vant","vantiyā",".ti.",".f.$.sg.$.inst.","0.99",],
+[,"vant","vantiyā",".ti.",".f.$.sg.$.loc.","0.99",],
+[,"vant","vantiyaṃ",".ti.",".f.$.sg.$.loc.","0.99",],
+[,"vant","vantiyo",".ti.",".f.$.pl.$.acc.","0.99",],
+[,"vant","vantiyo",".ti.",".f.$.pl.$.nom.","0.99",],
+[,"vant","vantiyo",".ti.",".f.$.pl.$.voc.","0.3",],
+[,"vant","vanto",".ti.",".m.$.pl.$.nom.","0.99",],
+[,"vant","vanto",".ti.",".m.$.pl.$.voc.","0.3",],
+[,"vant","vanto",".ti.",".m.$.sg.$.nom.","0.99",],
+[,"vant","vanto",".ti.",".nt.$.pl.$.nom.","0.99",],
+[,"vant","vanto",".ti.",".nt.$.pl.$.voc.","0.3",],
+[,"vant","vanto",".ti.",".nt.$.sg.$.nom.","0.99",],
+[,"vant","vatā",".ti.",".m.$.sg.$.abl.","0.99",],
+[,"vant","vatā",".ti.",".m.$.sg.$.inst.","0.99",],
+[,"vant","vatā",".ti.",".nt.$.sg.$.abl.","0.99",],
+[,"vant","vatā",".ti.",".nt.$.sg.$.inst.","0.99",],
+[,"vant","vatā",".ti.",".m.$.sg.$.abl.","0.99",],
+[,"vant","vatā",".ti.",".m.$.sg.$.inst.","0.99",],
+[,"vant","vatā",".ti.",".nt.$.sg.$.abl.","0.99",],
+[,"vant","vatā",".ti.",".nt.$.sg.$.inst.","0.99",],
+[,"vant","vataṃ",".ti.",".m.$.pl.$.dat.","0.99",],
+[,"vant","vataṃ",".ti.",".m.$.pl.$.gen.","0.99",],
+[,"vant","vataṃ",".ti.",".nt.$.pl.$.dat.","0.99",],
+[,"vant","vataṃ",".ti.",".nt.$.pl.$.gen.","0.99",],
+[,"vant","vataṃ",".ti.",".nt.$.pl.$.dat.","0.99",],
+[,"vant","vataṃ",".ti.",".nt.$.pl.$.gen.","0.99",],
+[,"vant","vatena",".ti.",".m.$.sg.$.inst.","0.99",],
+[,"vant","vatena",".ti.",".nt.$.sg.$.inst.","0.99",],
+[,"vant","vatena",".ti.",".m.$.sg.$.inst.","0.99",],
+[,"vant","vatena",".ti.",".nt.$.sg.$.inst.","0.99",],
+[,"vant","vatī",".ti.",".f.$.pl.$.acc.","0.99",],
+[,"vant","vatī",".ti.",".f.$.pl.$.nom.","0.99",],
+[,"vant","vatī",".ti.",".f.$.pl.$.voc.","0.3",],
+[,"vant","vatī",".ti.",".f.$.sg.$.nom.","0.99",],
+[,"vant","vatī",".ti.",".f.$.sg.$.voc.","0.3",],
+[,"vant","vati",".ti.",".m.$.sg.$.loc.","0.99",],
+[,"vant","vati",".ti.",".nt.$.sg.$.loc.","0.99",],
+[,"vant","vati",".ti.",".m.$.sg.$.loc.","0.99",],
+[,"vant","vati",".ti.",".nt.$.sg.$.loc.","0.99",],
+[,"vant","vatībhi",".ti.",".f.$.pl.$.abl.","0.99",],
+[,"vant","vatībhi",".ti.",".f.$.pl.$.inst.","0.99",],
+[,"vant","vatīhi",".ti.",".f.$.pl.$.abl.","0.99",],
+[,"vant","vatīhi",".ti.",".f.$.pl.$.inst.","0.99",],
+[,"vant","vatiṃ",".ti.",".f.$.sg.$.acc.","0.99",],
+[,"vant","vatīnaṃ",".ti.",".f.$.pl.$.dat.","0.99",],
+[,"vant","vatīnaṃ",".ti.",".f.$.pl.$.gen.","0.99",],
+[,"vant","vatīsu",".ti.",".f.$.pl.$.loc.","0.99",],
+[,"vant","vatiyā",".ti.",".f.$.sg.$.abl.","0.99",],
+[,"vant","vatiyā",".ti.",".f.$.sg.$.dat.","0.99",],
+[,"vant","vatiyā",".ti.",".f.$.sg.$.gen.","0.99",],
+[,"vant","vatiyā",".ti.",".f.$.sg.$.inst.","0.99",],
+[,"vant","vatiyā",".ti.",".f.$.sg.$.loc.","0.99",],
+[,"vant","vatiyaṃ",".ti.",".f.$.sg.$.loc.","0.99",],
+[,"vant","vatiyo",".ti.",".f.$.pl.$.acc.","0.99",],
+[,"vant","vatiyo",".ti.",".f.$.pl.$.nom.","0.99",],
+[,"vant","vatiyo",".ti.",".f.$.pl.$.voc.","0.3",],
+[,"vant","vato",".ti.",".m.$.sg.$.dat.","0.99",],
+[,"vant","vato",".ti.",".m.$.sg.$.gen.","0.99",],
+[,"vant","vato",".ti.",".nt.$.sg.$.dat.","0.99",],
+[,"vant","vato",".ti.",".nt.$.sg.$.gen.","0.99",],
+[,"vant","vato",".ti.",".m.$.sg.$.dat.","0.99",],
+[,"vant","vato",".ti.",".m.$.sg.$.gen.","0.99",],
+[,"vant","vato",".ti.",".nt.$.sg.$.dat.","0.99",],
+[,"vant","vato",".ti.",".nt.$.sg.$.gen.","0.99",],
+[,"vant","ve",".ti.",".m.$.pl.$.acc.","0.99",],
+[,"vant","vebhi",".ti.",".m.$.pl.$.abl.","0.99",],
+[,"vant","vebhi",".ti.",".m.$.pl.$.inst.","0.99",],
+[,"vant","vehi",".ti.",".m.$.pl.$.abl.","0.99",],
+[,"vant","vehi",".ti.",".m.$.pl.$.inst.","0.99",],
+[,"vant","vesu",".ti.",".m.$.pl.$.loc.","0.99",],
+[,"mantu","mā",".ti.",".m.$.pl.$.nom.","0.99",],
+[,"mantu","mā",".ti.",".m.$.pl.$.voc.","0.3",],
+[,"mantu","mā",".ti.",".m.$.sg.$.nom.","0.99",],
+[,"mantu","ma",".ti.",".m.$.sg.$.voc.","0.3",],
+[,"mantu","mā",".ti.",".m.$.sg.$.voc.","0.3",],
+[,"mantu","mā",".ti.",".nt.$.pl.$.nom.","0.99",],
+[,"mantu","mā",".ti.",".nt.$.pl.$.voc.","0.3",],
+[,"mantu","ma",".ti.",".nt.$.sg.$.voc.","0.3",],
+[,"mantu","mā",".ti.",".nt.$.sg.$.voc.","0.3",],
+[,"mantu","mā",".ti.",".m.$.sg.$.voc.","0.3",],
+[,"mantu","mā",".ti.",".nt.$.sg.$.voc.","0.3",],
+[,"mantu","maṃ",".ti.",".m.$.sg.$.acc.","0.99",],
+[,"mantu","maṃ",".ti.",".nt.$.sg.$.acc.","0.99",],
+[,"mantu","maṃ",".ti.",".nt.$.sg.$.nom.","0.99",],
+[,"mantu","maṃ",".ti.",".m.$.sg.$.nom.","0.99",],
+[,"mantu","maṃ",".ti.",".m.$.sg.$.voc.","0.3",],
+[,"mantu","maṃ",".ti.",".nt.$.sg.$.voc.","0.3",],
+[,"mantu","maṃ",".ti.",".m.$.sg.$.voc.","0.3",],
+[,"mantu","maṃ",".ti.",".nt.$.sg.$.voc.","0.3",],
+[,"mantu","mānaṃ",".ti.",".m.$.pl.$.dat.","0.99",],
+[,"mantu","mānaṃ",".ti.",".m.$.pl.$.gen.","0.99",],
+[,"mantu","mantā",".ti.",".m.$.pl.$.nom.","0.99",],
+[,"mantu","mantā",".ti.",".m.$.pl.$.voc.","0.3",],
+[,"mantu","mantā",".ti.",".m.$.sg.$.abl.","0.99",],
+[,"mantu","manta",".ti.",".m.$.sg.$.voc.","0.3",],
+[,"mantu","mantā",".ti.",".m.$.sg.$.voc.","0.3",],
+[,"mantu","manta",".ti.",".nt.$.pl.$.acc.","0.99",],
+[,"mantu","mantā",".ti.",".nt.$.pl.$.acc.","0.99",],
+[,"mantu","manta",".ti.",".nt.$.pl.$.nom.","0.99",],
+[,"mantu","mantā",".ti.",".nt.$.pl.$.nom.","0.99",],
+[,"mantu","manta",".ti.",".nt.$.pl.$.voc.","0.3",],
+[,"mantu","mantā",".ti.",".nt.$.pl.$.voc.","0.3",],
+[,"mantu","mantā",".ti.",".nt.$.sg.$.abl.","0.99",],
+[,"mantu","manta",".ti.",".nt.$.sg.$.voc.","0.3",],
+[,"mantu","mantā",".ti.",".nt.$.sg.$.voc.","0.3",],
+[,"mantu","mantaṃ",".ti.",".m.$.sg.$.acc.","0.99",],
+[,"mantu","mantaṃ",".ti.",".nt.$.sg.$.acc.","0.99",],
+[,"mantu","mantaṃ",".ti.",".nt.$.sg.$.nom.","0.99",],
+[,"mantu","mantaṃ",".ti.",".nt.$.sg.$.nom.","0.99",],
+[,"mantu","mantaṃ",".ti.",".m.$.sg.$.acc.","0.99",],
+[,"mantu","mantaṃ",".ti.",".nt.$.sg.$.acc.","0.99",],
+[,"mantu","mantamhā",".ti.",".m.$.sg.$.abl.","0.99",],
+[,"mantu","mantamhā",".ti.",".nt.$.sg.$.abl.","0.99",],
+[,"mantu","mantamhā",".ti.",".m.$.sg.$.abl.","0.99",],
+[,"mantu","mantamhā",".ti.",".nt.$.sg.$.abl.","0.99",],
+[,"mantu","mantamhi",".ti.",".m.$.sg.$.loc.","0.99",],
+[,"mantu","mantamhi",".ti.",".nt.$.sg.$.loc.","0.99",],
+[,"mantu","mantamhi",".ti.",".m.$.sg.$.loc.","0.99",],
+[,"mantu","mantamhi",".ti.",".nt.$.sg.$.loc.","0.99",],
+[,"mantu","mantānaṃ",".ti.",".m.$.pl.$.dat.","0.99",],
+[,"mantu","mantānaṃ",".ti.",".m.$.pl.$.gen.","0.99",],
+[,"mantu","mantānaṃ",".ti.",".nt.$.pl.$.dat.","0.99",],
+[,"mantu","mantānaṃ",".ti.",".nt.$.pl.$.gen.","0.99",],
+[,"mantu","mantānaṃ",".ti.",".nt.$.pl.$.dat.","0.99",],
+[,"mantu","mantānaṃ",".ti.",".nt.$.pl.$.gen.","0.99",],
+[,"mantu","mantani",".ti.",".nt.$.pl.$.acc.","0.99",],
+[,"mantu","mantāni",".ti.",".nt.$.pl.$.acc.","0.99",],
+[,"mantu","mantani",".ti.",".nt.$.pl.$.nom.","0.99",],
+[,"mantu","mantāni",".ti.",".nt.$.pl.$.nom.","0.99",],
+[,"mantu","mantani",".ti.",".nt.$.pl.$.voc.","0.3",],
+[,"mantu","mantāni",".ti.",".nt.$.pl.$.voc.","0.3",],
+[,"mantu","mantasmā",".ti.",".m.$.sg.$.abl.","0.99",],
+[,"mantu","mantasmā",".ti.",".nt.$.sg.$.abl.","0.99",],
+[,"mantu","mantasmā",".ti.",".m.$.sg.$.abl.","0.99",],
+[,"mantu","mantasmā",".ti.",".nt.$.sg.$.abl.","0.99",],
+[,"mantu","mantasmiṃ",".ti.",".m.$.sg.$.loc.","0.99",],
+[,"mantu","mantasmiṃ",".ti.",".nt.$.sg.$.loc.","0.99",],
+[,"mantu","mantasmiṃ",".ti.",".m.$.sg.$.loc.","0.99",],
+[,"mantu","mantasmiṃ",".ti.",".nt.$.sg.$.loc.","0.99",],
+[,"mantu","mantassa",".ti.",".m.$.sg.$.dat.","0.99",],
+[,"mantu","mantassa",".ti.",".m.$.sg.$.gen.","0.99",],
+[,"mantu","mantassa",".ti.",".nt.$.sg.$.dat.","0.99",],
+[,"mantu","mantassa",".ti.",".nt.$.sg.$.gen.","0.99",],
+[,"mantu","mantassa",".ti.",".m.$.sg.$.dat.","0.99",],
+[,"mantu","mantassa",".ti.",".m.$.sg.$.gen.","0.99",],
+[,"mantu","mantassa",".ti.",".nt.$.sg.$.dat.","0.99",],
+[,"mantu","mantassa",".ti.",".nt.$.sg.$.gen.","0.99",],
+[,"mantu","mante",".ti.",".m.$.pl.$.acc.","0.99",],
+[,"mantu","mante",".ti.",".m.$.sg.$.loc.","0.99",],
+[,"mantu","mante",".ti.",".nt.$.pl.$.acc.","0.99",],
+[,"mantu","mante",".ti.",".nt.$.sg.$.loc.","0.99",],
+[,"mantu","mantebhi",".ti.",".m.$.pl.$.abl.","0.99",],
+[,"mantu","mantebhi",".ti.",".m.$.pl.$.inst.","0.99",],
+[,"mantu","mantebhi",".ti.",".nt.$.pl.$.abl.","0.99",],
+[,"mantu","mantebhi",".ti.",".nt.$.pl.$.inst.","0.99",],
+[,"mantu","mantehi",".ti.",".m.$.pl.$.abl.","0.99",],
+[,"mantu","mantehi",".ti.",".m.$.pl.$.inst.","0.99",],
+[,"mantu","mantehi",".ti.",".nt.$.pl.$.abl.","0.99",],
+[,"mantu","mantehi",".ti.",".nt.$.pl.$.inst.","0.99",],
+[,"mantu","mantesu",".ti.",".m.$.pl.$.loc.","0.99",],
+[,"mantu","mantesu",".ti.",".nt.$.pl.$.loc.","0.99",],
+[,"mantu","mantesu",".ti.",".nt.$.pl.$.loc.","0.99",],
+[,"mantu","mantī",".ti.",".f.$.pl.$.acc.","0.99",],
+[,"mantu","mantī",".ti.",".f.$.pl.$.nom.","0.99",],
+[,"mantu","mantī",".ti.",".f.$.pl.$.voc.","0.3",],
+[,"mantu","mantī",".ti.",".f.$.sg.$.nom.","0.99",],
+[,"mantu","mantī",".ti.",".f.$.sg.$.voc.","0.3",],
+[,"mantu","mantībhi",".ti.",".f.$.pl.$.abl.","0.99",],
+[,"mantu","mantībhi",".ti.",".f.$.pl.$.inst.","0.99",],
+[,"mantu","mantīhi",".ti.",".f.$.pl.$.abl.","0.99",],
+[,"mantu","mantīhi",".ti.",".f.$.pl.$.inst.","0.99",],
+[,"mantu","mantiṃ",".ti.",".f.$.sg.$.acc.","0.99",],
+[,"mantu","mantīnaṃ",".ti.",".f.$.pl.$.dat.","0.99",],
+[,"mantu","mantīnaṃ",".ti.",".f.$.pl.$.gen.","0.99",],
+[,"mantu","mantīsu",".ti.",".f.$.pl.$.loc.","0.99",],
+[,"mantu","mantiyā",".ti.",".f.$.sg.$.abl.","0.99",],
+[,"mantu","mantiyā",".ti.",".f.$.sg.$.dat.","0.99",],
+[,"mantu","mantiyā",".ti.",".f.$.sg.$.gen.","0.99",],
+[,"mantu","mantiyā",".ti.",".f.$.sg.$.inst.","0.99",],
+[,"mantu","mantiyā",".ti.",".f.$.sg.$.loc.","0.99",],
+[,"mantu","mantiyaṃ",".ti.",".f.$.sg.$.loc.","0.99",],
+[,"mantu","mantiyo",".ti.",".f.$.pl.$.acc.","0.99",],
+[,"mantu","mantiyo",".ti.",".f.$.pl.$.nom.","0.99",],
+[,"mantu","mantiyo",".ti.",".f.$.pl.$.voc.","0.3",],
+[,"mantu","manto",".ti.",".m.$.pl.$.nom.","0.99",],
+[,"mantu","manto",".ti.",".m.$.pl.$.voc.","0.3",],
+[,"mantu","manto",".ti.",".m.$.sg.$.nom.","0.99",],
+[,"mantu","manto",".ti.",".nt.$.pl.$.nom.","0.99",],
+[,"mantu","manto",".ti.",".nt.$.pl.$.voc.","0.3",],
+[,"mantu","manto",".ti.",".nt.$.sg.$.nom.","0.99",],
+[,"mantu","matā",".ti.",".m.$.sg.$.abl.","0.99",],
+[,"mantu","matā",".ti.",".m.$.sg.$.inst.","0.99",],
+[,"mantu","matā",".ti.",".nt.$.sg.$.abl.","0.99",],
+[,"mantu","matā",".ti.",".nt.$.sg.$.inst.","0.99",],
+[,"mantu","matā",".ti.",".m.$.sg.$.abl.","0.99",],
+[,"mantu","matā",".ti.",".m.$.sg.$.inst.","0.99",],
+[,"mantu","matā",".ti.",".nt.$.sg.$.abl.","0.99",],
+[,"mantu","matā",".ti.",".nt.$.sg.$.inst.","0.99",],
+[,"mantu","mataṃ",".ti.",".m.$.pl.$.dat.","0.99",],
+[,"mantu","mataṃ",".ti.",".m.$.pl.$.gen.","0.99",],
+[,"mantu","mataṃ",".ti.",".nt.$.pl.$.dat.","0.99",],
+[,"mantu","mataṃ",".ti.",".nt.$.pl.$.gen.","0.99",],
+[,"mantu","mataṃ",".ti.",".nt.$.pl.$.dat.","0.99",],
+[,"mantu","mataṃ",".ti.",".nt.$.pl.$.gen.","0.99",],
+[,"mantu","matena",".ti.",".m.$.sg.$.inst.","0.99",],
+[,"mantu","matena",".ti.",".nt.$.sg.$.inst.","0.99",],
+[,"mantu","matena",".ti.",".m.$.sg.$.inst.","0.99",],
+[,"mantu","matena",".ti.",".nt.$.sg.$.inst.","0.99",],
+[,"mantu","matī",".ti.",".f.$.pl.$.acc.","0.99",],
+[,"mantu","matī",".ti.",".f.$.pl.$.nom.","0.99",],
+[,"mantu","matī",".ti.",".f.$.pl.$.voc.","0.3",],
+[,"mantu","matī",".ti.",".f.$.sg.$.nom.","0.99",],
+[,"mantu","matī",".ti.",".f.$.sg.$.voc.","0.3",],
+[,"mantu","mati",".ti.",".m.$.sg.$.loc.","0.99",],
+[,"mantu","mati",".ti.",".nt.$.sg.$.loc.","0.99",],
+[,"mantu","mati",".ti.",".m.$.sg.$.loc.","0.99",],
+[,"mantu","mati",".ti.",".nt.$.sg.$.loc.","0.99",],
+[,"mantu","matībhi",".ti.",".f.$.pl.$.abl.","0.99",],
+[,"mantu","matībhi",".ti.",".f.$.pl.$.inst.","0.99",],
+[,"mantu","matīhi",".ti.",".f.$.pl.$.abl.","0.99",],
+[,"mantu","matīhi",".ti.",".f.$.pl.$.inst.","0.99",],
+[,"mantu","matiṃ",".ti.",".f.$.sg.$.acc.","0.99",],
+[,"mantu","matīnaṃ",".ti.",".f.$.pl.$.dat.","0.99",],
+[,"mantu","matīnaṃ",".ti.",".f.$.pl.$.gen.","0.99",],
+[,"mantu","matīsu",".ti.",".f.$.pl.$.loc.","0.99",],
+[,"mantu","matiyā",".ti.",".f.$.sg.$.abl.","0.99",],
+[,"mantu","matiyā",".ti.",".f.$.sg.$.dat.","0.99",],
+[,"mantu","matiyā",".ti.",".f.$.sg.$.gen.","0.99",],
+[,"mantu","matiyā",".ti.",".f.$.sg.$.inst.","0.99",],
+[,"mantu","matiyā",".ti.",".f.$.sg.$.loc.","0.99",],
+[,"mantu","matiyaṃ",".ti.",".f.$.sg.$.loc.","0.99",],
+[,"mantu","matiyo",".ti.",".f.$.pl.$.acc.","0.99",],
+[,"mantu","matiyo",".ti.",".f.$.pl.$.nom.","0.99",],
+[,"mantu","matiyo",".ti.",".f.$.pl.$.voc.","0.3",],
+[,"mantu","mato",".ti.",".m.$.sg.$.dat.","0.99",],
+[,"mantu","mato",".ti.",".m.$.sg.$.gen.","0.99",],
+[,"mantu","mato",".ti.",".nt.$.sg.$.dat.","0.99",],
+[,"mantu","mato",".ti.",".nt.$.sg.$.gen.","0.99",],
+[,"mantu","mato",".ti.",".m.$.sg.$.dat.","0.99",],
+[,"mantu","mato",".ti.",".m.$.sg.$.gen.","0.99",],
+[,"mantu","mato",".ti.",".nt.$.sg.$.dat.","0.99",],
+[,"mantu","mato",".ti.",".nt.$.sg.$.gen.","0.99",],
+[,"mantu","me",".ti.",".m.$.pl.$.acc.","0.99",],
+[,"mantu","mebhi",".ti.",".m.$.pl.$.abl.","0.99",],
+[,"mantu","mebhi",".ti.",".m.$.pl.$.inst.","0.99",],
+[,"mantu","mehi",".ti.",".m.$.pl.$.abl.","0.99",],
+[,"mantu","mehi",".ti.",".m.$.pl.$.inst.","0.99",],
+[,"mantu","mesu",".ti.",".m.$.pl.$.loc.","0.99",],
+[,"vantu","vā",".ti.",".m.$.pl.$.nom.","0.99",],
+[,"vantu","vā",".ti.",".m.$.pl.$.voc.","0.3",],
+[,"vantu","vā",".ti.",".m.$.sg.$.nom.","0.99",],
+[,"vantu","va",".ti.",".m.$.sg.$.voc.","0.3",],
+[,"vantu","vā",".ti.",".m.$.sg.$.voc.","0.3",],
+[,"vantu","vā",".ti.",".nt.$.pl.$.nom.","0.99",],
+[,"vantu","vā",".ti.",".nt.$.pl.$.voc.","0.3",],
+[,"vantu","va",".ti.",".nt.$.sg.$.voc.","0.3",],
+[,"vantu","vā",".ti.",".nt.$.sg.$.voc.","0.3",],
+[,"vantu","vā",".ti.",".m.$.sg.$.voc.","0.3",],
+[,"vantu","vā",".ti.",".nt.$.sg.$.voc.","0.3",],
+[,"vantu","vaṃ",".ti.",".m.$.sg.$.acc.","0.99",],
+[,"vantu","vaṃ",".ti.",".nt.$.sg.$.acc.","0.99",],
+[,"vantu","vaṃ",".ti.",".nt.$.sg.$.nom.","0.99",],
+[,"vantu","vaṃ",".ti.",".m.$.sg.$.nom.","0.99",],
+[,"vantu","vaṃ",".ti.",".m.$.sg.$.voc.","0.3",],
+[,"vantu","vaṃ",".ti.",".nt.$.sg.$.voc.","0.3",],
+[,"vantu","vaṃ",".ti.",".m.$.sg.$.voc.","0.3",],
+[,"vantu","vaṃ",".ti.",".nt.$.sg.$.voc.","0.3",],
+[,"vantu","vānaṃ",".ti.",".m.$.pl.$.dat.","0.99",],
+[,"vantu","vānaṃ",".ti.",".m.$.pl.$.gen.","0.99",],
+[,"vantu","vantā",".ti.",".m.$.pl.$.nom.","0.99",],
+[,"vantu","vantā",".ti.",".m.$.pl.$.voc.","0.3",],
+[,"vantu","vantā",".ti.",".m.$.sg.$.abl.","0.99",],
+[,"vantu","vanta",".ti.",".m.$.sg.$.voc.","0.3",],
+[,"vantu","vantā",".ti.",".m.$.sg.$.voc.","0.3",],
+[,"vantu","vanta",".ti.",".nt.$.pl.$.acc.","0.99",],
+[,"vantu","vantā",".ti.",".nt.$.pl.$.acc.","0.99",],
+[,"vantu","vanta",".ti.",".nt.$.pl.$.nom.","0.99",],
+[,"vantu","vantā",".ti.",".nt.$.pl.$.nom.","0.99",],
+[,"vantu","vanta",".ti.",".nt.$.pl.$.voc.","0.3",],
+[,"vantu","vantā",".ti.",".nt.$.pl.$.voc.","0.3",],
+[,"vantu","vantā",".ti.",".nt.$.sg.$.abl.","0.99",],
+[,"vantu","vanta",".ti.",".nt.$.sg.$.voc.","0.3",],
+[,"vantu","vantā",".ti.",".nt.$.sg.$.voc.","0.3",],
+[,"vantu","vantaṃ",".ti.",".m.$.sg.$.acc.","0.99",],
+[,"vantu","vantaṃ",".ti.",".nt.$.sg.$.acc.","0.99",],
+[,"vantu","vantaṃ",".ti.",".nt.$.sg.$.nom.","0.99",],
+[,"vantu","vantaṃ",".ti.",".nt.$.sg.$.nom.","0.99",],
+[,"vantu","vantaṃ",".ti.",".m.$.sg.$.acc.","0.99",],
+[,"vantu","vantaṃ",".ti.",".nt.$.sg.$.acc.","0.99",],
+[,"vantu","vantamhā",".ti.",".m.$.sg.$.abl.","0.99",],
+[,"vantu","vantamhā",".ti.",".nt.$.sg.$.abl.","0.99",],
+[,"vantu","vantamhā",".ti.",".m.$.sg.$.abl.","0.99",],
+[,"vantu","vantamhā",".ti.",".nt.$.sg.$.abl.","0.99",],
+[,"vantu","vantamhi",".ti.",".m.$.sg.$.loc.","0.99",],
+[,"vantu","vantamhi",".ti.",".nt.$.sg.$.loc.","0.99",],
+[,"vantu","vantamhi",".ti.",".m.$.sg.$.loc.","0.99",],
+[,"vantu","vantamhi",".ti.",".nt.$.sg.$.loc.","0.99",],
+[,"vantu","vantānaṃ",".ti.",".m.$.pl.$.dat.","0.99",],
+[,"vantu","vantānaṃ",".ti.",".m.$.pl.$.gen.","0.99",],
+[,"vantu","vantānaṃ",".ti.",".nt.$.pl.$.dat.","0.99",],
+[,"vantu","vantānaṃ",".ti.",".nt.$.pl.$.gen.","0.99",],
+[,"vantu","vantānaṃ",".ti.",".nt.$.pl.$.dat.","0.99",],
+[,"vantu","vantānaṃ",".ti.",".nt.$.pl.$.gen.","0.99",],
+[,"vantu","vantani",".ti.",".nt.$.pl.$.acc.","0.99",],
+[,"vantu","vantāni",".ti.",".nt.$.pl.$.acc.","0.99",],
+[,"vantu","vantani",".ti.",".nt.$.pl.$.nom.","0.99",],
+[,"vantu","vantāni",".ti.",".nt.$.pl.$.nom.","0.99",],
+[,"vantu","vantani",".ti.",".nt.$.pl.$.voc.","0.3",],
+[,"vantu","vantāni",".ti.",".nt.$.pl.$.voc.","0.3",],
+[,"vantu","vantasmā",".ti.",".m.$.sg.$.abl.","0.99",],
+[,"vantu","vantasmā",".ti.",".nt.$.sg.$.abl.","0.99",],
+[,"vantu","vantasmā",".ti.",".m.$.sg.$.abl.","0.99",],
+[,"vantu","vantasmā",".ti.",".nt.$.sg.$.abl.","0.99",],
+[,"vantu","vantasmiṃ",".ti.",".m.$.sg.$.loc.","0.99",],
+[,"vantu","vantasmiṃ",".ti.",".nt.$.sg.$.loc.","0.99",],
+[,"vantu","vantasmiṃ",".ti.",".m.$.sg.$.loc.","0.99",],
+[,"vantu","vantasmiṃ",".ti.",".nt.$.sg.$.loc.","0.99",],
+[,"vantu","vantassa",".ti.",".m.$.sg.$.dat.","0.99",],
+[,"vantu","vantassa",".ti.",".m.$.sg.$.gen.","0.99",],
+[,"vantu","vantassa",".ti.",".nt.$.sg.$.dat.","0.99",],
+[,"vantu","vantassa",".ti.",".nt.$.sg.$.gen.","0.99",],
+[,"vantu","vantassa",".ti.",".m.$.sg.$.dat.","0.99",],
+[,"vantu","vantassa",".ti.",".m.$.sg.$.gen.","0.99",],
+[,"vantu","vantassa",".ti.",".nt.$.sg.$.dat.","0.99",],
+[,"vantu","vantassa",".ti.",".nt.$.sg.$.gen.","0.99",],
+[,"vantu","vante",".ti.",".m.$.pl.$.acc.","0.99",],
+[,"vantu","vante",".ti.",".m.$.sg.$.loc.","0.99",],
+[,"vantu","vante",".ti.",".nt.$.pl.$.acc.","0.99",],
+[,"vantu","vante",".ti.",".nt.$.sg.$.loc.","0.99",],
+[,"vantu","vantebhi",".ti.",".m.$.pl.$.abl.","0.99",],
+[,"vantu","vantebhi",".ti.",".m.$.pl.$.inst.","0.99",],
+[,"vantu","vantebhi",".ti.",".nt.$.pl.$.abl.","0.99",],
+[,"vantu","vantebhi",".ti.",".nt.$.pl.$.inst.","0.99",],
+[,"vantu","vantehi",".ti.",".m.$.pl.$.abl.","0.99",],
+[,"vantu","vantehi",".ti.",".m.$.pl.$.inst.","0.99",],
+[,"vantu","vantehi",".ti.",".nt.$.pl.$.abl.","0.99",],
+[,"vantu","vantehi",".ti.",".nt.$.pl.$.inst.","0.99",],
+[,"vantu","vantesu",".ti.",".m.$.pl.$.loc.","0.99",],
+[,"vantu","vantesu",".ti.",".nt.$.pl.$.loc.","0.99",],
+[,"vantu","vantesu",".ti.",".nt.$.pl.$.loc.","0.99",],
+[,"vantu","vantī",".ti.",".f.$.pl.$.acc.","0.99",],
+[,"vantu","vantī",".ti.",".f.$.pl.$.nom.","0.99",],
+[,"vantu","vantī",".ti.",".f.$.pl.$.voc.","0.3",],
+[,"vantu","vantī",".ti.",".f.$.sg.$.nom.","0.99",],
+[,"vantu","vantī",".ti.",".f.$.sg.$.voc.","0.3",],
+[,"vantu","vantībhi",".ti.",".f.$.pl.$.abl.","0.99",],
+[,"vantu","vantībhi",".ti.",".f.$.pl.$.inst.","0.99",],
+[,"vantu","vantīhi",".ti.",".f.$.pl.$.abl.","0.99",],
+[,"vantu","vantīhi",".ti.",".f.$.pl.$.inst.","0.99",],
+[,"vantu","vantiṃ",".ti.",".f.$.sg.$.acc.","0.99",],
+[,"vantu","vantīnaṃ",".ti.",".f.$.pl.$.dat.","0.99",],
+[,"vantu","vantīnaṃ",".ti.",".f.$.pl.$.gen.","0.99",],
+[,"vantu","vantīsu",".ti.",".f.$.pl.$.loc.","0.99",],
+[,"vantu","vantiyā",".ti.",".f.$.sg.$.abl.","0.99",],
+[,"vantu","vantiyā",".ti.",".f.$.sg.$.dat.","0.99",],
+[,"vantu","vantiyā",".ti.",".f.$.sg.$.gen.","0.99",],
+[,"vantu","vantiyā",".ti.",".f.$.sg.$.inst.","0.99",],
+[,"vantu","vantiyā",".ti.",".f.$.sg.$.loc.","0.99",],
+[,"vantu","vantiyaṃ",".ti.",".f.$.sg.$.loc.","0.99",],
+[,"vantu","vantiyo",".ti.",".f.$.pl.$.acc.","0.99",],
+[,"vantu","vantiyo",".ti.",".f.$.pl.$.nom.","0.99",],
+[,"vantu","vantiyo",".ti.",".f.$.pl.$.voc.","0.3",],
+[,"vantu","vanto",".ti.",".m.$.pl.$.nom.","0.99",],
+[,"vantu","vanto",".ti.",".m.$.pl.$.voc.","0.3",],
+[,"vantu","vanto",".ti.",".m.$.sg.$.nom.","0.99",],
+[,"vantu","vanto",".ti.",".nt.$.pl.$.nom.","0.99",],
+[,"vantu","vanto",".ti.",".nt.$.pl.$.voc.","0.3",],
+[,"vantu","vanto",".ti.",".nt.$.sg.$.nom.","0.99",],
+[,"vantu","vatā",".ti.",".m.$.sg.$.abl.","0.99",],
+[,"vantu","vatā",".ti.",".m.$.sg.$.inst.","0.99",],
+[,"vantu","vatā",".ti.",".nt.$.sg.$.abl.","0.99",],
+[,"vantu","vatā",".ti.",".nt.$.sg.$.inst.","0.99",],
+[,"vantu","vatā",".ti.",".m.$.sg.$.abl.","0.99",],
+[,"vantu","vatā",".ti.",".m.$.sg.$.inst.","0.99",],
+[,"vantu","vatā",".ti.",".nt.$.sg.$.abl.","0.99",],
+[,"vantu","vatā",".ti.",".nt.$.sg.$.inst.","0.99",],
+[,"vantu","vataṃ",".ti.",".m.$.pl.$.dat.","0.99",],
+[,"vantu","vataṃ",".ti.",".m.$.pl.$.gen.","0.99",],
+[,"vantu","vataṃ",".ti.",".nt.$.pl.$.dat.","0.99",],
+[,"vantu","vataṃ",".ti.",".nt.$.pl.$.gen.","0.99",],
+[,"vantu","vataṃ",".ti.",".nt.$.pl.$.dat.","0.99",],
+[,"vantu","vataṃ",".ti.",".nt.$.pl.$.gen.","0.99",],
+[,"vantu","vatena",".ti.",".m.$.sg.$.inst.","0.99",],
+[,"vantu","vatena",".ti.",".nt.$.sg.$.inst.","0.99",],
+[,"vantu","vatena",".ti.",".m.$.sg.$.inst.","0.99",],
+[,"vantu","vatena",".ti.",".nt.$.sg.$.inst.","0.99",],
+[,"vantu","vatī",".ti.",".f.$.pl.$.acc.","0.99",],
+[,"vantu","vatī",".ti.",".f.$.pl.$.nom.","0.99",],
+[,"vantu","vatī",".ti.",".f.$.pl.$.voc.","0.3",],
+[,"vantu","vatī",".ti.",".f.$.sg.$.nom.","0.99",],
+[,"vantu","vatī",".ti.",".f.$.sg.$.voc.","0.3",],
+[,"vantu","vati",".ti.",".m.$.sg.$.loc.","0.99",],
+[,"vantu","vati",".ti.",".nt.$.sg.$.loc.","0.99",],
+[,"vantu","vati",".ti.",".m.$.sg.$.loc.","0.99",],
+[,"vantu","vati",".ti.",".nt.$.sg.$.loc.","0.99",],
+[,"vantu","vatībhi",".ti.",".f.$.pl.$.abl.","0.99",],
+[,"vantu","vatībhi",".ti.",".f.$.pl.$.inst.","0.99",],
+[,"vantu","vatīhi",".ti.",".f.$.pl.$.abl.","0.99",],
+[,"vantu","vatīhi",".ti.",".f.$.pl.$.inst.","0.99",],
+[,"vantu","vatiṃ",".ti.",".f.$.sg.$.acc.","0.99",],
+[,"vantu","vatīnaṃ",".ti.",".f.$.pl.$.dat.","0.99",],
+[,"vantu","vatīnaṃ",".ti.",".f.$.pl.$.gen.","0.99",],
+[,"vantu","vatīsu",".ti.",".f.$.pl.$.loc.","0.99",],
+[,"vantu","vatiyā",".ti.",".f.$.sg.$.abl.","0.99",],
+[,"vantu","vatiyā",".ti.",".f.$.sg.$.dat.","0.99",],
+[,"vantu","vatiyā",".ti.",".f.$.sg.$.gen.","0.99",],
+[,"vantu","vatiyā",".ti.",".f.$.sg.$.inst.","0.99",],
+[,"vantu","vatiyā",".ti.",".f.$.sg.$.loc.","0.99",],
+[,"vantu","vatiyaṃ",".ti.",".f.$.sg.$.loc.","0.99",],
+[,"vantu","vatiyo",".ti.",".f.$.pl.$.acc.","0.99",],
+[,"vantu","vatiyo",".ti.",".f.$.pl.$.nom.","0.99",],
+[,"vantu","vatiyo",".ti.",".f.$.pl.$.voc.","0.3",],
+[,"vantu","vato",".ti.",".m.$.sg.$.dat.","0.99",],
+[,"vantu","vato",".ti.",".m.$.sg.$.gen.","0.99",],
+[,"vantu","vato",".ti.",".nt.$.sg.$.dat.","0.99",],
+[,"vantu","vato",".ti.",".nt.$.sg.$.gen.","0.99",],
+[,"vantu","vato",".ti.",".m.$.sg.$.dat.","0.99",],
+[,"vantu","vato",".ti.",".m.$.sg.$.gen.","0.99",],
+[,"vantu","vato",".ti.",".nt.$.sg.$.dat.","0.99",],
+[,"vantu","vato",".ti.",".nt.$.sg.$.gen.","0.99",],
+[,"vantu","ve",".ti.",".m.$.pl.$.acc.","0.99",],
+[,"vantu","vebhi",".ti.",".m.$.pl.$.abl.","0.99",],
+[,"vantu","vebhi",".ti.",".m.$.pl.$.inst.","0.99",],
+[,"vantu","vehi",".ti.",".m.$.pl.$.abl.","0.99",],
+[,"vantu","vehi",".ti.",".m.$.pl.$.inst.","0.99",],
+[,"vantu","vesu",".ti.",".m.$.pl.$.loc.","0.99",],
+[,"mat","mā",".ti.",".m.$.pl.$.nom.","0.99",],
+[,"mat","mā",".ti.",".m.$.pl.$.voc.","0.3",],
+[,"mat","mā",".ti.",".m.$.sg.$.nom.","0.99",],
+[,"mat","ma",".ti.",".m.$.sg.$.voc.","0.3",],
+[,"mat","mā",".ti.",".m.$.sg.$.voc.","0.3",],
+[,"mat","mā",".ti.",".nt.$.pl.$.nom.","0.99",],
+[,"mat","mā",".ti.",".nt.$.pl.$.voc.","0.3",],
+[,"mat","ma",".ti.",".nt.$.sg.$.voc.","0.3",],
+[,"mat","mā",".ti.",".nt.$.sg.$.voc.","0.3",],
+[,"mat","mā",".ti.",".m.$.sg.$.voc.","0.3",],
+[,"mat","mā",".ti.",".nt.$.sg.$.voc.","0.3",],
+[,"mat","maṃ",".ti.",".m.$.sg.$.acc.","0.99",],
+[,"mat","maṃ",".ti.",".nt.$.sg.$.acc.","0.99",],
+[,"mat","maṃ",".ti.",".nt.$.sg.$.nom.","0.99",],
+[,"mat","maṃ",".ti.",".m.$.sg.$.nom.","0.99",],
+[,"mat","maṃ",".ti.",".m.$.sg.$.voc.","0.3",],
+[,"mat","maṃ",".ti.",".nt.$.sg.$.voc.","0.3",],
+[,"mat","maṃ",".ti.",".m.$.sg.$.voc.","0.3",],
+[,"mat","maṃ",".ti.",".nt.$.sg.$.voc.","0.3",],
+[,"mat","mānaṃ",".ti.",".m.$.pl.$.dat.","0.99",],
+[,"mat","mānaṃ",".ti.",".m.$.pl.$.gen.","0.99",],
+[,"mat","mantā",".ti.",".m.$.pl.$.nom.","0.99",],
+[,"mat","mantā",".ti.",".m.$.pl.$.voc.","0.3",],
+[,"mat","mantā",".ti.",".m.$.sg.$.abl.","0.99",],
+[,"mat","manta",".ti.",".m.$.sg.$.voc.","0.3",],
+[,"mat","mantā",".ti.",".m.$.sg.$.voc.","0.3",],
+[,"mat","manta",".ti.",".nt.$.pl.$.acc.","0.99",],
+[,"mat","mantā",".ti.",".nt.$.pl.$.acc.","0.99",],
+[,"mat","manta",".ti.",".nt.$.pl.$.nom.","0.99",],
+[,"mat","mantā",".ti.",".nt.$.pl.$.nom.","0.99",],
+[,"mat","manta",".ti.",".nt.$.pl.$.voc.","0.3",],
+[,"mat","mantā",".ti.",".nt.$.pl.$.voc.","0.3",],
+[,"mat","mantā",".ti.",".nt.$.sg.$.abl.","0.99",],
+[,"mat","manta",".ti.",".nt.$.sg.$.voc.","0.3",],
+[,"mat","mantā",".ti.",".nt.$.sg.$.voc.","0.3",],
+[,"mat","mantaṃ",".ti.",".m.$.sg.$.acc.","0.99",],
+[,"mat","mantaṃ",".ti.",".nt.$.sg.$.acc.","0.99",],
+[,"mat","mantaṃ",".ti.",".nt.$.sg.$.nom.","0.99",],
+[,"mat","mantaṃ",".ti.",".nt.$.sg.$.nom.","0.99",],
+[,"mat","mantaṃ",".ti.",".m.$.sg.$.acc.","0.99",],
+[,"mat","mantaṃ",".ti.",".nt.$.sg.$.acc.","0.99",],
+[,"mat","mantamhā",".ti.",".m.$.sg.$.abl.","0.99",],
+[,"mat","mantamhā",".ti.",".nt.$.sg.$.abl.","0.99",],
+[,"mat","mantamhā",".ti.",".m.$.sg.$.abl.","0.99",],
+[,"mat","mantamhā",".ti.",".nt.$.sg.$.abl.","0.99",],
+[,"mat","mantamhi",".ti.",".m.$.sg.$.loc.","0.99",],
+[,"mat","mantamhi",".ti.",".nt.$.sg.$.loc.","0.99",],
+[,"mat","mantamhi",".ti.",".m.$.sg.$.loc.","0.99",],
+[,"mat","mantamhi",".ti.",".nt.$.sg.$.loc.","0.99",],
+[,"mat","mantānaṃ",".ti.",".m.$.pl.$.dat.","0.99",],
+[,"mat","mantānaṃ",".ti.",".m.$.pl.$.gen.","0.99",],
+[,"mat","mantānaṃ",".ti.",".nt.$.pl.$.dat.","0.99",],
+[,"mat","mantānaṃ",".ti.",".nt.$.pl.$.gen.","0.99",],
+[,"mat","mantānaṃ",".ti.",".nt.$.pl.$.dat.","0.99",],
+[,"mat","mantānaṃ",".ti.",".nt.$.pl.$.gen.","0.99",],
+[,"mat","mantani",".ti.",".nt.$.pl.$.acc.","0.99",],
+[,"mat","mantāni",".ti.",".nt.$.pl.$.acc.","0.99",],
+[,"mat","mantani",".ti.",".nt.$.pl.$.nom.","0.99",],
+[,"mat","mantāni",".ti.",".nt.$.pl.$.nom.","0.99",],
+[,"mat","mantani",".ti.",".nt.$.pl.$.voc.","0.3",],
+[,"mat","mantāni",".ti.",".nt.$.pl.$.voc.","0.3",],
+[,"mat","mantasmā",".ti.",".m.$.sg.$.abl.","0.99",],
+[,"mat","mantasmā",".ti.",".nt.$.sg.$.abl.","0.99",],
+[,"mat","mantasmā",".ti.",".m.$.sg.$.abl.","0.99",],
+[,"mat","mantasmā",".ti.",".nt.$.sg.$.abl.","0.99",],
+[,"mat","mantasmiṃ",".ti.",".m.$.sg.$.loc.","0.99",],
+[,"mat","mantasmiṃ",".ti.",".nt.$.sg.$.loc.","0.99",],
+[,"mat","mantasmiṃ",".ti.",".m.$.sg.$.loc.","0.99",],
+[,"mat","mantasmiṃ",".ti.",".nt.$.sg.$.loc.","0.99",],
+[,"mat","mantassa",".ti.",".m.$.sg.$.dat.","0.99",],
+[,"mat","mantassa",".ti.",".m.$.sg.$.gen.","0.99",],
+[,"mat","mantassa",".ti.",".nt.$.sg.$.dat.","0.99",],
+[,"mat","mantassa",".ti.",".nt.$.sg.$.gen.","0.99",],
+[,"mat","mantassa",".ti.",".m.$.sg.$.dat.","0.99",],
+[,"mat","mantassa",".ti.",".m.$.sg.$.gen.","0.99",],
+[,"mat","mantassa",".ti.",".nt.$.sg.$.dat.","0.99",],
+[,"mat","mantassa",".ti.",".nt.$.sg.$.gen.","0.99",],
+[,"mat","mante",".ti.",".m.$.pl.$.acc.","0.99",],
+[,"mat","mante",".ti.",".m.$.sg.$.loc.","0.99",],
+[,"mat","mante",".ti.",".nt.$.pl.$.acc.","0.99",],
+[,"mat","mante",".ti.",".nt.$.sg.$.loc.","0.99",],
+[,"mat","mantebhi",".ti.",".m.$.pl.$.abl.","0.99",],
+[,"mat","mantebhi",".ti.",".m.$.pl.$.inst.","0.99",],
+[,"mat","mantebhi",".ti.",".nt.$.pl.$.abl.","0.99",],
+[,"mat","mantebhi",".ti.",".nt.$.pl.$.inst.","0.99",],
+[,"mat","mantehi",".ti.",".m.$.pl.$.abl.","0.99",],
+[,"mat","mantehi",".ti.",".m.$.pl.$.inst.","0.99",],
+[,"mat","mantehi",".ti.",".nt.$.pl.$.abl.","0.99",],
+[,"mat","mantehi",".ti.",".nt.$.pl.$.inst.","0.99",],
+[,"mat","mantesu",".ti.",".m.$.pl.$.loc.","0.99",],
+[,"mat","mantesu",".ti.",".nt.$.pl.$.loc.","0.99",],
+[,"mat","mantesu",".ti.",".nt.$.pl.$.loc.","0.99",],
+[,"mat","mantī",".ti.",".f.$.pl.$.acc.","0.99",],
+[,"mat","mantī",".ti.",".f.$.pl.$.nom.","0.99",],
+[,"mat","mantī",".ti.",".f.$.pl.$.voc.","0.3",],
+[,"mat","mantī",".ti.",".f.$.sg.$.nom.","0.99",],
+[,"mat","mantī",".ti.",".f.$.sg.$.voc.","0.3",],
+[,"mat","mantībhi",".ti.",".f.$.pl.$.abl.","0.99",],
+[,"mat","mantībhi",".ti.",".f.$.pl.$.inst.","0.99",],
+[,"mat","mantīhi",".ti.",".f.$.pl.$.abl.","0.99",],
+[,"mat","mantīhi",".ti.",".f.$.pl.$.inst.","0.99",],
+[,"mat","mantiṃ",".ti.",".f.$.sg.$.acc.","0.99",],
+[,"mat","mantīnaṃ",".ti.",".f.$.pl.$.dat.","0.99",],
+[,"mat","mantīnaṃ",".ti.",".f.$.pl.$.gen.","0.99",],
+[,"mat","mantīsu",".ti.",".f.$.pl.$.loc.","0.99",],
+[,"mat","mantiyā",".ti.",".f.$.sg.$.abl.","0.99",],
+[,"mat","mantiyā",".ti.",".f.$.sg.$.dat.","0.99",],
+[,"mat","mantiyā",".ti.",".f.$.sg.$.gen.","0.99",],
+[,"mat","mantiyā",".ti.",".f.$.sg.$.inst.","0.99",],
+[,"mat","mantiyā",".ti.",".f.$.sg.$.loc.","0.99",],
+[,"mat","mantiyaṃ",".ti.",".f.$.sg.$.loc.","0.99",],
+[,"mat","mantiyo",".ti.",".f.$.pl.$.acc.","0.99",],
+[,"mat","mantiyo",".ti.",".f.$.pl.$.nom.","0.99",],
+[,"mat","mantiyo",".ti.",".f.$.pl.$.voc.","0.3",],
+[,"mat","manto",".ti.",".m.$.pl.$.nom.","0.99",],
+[,"mat","manto",".ti.",".m.$.pl.$.voc.","0.3",],
+[,"mat","manto",".ti.",".m.$.sg.$.nom.","0.99",],
+[,"mat","manto",".ti.",".nt.$.pl.$.nom.","0.99",],
+[,"mat","manto",".ti.",".nt.$.pl.$.voc.","0.3",],
+[,"mat","manto",".ti.",".nt.$.sg.$.nom.","0.99",],
+[,"mat","matā",".ti.",".m.$.sg.$.abl.","0.99",],
+[,"mat","matā",".ti.",".m.$.sg.$.inst.","0.99",],
+[,"mat","matā",".ti.",".nt.$.sg.$.abl.","0.99",],
+[,"mat","matā",".ti.",".nt.$.sg.$.inst.","0.99",],
+[,"mat","matā",".ti.",".m.$.sg.$.abl.","0.99",],
+[,"mat","matā",".ti.",".m.$.sg.$.inst.","0.99",],
+[,"mat","matā",".ti.",".nt.$.sg.$.abl.","0.99",],
+[,"mat","matā",".ti.",".nt.$.sg.$.inst.","0.99",],
+[,"mat","mataṃ",".ti.",".m.$.pl.$.dat.","0.99",],
+[,"mat","mataṃ",".ti.",".m.$.pl.$.gen.","0.99",],
+[,"mat","mataṃ",".ti.",".nt.$.pl.$.dat.","0.99",],
+[,"mat","mataṃ",".ti.",".nt.$.pl.$.gen.","0.99",],
+[,"mat","mataṃ",".ti.",".nt.$.pl.$.dat.","0.99",],
+[,"mat","mataṃ",".ti.",".nt.$.pl.$.gen.","0.99",],
+[,"mat","matena",".ti.",".m.$.sg.$.inst.","0.99",],
+[,"mat","matena",".ti.",".nt.$.sg.$.inst.","0.99",],
+[,"mat","matena",".ti.",".m.$.sg.$.inst.","0.99",],
+[,"mat","matena",".ti.",".nt.$.sg.$.inst.","0.99",],
+[,"mat","matī",".ti.",".f.$.pl.$.acc.","0.99",],
+[,"mat","matī",".ti.",".f.$.pl.$.nom.","0.99",],
+[,"mat","matī",".ti.",".f.$.pl.$.voc.","0.3",],
+[,"mat","matī",".ti.",".f.$.sg.$.nom.","0.99",],
+[,"mat","matī",".ti.",".f.$.sg.$.voc.","0.3",],
+[,"mat","mati",".ti.",".m.$.sg.$.loc.","0.99",],
+[,"mat","mati",".ti.",".nt.$.sg.$.loc.","0.99",],
+[,"mat","mati",".ti.",".m.$.sg.$.loc.","0.99",],
+[,"mat","mati",".ti.",".nt.$.sg.$.loc.","0.99",],
+[,"mat","matībhi",".ti.",".f.$.pl.$.abl.","0.99",],
+[,"mat","matībhi",".ti.",".f.$.pl.$.inst.","0.99",],
+[,"mat","matīhi",".ti.",".f.$.pl.$.abl.","0.99",],
+[,"mat","matīhi",".ti.",".f.$.pl.$.inst.","0.99",],
+[,"mat","matiṃ",".ti.",".f.$.sg.$.acc.","0.99",],
+[,"mat","matīnaṃ",".ti.",".f.$.pl.$.dat.","0.99",],
+[,"mat","matīnaṃ",".ti.",".f.$.pl.$.gen.","0.99",],
+[,"mat","matīsu",".ti.",".f.$.pl.$.loc.","0.99",],
+[,"mat","matiyā",".ti.",".f.$.sg.$.abl.","0.99",],
+[,"mat","matiyā",".ti.",".f.$.sg.$.dat.","0.99",],
+[,"mat","matiyā",".ti.",".f.$.sg.$.gen.","0.99",],
+[,"mat","matiyā",".ti.",".f.$.sg.$.inst.","0.99",],
+[,"mat","matiyā",".ti.",".f.$.sg.$.loc.","0.99",],
+[,"mat","matiyaṃ",".ti.",".f.$.sg.$.loc.","0.99",],
+[,"mat","matiyo",".ti.",".f.$.pl.$.acc.","0.99",],
+[,"mat","matiyo",".ti.",".f.$.pl.$.nom.","0.99",],
+[,"mat","matiyo",".ti.",".f.$.pl.$.voc.","0.3",],
+[,"mat","mato",".ti.",".m.$.sg.$.dat.","0.99",],
+[,"mat","mato",".ti.",".m.$.sg.$.gen.","0.99",],
+[,"mat","mato",".ti.",".nt.$.sg.$.dat.","0.99",],
+[,"mat","mato",".ti.",".nt.$.sg.$.gen.","0.99",],
+[,"mat","mato",".ti.",".m.$.sg.$.dat.","0.99",],
+[,"mat","mato",".ti.",".m.$.sg.$.gen.","0.99",],
+[,"mat","mato",".ti.",".nt.$.sg.$.dat.","0.99",],
+[,"mat","mato",".ti.",".nt.$.sg.$.gen.","0.99",],
+[,"mat","me",".ti.",".m.$.pl.$.acc.","0.99",],
+[,"mat","mebhi",".ti.",".m.$.pl.$.abl.","0.99",],
+[,"mat","mebhi",".ti.",".m.$.pl.$.inst.","0.99",],
+[,"mat","mehi",".ti.",".m.$.pl.$.abl.","0.99",],
+[,"mat","mehi",".ti.",".m.$.pl.$.inst.","0.99",],
+[,"mat","mesu",".ti.",".m.$.pl.$.loc.","0.99",],
+[,"vat","vā",".ti.",".m.$.pl.$.nom.","0.99",],
+[,"vat","vā",".ti.",".m.$.pl.$.voc.","0.3",],
+[,"vat","vā",".ti.",".m.$.sg.$.nom.","0.99",],
+[,"vat","va",".ti.",".m.$.sg.$.voc.","0.3",],
+[,"vat","vā",".ti.",".m.$.sg.$.voc.","0.3",],
+[,"vat","vā",".ti.",".nt.$.pl.$.nom.","0.99",],
+[,"vat","vā",".ti.",".nt.$.pl.$.voc.","0.3",],
+[,"vat","va",".ti.",".nt.$.sg.$.voc.","0.3",],
+[,"vat","vā",".ti.",".nt.$.sg.$.voc.","0.3",],
+[,"vat","vā",".ti.",".m.$.sg.$.voc.","0.3",],
+[,"vat","vā",".ti.",".nt.$.sg.$.voc.","0.3",],
+[,"vat","vaṃ",".ti.",".m.$.sg.$.acc.","0.99",],
+[,"vat","vaṃ",".ti.",".nt.$.sg.$.acc.","0.99",],
+[,"vat","vaṃ",".ti.",".nt.$.sg.$.nom.","0.99",],
+[,"vat","vaṃ",".ti.",".m.$.sg.$.nom.","0.99",],
+[,"vat","vaṃ",".ti.",".m.$.sg.$.voc.","0.3",],
+[,"vat","vaṃ",".ti.",".nt.$.sg.$.voc.","0.3",],
+[,"vat","vaṃ",".ti.",".m.$.sg.$.voc.","0.3",],
+[,"vat","vaṃ",".ti.",".nt.$.sg.$.voc.","0.3",],
+[,"vat","vānaṃ",".ti.",".m.$.pl.$.dat.","0.99",],
+[,"vat","vānaṃ",".ti.",".m.$.pl.$.gen.","0.99",],
+[,"vat","vantā",".ti.",".m.$.pl.$.nom.","0.99",],
+[,"vat","vantā",".ti.",".m.$.pl.$.voc.","0.3",],
+[,"vat","vantā",".ti.",".m.$.sg.$.abl.","0.99",],
+[,"vat","vanta",".ti.",".m.$.sg.$.voc.","0.3",],
+[,"vat","vantā",".ti.",".m.$.sg.$.voc.","0.3",],
+[,"vat","vanta",".ti.",".nt.$.pl.$.acc.","0.99",],
+[,"vat","vantā",".ti.",".nt.$.pl.$.acc.","0.99",],
+[,"vat","vanta",".ti.",".nt.$.pl.$.nom.","0.99",],
+[,"vat","vantā",".ti.",".nt.$.pl.$.nom.","0.99",],
+[,"vat","vanta",".ti.",".nt.$.pl.$.voc.","0.3",],
+[,"vat","vantā",".ti.",".nt.$.pl.$.voc.","0.3",],
+[,"vat","vantā",".ti.",".nt.$.sg.$.abl.","0.99",],
+[,"vat","vanta",".ti.",".nt.$.sg.$.voc.","0.3",],
+[,"vat","vantā",".ti.",".nt.$.sg.$.voc.","0.3",],
+[,"vat","vantaṃ",".ti.",".m.$.sg.$.acc.","0.99",],
+[,"vat","vantaṃ",".ti.",".nt.$.sg.$.acc.","0.99",],
+[,"vat","vantaṃ",".ti.",".nt.$.sg.$.nom.","0.99",],
+[,"vat","vantaṃ",".ti.",".nt.$.sg.$.nom.","0.99",],
+[,"vat","vantaṃ",".ti.",".m.$.sg.$.acc.","0.99",],
+[,"vat","vantaṃ",".ti.",".nt.$.sg.$.acc.","0.99",],
+[,"vat","vantamhā",".ti.",".m.$.sg.$.abl.","0.99",],
+[,"vat","vantamhā",".ti.",".nt.$.sg.$.abl.","0.99",],
+[,"vat","vantamhā",".ti.",".m.$.sg.$.abl.","0.99",],
+[,"vat","vantamhā",".ti.",".nt.$.sg.$.abl.","0.99",],
+[,"vat","vantamhi",".ti.",".m.$.sg.$.loc.","0.99",],
+[,"vat","vantamhi",".ti.",".nt.$.sg.$.loc.","0.99",],
+[,"vat","vantamhi",".ti.",".m.$.sg.$.loc.","0.99",],
+[,"vat","vantamhi",".ti.",".nt.$.sg.$.loc.","0.99",],
+[,"vat","vantānaṃ",".ti.",".m.$.pl.$.dat.","0.99",],
+[,"vat","vantānaṃ",".ti.",".m.$.pl.$.gen.","0.99",],
+[,"vat","vantānaṃ",".ti.",".nt.$.pl.$.dat.","0.99",],
+[,"vat","vantānaṃ",".ti.",".nt.$.pl.$.gen.","0.99",],
+[,"vat","vantānaṃ",".ti.",".nt.$.pl.$.dat.","0.99",],
+[,"vat","vantānaṃ",".ti.",".nt.$.pl.$.gen.","0.99",],
+[,"vat","vantani",".ti.",".nt.$.pl.$.acc.","0.99",],
+[,"vat","vantāni",".ti.",".nt.$.pl.$.acc.","0.99",],
+[,"vat","vantani",".ti.",".nt.$.pl.$.nom.","0.99",],
+[,"vat","vantāni",".ti.",".nt.$.pl.$.nom.","0.99",],
+[,"vat","vantani",".ti.",".nt.$.pl.$.voc.","0.3",],
+[,"vat","vantāni",".ti.",".nt.$.pl.$.voc.","0.3",],
+[,"vat","vantasmā",".ti.",".m.$.sg.$.abl.","0.99",],
+[,"vat","vantasmā",".ti.",".nt.$.sg.$.abl.","0.99",],
+[,"vat","vantasmā",".ti.",".m.$.sg.$.abl.","0.99",],
+[,"vat","vantasmā",".ti.",".nt.$.sg.$.abl.","0.99",],
+[,"vat","vantasmiṃ",".ti.",".m.$.sg.$.loc.","0.99",],
+[,"vat","vantasmiṃ",".ti.",".nt.$.sg.$.loc.","0.99",],
+[,"vat","vantasmiṃ",".ti.",".m.$.sg.$.loc.","0.99",],
+[,"vat","vantasmiṃ",".ti.",".nt.$.sg.$.loc.","0.99",],
+[,"vat","vantassa",".ti.",".m.$.sg.$.dat.","0.99",],
+[,"vat","vantassa",".ti.",".m.$.sg.$.gen.","0.99",],
+[,"vat","vantassa",".ti.",".nt.$.sg.$.dat.","0.99",],
+[,"vat","vantassa",".ti.",".nt.$.sg.$.gen.","0.99",],
+[,"vat","vantassa",".ti.",".m.$.sg.$.dat.","0.99",],
+[,"vat","vantassa",".ti.",".m.$.sg.$.gen.","0.99",],
+[,"vat","vantassa",".ti.",".nt.$.sg.$.dat.","0.99",],
+[,"vat","vantassa",".ti.",".nt.$.sg.$.gen.","0.99",],
+[,"vat","vante",".ti.",".m.$.pl.$.acc.","0.99",],
+[,"vat","vante",".ti.",".m.$.sg.$.loc.","0.99",],
+[,"vat","vante",".ti.",".nt.$.pl.$.acc.","0.99",],
+[,"vat","vante",".ti.",".nt.$.sg.$.loc.","0.99",],
+[,"vat","vantebhi",".ti.",".m.$.pl.$.abl.","0.99",],
+[,"vat","vantebhi",".ti.",".m.$.pl.$.inst.","0.99",],
+[,"vat","vantebhi",".ti.",".nt.$.pl.$.abl.","0.99",],
+[,"vat","vantebhi",".ti.",".nt.$.pl.$.inst.","0.99",],
+[,"vat","vantehi",".ti.",".m.$.pl.$.abl.","0.99",],
+[,"vat","vantehi",".ti.",".m.$.pl.$.inst.","0.99",],
+[,"vat","vantehi",".ti.",".nt.$.pl.$.abl.","0.99",],
+[,"vat","vantehi",".ti.",".nt.$.pl.$.inst.","0.99",],
+[,"vat","vantesu",".ti.",".m.$.pl.$.loc.","0.99",],
+[,"vat","vantesu",".ti.",".nt.$.pl.$.loc.","0.99",],
+[,"vat","vantesu",".ti.",".nt.$.pl.$.loc.","0.99",],
+[,"vat","vantī",".ti.",".f.$.pl.$.acc.","0.99",],
+[,"vat","vantī",".ti.",".f.$.pl.$.nom.","0.99",],
+[,"vat","vantī",".ti.",".f.$.pl.$.voc.","0.3",],
+[,"vat","vantī",".ti.",".f.$.sg.$.nom.","0.99",],
+[,"vat","vantī",".ti.",".f.$.sg.$.voc.","0.3",],
+[,"vat","vantībhi",".ti.",".f.$.pl.$.abl.","0.99",],
+[,"vat","vantībhi",".ti.",".f.$.pl.$.inst.","0.99",],
+[,"vat","vantīhi",".ti.",".f.$.pl.$.abl.","0.99",],
+[,"vat","vantīhi",".ti.",".f.$.pl.$.inst.","0.99",],
+[,"vat","vantiṃ",".ti.",".f.$.sg.$.acc.","0.99",],
+[,"vat","vantīnaṃ",".ti.",".f.$.pl.$.dat.","0.99",],
+[,"vat","vantīnaṃ",".ti.",".f.$.pl.$.gen.","0.99",],
+[,"vat","vantīsu",".ti.",".f.$.pl.$.loc.","0.99",],
+[,"vat","vantiyā",".ti.",".f.$.sg.$.abl.","0.99",],
+[,"vat","vantiyā",".ti.",".f.$.sg.$.dat.","0.99",],
+[,"vat","vantiyā",".ti.",".f.$.sg.$.gen.","0.99",],
+[,"vat","vantiyā",".ti.",".f.$.sg.$.inst.","0.99",],
+[,"vat","vantiyā",".ti.",".f.$.sg.$.loc.","0.99",],
+[,"vat","vantiyaṃ",".ti.",".f.$.sg.$.loc.","0.99",],
+[,"vat","vantiyo",".ti.",".f.$.pl.$.acc.","0.99",],
+[,"vat","vantiyo",".ti.",".f.$.pl.$.nom.","0.99",],
+[,"vat","vantiyo",".ti.",".f.$.pl.$.voc.","0.3",],
+[,"vat","vanto",".ti.",".m.$.pl.$.nom.","0.99",],
+[,"vat","vanto",".ti.",".m.$.pl.$.voc.","0.3",],
+[,"vat","vanto",".ti.",".m.$.sg.$.nom.","0.99",],
+[,"vat","vanto",".ti.",".nt.$.pl.$.nom.","0.99",],
+[,"vat","vanto",".ti.",".nt.$.pl.$.voc.","0.3",],
+[,"vat","vanto",".ti.",".nt.$.sg.$.nom.","0.99",],
+[,"vat","vatā",".ti.",".m.$.sg.$.abl.","0.99",],
+[,"vat","vatā",".ti.",".m.$.sg.$.inst.","0.99",],
+[,"vat","vatā",".ti.",".nt.$.sg.$.abl.","0.99",],
+[,"vat","vatā",".ti.",".nt.$.sg.$.inst.","0.99",],
+[,"vat","vatā",".ti.",".m.$.sg.$.abl.","0.99",],
+[,"vat","vatā",".ti.",".m.$.sg.$.inst.","0.99",],
+[,"vat","vatā",".ti.",".nt.$.sg.$.abl.","0.99",],
+[,"vat","vatā",".ti.",".nt.$.sg.$.inst.","0.99",],
+[,"vat","vataṃ",".ti.",".m.$.pl.$.dat.","0.99",],
+[,"vat","vataṃ",".ti.",".m.$.pl.$.gen.","0.99",],
+[,"vat","vataṃ",".ti.",".nt.$.pl.$.dat.","0.99",],
+[,"vat","vataṃ",".ti.",".nt.$.pl.$.gen.","0.99",],
+[,"vat","vataṃ",".ti.",".nt.$.pl.$.dat.","0.99",],
+[,"vat","vataṃ",".ti.",".nt.$.pl.$.gen.","0.99",],
+[,"vat","vatena",".ti.",".m.$.sg.$.inst.","0.99",],
+[,"vat","vatena",".ti.",".nt.$.sg.$.inst.","0.99",],
+[,"vat","vatena",".ti.",".m.$.sg.$.inst.","0.99",],
+[,"vat","vatena",".ti.",".nt.$.sg.$.inst.","0.99",],
+[,"vat","vatī",".ti.",".f.$.pl.$.acc.","0.99",],
+[,"vat","vatī",".ti.",".f.$.pl.$.nom.","0.99",],
+[,"vat","vatī",".ti.",".f.$.pl.$.voc.","0.3",],
+[,"vat","vatī",".ti.",".f.$.sg.$.nom.","0.99",],
+[,"vat","vatī",".ti.",".f.$.sg.$.voc.","0.3",],
+[,"vat","vati",".ti.",".m.$.sg.$.loc.","0.99",],
+[,"vat","vati",".ti.",".nt.$.sg.$.loc.","0.99",],
+[,"vat","vati",".ti.",".m.$.sg.$.loc.","0.99",],
+[,"vat","vati",".ti.",".nt.$.sg.$.loc.","0.99",],
+[,"vat","vatībhi",".ti.",".f.$.pl.$.abl.","0.99",],
+[,"vat","vatībhi",".ti.",".f.$.pl.$.inst.","0.99",],
+[,"vat","vatīhi",".ti.",".f.$.pl.$.abl.","0.99",],
+[,"vat","vatīhi",".ti.",".f.$.pl.$.inst.","0.99",],
+[,"vat","vatiṃ",".ti.",".f.$.sg.$.acc.","0.99",],
+[,"vat","vatīnaṃ",".ti.",".f.$.pl.$.dat.","0.99",],
+[,"vat","vatīnaṃ",".ti.",".f.$.pl.$.gen.","0.99",],
+[,"vat","vatīsu",".ti.",".f.$.pl.$.loc.","0.99",],
+[,"vat","vatiyā",".ti.",".f.$.sg.$.abl.","0.99",],
+[,"vat","vatiyā",".ti.",".f.$.sg.$.dat.","0.99",],
+[,"vat","vatiyā",".ti.",".f.$.sg.$.gen.","0.99",],
+[,"vat","vatiyā",".ti.",".f.$.sg.$.inst.","0.99",],
+[,"vat","vatiyā",".ti.",".f.$.sg.$.loc.","0.99",],
+[,"vat","vatiyaṃ",".ti.",".f.$.sg.$.loc.","0.99",],
+[,"vat","vatiyo",".ti.",".f.$.pl.$.acc.","0.99",],
+[,"vat","vatiyo",".ti.",".f.$.pl.$.nom.","0.99",],
+[,"vat","vatiyo",".ti.",".f.$.pl.$.voc.","0.3",],
+[,"vat","vato",".ti.",".m.$.sg.$.dat.","0.99",],
+[,"vat","vato",".ti.",".m.$.sg.$.gen.","0.99",],
+[,"vat","vato",".ti.",".nt.$.sg.$.dat.","0.99",],
+[,"vat","vato",".ti.",".nt.$.sg.$.gen.","0.99",],
+[,"vat","vato",".ti.",".m.$.sg.$.dat.","0.99",],
+[,"vat","vato",".ti.",".m.$.sg.$.gen.","0.99",],
+[,"vat","vato",".ti.",".nt.$.sg.$.dat.","0.99",],
+[,"vat","vato",".ti.",".nt.$.sg.$.gen.","0.99",],
+[,"vat","ve",".ti.",".m.$.pl.$.acc.","0.99",],
+[,"vat","vebhi",".ti.",".m.$.pl.$.abl.","0.99",],
+[,"vat","vebhi",".ti.",".m.$.pl.$.inst.","0.99",],
+[,"vat","vehi",".ti.",".m.$.pl.$.abl.","0.99",],
+[,"vat","vehi",".ti.",".m.$.pl.$.inst.","0.99",],
+[,"vat","vesu",".ti.",".m.$.pl.$.loc.","0.99",],
+[,"manta","mā",".ti.",".m.$.pl.$.nom.","0.99",],
+[,"manta","mā",".ti.",".m.$.pl.$.voc.","0.3",],
+[,"manta","mā",".ti.",".m.$.sg.$.nom.","0.99",],
+[,"manta","ma",".ti.",".m.$.sg.$.voc.","0.3",],
+[,"manta","mā",".ti.",".m.$.sg.$.voc.","0.3",],
+[,"manta","mā",".ti.",".nt.$.pl.$.nom.","0.99",],
+[,"manta","mā",".ti.",".nt.$.pl.$.voc.","0.3",],
+[,"manta","ma",".ti.",".nt.$.sg.$.voc.","0.3",],
+[,"manta","mā",".ti.",".nt.$.sg.$.voc.","0.3",],
+[,"manta","mā",".ti.",".m.$.sg.$.voc.","0.3",],
+[,"manta","mā",".ti.",".nt.$.sg.$.voc.","0.3",],
+[,"manta","maṃ",".ti.",".m.$.sg.$.acc.","0.99",],
+[,"manta","maṃ",".ti.",".nt.$.sg.$.acc.","0.99",],
+[,"manta","maṃ",".ti.",".nt.$.sg.$.nom.","0.99",],
+[,"manta","maṃ",".ti.",".m.$.sg.$.nom.","0.99",],
+[,"manta","maṃ",".ti.",".m.$.sg.$.voc.","0.3",],
+[,"manta","maṃ",".ti.",".nt.$.sg.$.voc.","0.3",],
+[,"manta","maṃ",".ti.",".m.$.sg.$.voc.","0.3",],
+[,"manta","maṃ",".ti.",".nt.$.sg.$.voc.","0.3",],
+[,"manta","mānaṃ",".ti.",".m.$.pl.$.dat.","0.99",],
+[,"manta","mānaṃ",".ti.",".m.$.pl.$.gen.","0.99",],
+[,"manta","mantā",".ti.",".m.$.pl.$.nom.","0.99",],
+[,"manta","mantā",".ti.",".m.$.pl.$.voc.","0.3",],
+[,"manta","mantā",".ti.",".m.$.sg.$.abl.","0.99",],
+[,"manta","manta",".ti.",".m.$.sg.$.voc.","0.3",],
+[,"manta","mantā",".ti.",".m.$.sg.$.voc.","0.3",],
+[,"manta","manta",".ti.",".nt.$.pl.$.acc.","0.99",],
+[,"manta","mantā",".ti.",".nt.$.pl.$.acc.","0.99",],
+[,"manta","manta",".ti.",".nt.$.pl.$.nom.","0.99",],
+[,"manta","mantā",".ti.",".nt.$.pl.$.nom.","0.99",],
+[,"manta","manta",".ti.",".nt.$.pl.$.voc.","0.3",],
+[,"manta","mantā",".ti.",".nt.$.pl.$.voc.","0.3",],
+[,"manta","mantā",".ti.",".nt.$.sg.$.abl.","0.99",],
+[,"manta","manta",".ti.",".nt.$.sg.$.voc.","0.3",],
+[,"manta","mantā",".ti.",".nt.$.sg.$.voc.","0.3",],
+[,"manta","mantaṃ",".ti.",".m.$.sg.$.acc.","0.99",],
+[,"manta","mantaṃ",".ti.",".nt.$.sg.$.acc.","0.99",],
+[,"manta","mantaṃ",".ti.",".nt.$.sg.$.nom.","0.99",],
+[,"manta","mantaṃ",".ti.",".nt.$.sg.$.nom.","0.99",],
+[,"manta","mantaṃ",".ti.",".m.$.sg.$.acc.","0.99",],
+[,"manta","mantaṃ",".ti.",".nt.$.sg.$.acc.","0.99",],
+[,"manta","mantamhā",".ti.",".m.$.sg.$.abl.","0.99",],
+[,"manta","mantamhā",".ti.",".nt.$.sg.$.abl.","0.99",],
+[,"manta","mantamhā",".ti.",".m.$.sg.$.abl.","0.99",],
+[,"manta","mantamhā",".ti.",".nt.$.sg.$.abl.","0.99",],
+[,"manta","mantamhi",".ti.",".m.$.sg.$.loc.","0.99",],
+[,"manta","mantamhi",".ti.",".nt.$.sg.$.loc.","0.99",],
+[,"manta","mantamhi",".ti.",".m.$.sg.$.loc.","0.99",],
+[,"manta","mantamhi",".ti.",".nt.$.sg.$.loc.","0.99",],
+[,"manta","mantānaṃ",".ti.",".m.$.pl.$.dat.","0.99",],
+[,"manta","mantānaṃ",".ti.",".m.$.pl.$.gen.","0.99",],
+[,"manta","mantānaṃ",".ti.",".nt.$.pl.$.dat.","0.99",],
+[,"manta","mantānaṃ",".ti.",".nt.$.pl.$.gen.","0.99",],
+[,"manta","mantānaṃ",".ti.",".nt.$.pl.$.dat.","0.99",],
+[,"manta","mantānaṃ",".ti.",".nt.$.pl.$.gen.","0.99",],
+[,"manta","mantani",".ti.",".nt.$.pl.$.acc.","0.99",],
+[,"manta","mantāni",".ti.",".nt.$.pl.$.acc.","0.99",],
+[,"manta","mantani",".ti.",".nt.$.pl.$.nom.","0.99",],
+[,"manta","mantāni",".ti.",".nt.$.pl.$.nom.","0.99",],
+[,"manta","mantani",".ti.",".nt.$.pl.$.voc.","0.3",],
+[,"manta","mantāni",".ti.",".nt.$.pl.$.voc.","0.3",],
+[,"manta","mantasmā",".ti.",".m.$.sg.$.abl.","0.99",],
+[,"manta","mantasmā",".ti.",".nt.$.sg.$.abl.","0.99",],
+[,"manta","mantasmā",".ti.",".m.$.sg.$.abl.","0.99",],
+[,"manta","mantasmā",".ti.",".nt.$.sg.$.abl.","0.99",],
+[,"manta","mantasmiṃ",".ti.",".m.$.sg.$.loc.","0.99",],
+[,"manta","mantasmiṃ",".ti.",".nt.$.sg.$.loc.","0.99",],
+[,"manta","mantasmiṃ",".ti.",".m.$.sg.$.loc.","0.99",],
+[,"manta","mantasmiṃ",".ti.",".nt.$.sg.$.loc.","0.99",],
+[,"manta","mantassa",".ti.",".m.$.sg.$.dat.","0.99",],
+[,"manta","mantassa",".ti.",".m.$.sg.$.gen.","0.99",],
+[,"manta","mantassa",".ti.",".nt.$.sg.$.dat.","0.99",],
+[,"manta","mantassa",".ti.",".nt.$.sg.$.gen.","0.99",],
+[,"manta","mantassa",".ti.",".m.$.sg.$.dat.","0.99",],
+[,"manta","mantassa",".ti.",".m.$.sg.$.gen.","0.99",],
+[,"manta","mantassa",".ti.",".nt.$.sg.$.dat.","0.99",],
+[,"manta","mantassa",".ti.",".nt.$.sg.$.gen.","0.99",],
+[,"manta","mante",".ti.",".m.$.pl.$.acc.","0.99",],
+[,"manta","mante",".ti.",".m.$.sg.$.loc.","0.99",],
+[,"manta","mante",".ti.",".nt.$.pl.$.acc.","0.99",],
+[,"manta","mante",".ti.",".nt.$.sg.$.loc.","0.99",],
+[,"manta","mantebhi",".ti.",".m.$.pl.$.abl.","0.99",],
+[,"manta","mantebhi",".ti.",".m.$.pl.$.inst.","0.99",],
+[,"manta","mantebhi",".ti.",".nt.$.pl.$.abl.","0.99",],
+[,"manta","mantebhi",".ti.",".nt.$.pl.$.inst.","0.99",],
+[,"manta","mantehi",".ti.",".m.$.pl.$.abl.","0.99",],
+[,"manta","mantehi",".ti.",".m.$.pl.$.inst.","0.99",],
+[,"manta","mantehi",".ti.",".nt.$.pl.$.abl.","0.99",],
+[,"manta","mantehi",".ti.",".nt.$.pl.$.inst.","0.99",],
+[,"manta","mantesu",".ti.",".m.$.pl.$.loc.","0.99",],
+[,"manta","mantesu",".ti.",".nt.$.pl.$.loc.","0.99",],
+[,"manta","mantesu",".ti.",".nt.$.pl.$.loc.","0.99",],
+[,"manta","mantī",".ti.",".f.$.pl.$.acc.","0.99",],
+[,"manta","mantī",".ti.",".f.$.pl.$.nom.","0.99",],
+[,"manta","mantī",".ti.",".f.$.pl.$.voc.","0.3",],
+[,"manta","mantī",".ti.",".f.$.sg.$.nom.","0.99",],
+[,"manta","mantī",".ti.",".f.$.sg.$.voc.","0.3",],
+[,"manta","mantībhi",".ti.",".f.$.pl.$.abl.","0.99",],
+[,"manta","mantībhi",".ti.",".f.$.pl.$.inst.","0.99",],
+[,"manta","mantīhi",".ti.",".f.$.pl.$.abl.","0.99",],
+[,"manta","mantīhi",".ti.",".f.$.pl.$.inst.","0.99",],
+[,"manta","mantiṃ",".ti.",".f.$.sg.$.acc.","0.99",],
+[,"manta","mantīnaṃ",".ti.",".f.$.pl.$.dat.","0.99",],
+[,"manta","mantīnaṃ",".ti.",".f.$.pl.$.gen.","0.99",],
+[,"manta","mantīsu",".ti.",".f.$.pl.$.loc.","0.99",],
+[,"manta","mantiyā",".ti.",".f.$.sg.$.abl.","0.99",],
+[,"manta","mantiyā",".ti.",".f.$.sg.$.dat.","0.99",],
+[,"manta","mantiyā",".ti.",".f.$.sg.$.gen.","0.99",],
+[,"manta","mantiyā",".ti.",".f.$.sg.$.inst.","0.99",],
+[,"manta","mantiyā",".ti.",".f.$.sg.$.loc.","0.99",],
+[,"manta","mantiyaṃ",".ti.",".f.$.sg.$.loc.","0.99",],
+[,"manta","mantiyo",".ti.",".f.$.pl.$.acc.","0.99",],
+[,"manta","mantiyo",".ti.",".f.$.pl.$.nom.","0.99",],
+[,"manta","mantiyo",".ti.",".f.$.pl.$.voc.","0.3",],
+[,"manta","manto",".ti.",".m.$.pl.$.nom.","0.99",],
+[,"manta","manto",".ti.",".m.$.pl.$.voc.","0.3",],
+[,"manta","manto",".ti.",".m.$.sg.$.nom.","0.99",],
+[,"manta","manto",".ti.",".nt.$.pl.$.nom.","0.99",],
+[,"manta","manto",".ti.",".nt.$.pl.$.voc.","0.3",],
+[,"manta","manto",".ti.",".nt.$.sg.$.nom.","0.99",],
+[,"manta","matā",".ti.",".m.$.sg.$.abl.","0.99",],
+[,"manta","matā",".ti.",".m.$.sg.$.inst.","0.99",],
+[,"manta","matā",".ti.",".nt.$.sg.$.abl.","0.99",],
+[,"manta","matā",".ti.",".nt.$.sg.$.inst.","0.99",],
+[,"manta","matā",".ti.",".m.$.sg.$.abl.","0.99",],
+[,"manta","matā",".ti.",".m.$.sg.$.inst.","0.99",],
+[,"manta","matā",".ti.",".nt.$.sg.$.abl.","0.99",],
+[,"manta","matā",".ti.",".nt.$.sg.$.inst.","0.99",],
+[,"manta","mataṃ",".ti.",".m.$.pl.$.dat.","0.99",],
+[,"manta","mataṃ",".ti.",".m.$.pl.$.gen.","0.99",],
+[,"manta","mataṃ",".ti.",".nt.$.pl.$.dat.","0.99",],
+[,"manta","mataṃ",".ti.",".nt.$.pl.$.gen.","0.99",],
+[,"manta","mataṃ",".ti.",".nt.$.pl.$.dat.","0.99",],
+[,"manta","mataṃ",".ti.",".nt.$.pl.$.gen.","0.99",],
+[,"manta","matena",".ti.",".m.$.sg.$.inst.","0.99",],
+[,"manta","matena",".ti.",".nt.$.sg.$.inst.","0.99",],
+[,"manta","matena",".ti.",".m.$.sg.$.inst.","0.99",],
+[,"manta","matena",".ti.",".nt.$.sg.$.inst.","0.99",],
+[,"manta","matī",".ti.",".f.$.pl.$.acc.","0.99",],
+[,"manta","matī",".ti.",".f.$.pl.$.nom.","0.99",],
+[,"manta","matī",".ti.",".f.$.pl.$.voc.","0.3",],
+[,"manta","matī",".ti.",".f.$.sg.$.nom.","0.99",],
+[,"manta","matī",".ti.",".f.$.sg.$.voc.","0.3",],
+[,"manta","mati",".ti.",".m.$.sg.$.loc.","0.99",],
+[,"manta","mati",".ti.",".nt.$.sg.$.loc.","0.99",],
+[,"manta","mati",".ti.",".m.$.sg.$.loc.","0.99",],
+[,"manta","mati",".ti.",".nt.$.sg.$.loc.","0.99",],
+[,"manta","matībhi",".ti.",".f.$.pl.$.abl.","0.99",],
+[,"manta","matībhi",".ti.",".f.$.pl.$.inst.","0.99",],
+[,"manta","matīhi",".ti.",".f.$.pl.$.abl.","0.99",],
+[,"manta","matīhi",".ti.",".f.$.pl.$.inst.","0.99",],
+[,"manta","matiṃ",".ti.",".f.$.sg.$.acc.","0.99",],
+[,"manta","matīnaṃ",".ti.",".f.$.pl.$.dat.","0.99",],
+[,"manta","matīnaṃ",".ti.",".f.$.pl.$.gen.","0.99",],
+[,"manta","matīsu",".ti.",".f.$.pl.$.loc.","0.99",],
+[,"manta","matiyā",".ti.",".f.$.sg.$.abl.","0.99",],
+[,"manta","matiyā",".ti.",".f.$.sg.$.dat.","0.99",],
+[,"manta","matiyā",".ti.",".f.$.sg.$.gen.","0.99",],
+[,"manta","matiyā",".ti.",".f.$.sg.$.inst.","0.99",],
+[,"manta","matiyā",".ti.",".f.$.sg.$.loc.","0.99",],
+[,"manta","matiyaṃ",".ti.",".f.$.sg.$.loc.","0.99",],
+[,"manta","matiyo",".ti.",".f.$.pl.$.acc.","0.99",],
+[,"manta","matiyo",".ti.",".f.$.pl.$.nom.","0.99",],
+[,"manta","matiyo",".ti.",".f.$.pl.$.voc.","0.3",],
+[,"manta","mato",".ti.",".m.$.sg.$.dat.","0.99",],
+[,"manta","mato",".ti.",".m.$.sg.$.gen.","0.99",],
+[,"manta","mato",".ti.",".nt.$.sg.$.dat.","0.99",],
+[,"manta","mato",".ti.",".nt.$.sg.$.gen.","0.99",],
+[,"manta","mato",".ti.",".m.$.sg.$.dat.","0.99",],
+[,"manta","mato",".ti.",".m.$.sg.$.gen.","0.99",],
+[,"manta","mato",".ti.",".nt.$.sg.$.dat.","0.99",],
+[,"manta","mato",".ti.",".nt.$.sg.$.gen.","0.99",],
+[,"manta","me",".ti.",".m.$.pl.$.acc.","0.99",],
+[,"manta","mebhi",".ti.",".m.$.pl.$.abl.","0.99",],
+[,"manta","mebhi",".ti.",".m.$.pl.$.inst.","0.99",],
+[,"manta","mehi",".ti.",".m.$.pl.$.abl.","0.99",],
+[,"manta","mehi",".ti.",".m.$.pl.$.inst.","0.99",],
+[,"manta","mesu",".ti.",".m.$.pl.$.loc.","0.99",],
+[,"vanta","vā",".ti.",".m.$.pl.$.nom.","0.99",],
+[,"vanta","vā",".ti.",".m.$.pl.$.voc.","0.3",],
+[,"vanta","vā",".ti.",".m.$.sg.$.nom.","0.99",],
+[,"vanta","va",".ti.",".m.$.sg.$.voc.","0.3",],
+[,"vanta","vā",".ti.",".m.$.sg.$.voc.","0.3",],
+[,"vanta","vā",".ti.",".nt.$.pl.$.nom.","0.99",],
+[,"vanta","vā",".ti.",".nt.$.pl.$.voc.","0.3",],
+[,"vanta","va",".ti.",".nt.$.sg.$.voc.","0.3",],
+[,"vanta","vā",".ti.",".nt.$.sg.$.voc.","0.3",],
+[,"vanta","vā",".ti.",".m.$.sg.$.voc.","0.3",],
+[,"vanta","vā",".ti.",".nt.$.sg.$.voc.","0.3",],
+[,"vanta","vaṃ",".ti.",".m.$.sg.$.acc.","0.99",],
+[,"vanta","vaṃ",".ti.",".nt.$.sg.$.acc.","0.99",],
+[,"vanta","vaṃ",".ti.",".nt.$.sg.$.nom.","0.99",],
+[,"vanta","vaṃ",".ti.",".m.$.sg.$.nom.","0.99",],
+[,"vanta","vaṃ",".ti.",".m.$.sg.$.voc.","0.3",],
+[,"vanta","vaṃ",".ti.",".nt.$.sg.$.voc.","0.3",],
+[,"vanta","vaṃ",".ti.",".m.$.sg.$.voc.","0.3",],
+[,"vanta","vaṃ",".ti.",".nt.$.sg.$.voc.","0.3",],
+[,"vanta","vānaṃ",".ti.",".m.$.pl.$.dat.","0.99",],
+[,"vanta","vānaṃ",".ti.",".m.$.pl.$.gen.","0.99",],
+[,"vanta","vantā",".ti.",".m.$.pl.$.nom.","0.99",],
+[,"vanta","vantā",".ti.",".m.$.pl.$.voc.","0.3",],
+[,"vanta","vantā",".ti.",".m.$.sg.$.abl.","0.99",],
+[,"vanta","vanta",".ti.",".m.$.sg.$.voc.","0.3",],
+[,"vanta","vantā",".ti.",".m.$.sg.$.voc.","0.3",],
+[,"vanta","vanta",".ti.",".nt.$.pl.$.acc.","0.99",],
+[,"vanta","vantā",".ti.",".nt.$.pl.$.acc.","0.99",],
+[,"vanta","vanta",".ti.",".nt.$.pl.$.nom.","0.99",],
+[,"vanta","vantā",".ti.",".nt.$.pl.$.nom.","0.99",],
+[,"vanta","vanta",".ti.",".nt.$.pl.$.voc.","0.3",],
+[,"vanta","vantā",".ti.",".nt.$.pl.$.voc.","0.3",],
+[,"vanta","vantā",".ti.",".nt.$.sg.$.abl.","0.99",],
+[,"vanta","vanta",".ti.",".nt.$.sg.$.voc.","0.3",],
+[,"vanta","vantā",".ti.",".nt.$.sg.$.voc.","0.3",],
+[,"vanta","vantaṃ",".ti.",".m.$.sg.$.acc.","0.99",],
+[,"vanta","vantaṃ",".ti.",".nt.$.sg.$.acc.","0.99",],
+[,"vanta","vantaṃ",".ti.",".nt.$.sg.$.nom.","0.99",],
+[,"vanta","vantaṃ",".ti.",".nt.$.sg.$.nom.","0.99",],
+[,"vanta","vantaṃ",".ti.",".m.$.sg.$.acc.","0.99",],
+[,"vanta","vantaṃ",".ti.",".nt.$.sg.$.acc.","0.99",],
+[,"vanta","vantamhā",".ti.",".m.$.sg.$.abl.","0.99",],
+[,"vanta","vantamhā",".ti.",".nt.$.sg.$.abl.","0.99",],
+[,"vanta","vantamhā",".ti.",".m.$.sg.$.abl.","0.99",],
+[,"vanta","vantamhā",".ti.",".nt.$.sg.$.abl.","0.99",],
+[,"vanta","vantamhi",".ti.",".m.$.sg.$.loc.","0.99",],
+[,"vanta","vantamhi",".ti.",".nt.$.sg.$.loc.","0.99",],
+[,"vanta","vantamhi",".ti.",".m.$.sg.$.loc.","0.99",],
+[,"vanta","vantamhi",".ti.",".nt.$.sg.$.loc.","0.99",],
+[,"vanta","vantānaṃ",".ti.",".m.$.pl.$.dat.","0.99",],
+[,"vanta","vantānaṃ",".ti.",".m.$.pl.$.gen.","0.99",],
+[,"vanta","vantānaṃ",".ti.",".nt.$.pl.$.dat.","0.99",],
+[,"vanta","vantānaṃ",".ti.",".nt.$.pl.$.gen.","0.99",],
+[,"vanta","vantānaṃ",".ti.",".nt.$.pl.$.dat.","0.99",],
+[,"vanta","vantānaṃ",".ti.",".nt.$.pl.$.gen.","0.99",],
+[,"vanta","vantani",".ti.",".nt.$.pl.$.acc.","0.99",],
+[,"vanta","vantāni",".ti.",".nt.$.pl.$.acc.","0.99",],
+[,"vanta","vantani",".ti.",".nt.$.pl.$.nom.","0.99",],
+[,"vanta","vantāni",".ti.",".nt.$.pl.$.nom.","0.99",],
+[,"vanta","vantani",".ti.",".nt.$.pl.$.voc.","0.3",],
+[,"vanta","vantāni",".ti.",".nt.$.pl.$.voc.","0.3",],
+[,"vanta","vantasmā",".ti.",".m.$.sg.$.abl.","0.99",],
+[,"vanta","vantasmā",".ti.",".nt.$.sg.$.abl.","0.99",],
+[,"vanta","vantasmā",".ti.",".m.$.sg.$.abl.","0.99",],
+[,"vanta","vantasmā",".ti.",".nt.$.sg.$.abl.","0.99",],
+[,"vanta","vantasmiṃ",".ti.",".m.$.sg.$.loc.","0.99",],
+[,"vanta","vantasmiṃ",".ti.",".nt.$.sg.$.loc.","0.99",],
+[,"vanta","vantasmiṃ",".ti.",".m.$.sg.$.loc.","0.99",],
+[,"vanta","vantasmiṃ",".ti.",".nt.$.sg.$.loc.","0.99",],
+[,"vanta","vantassa",".ti.",".m.$.sg.$.dat.","0.99",],
+[,"vanta","vantassa",".ti.",".m.$.sg.$.gen.","0.99",],
+[,"vanta","vantassa",".ti.",".nt.$.sg.$.dat.","0.99",],
+[,"vanta","vantassa",".ti.",".nt.$.sg.$.gen.","0.99",],
+[,"vanta","vantassa",".ti.",".m.$.sg.$.dat.","0.99",],
+[,"vanta","vantassa",".ti.",".m.$.sg.$.gen.","0.99",],
+[,"vanta","vantassa",".ti.",".nt.$.sg.$.dat.","0.99",],
+[,"vanta","vantassa",".ti.",".nt.$.sg.$.gen.","0.99",],
+[,"vanta","vante",".ti.",".m.$.pl.$.acc.","0.99",],
+[,"vanta","vante",".ti.",".m.$.sg.$.loc.","0.99",],
+[,"vanta","vante",".ti.",".nt.$.pl.$.acc.","0.99",],
+[,"vanta","vante",".ti.",".nt.$.sg.$.loc.","0.99",],
+[,"vanta","vantebhi",".ti.",".m.$.pl.$.abl.","0.99",],
+[,"vanta","vantebhi",".ti.",".m.$.pl.$.inst.","0.99",],
+[,"vanta","vantebhi",".ti.",".nt.$.pl.$.abl.","0.99",],
+[,"vanta","vantebhi",".ti.",".nt.$.pl.$.inst.","0.99",],
+[,"vanta","vantehi",".ti.",".m.$.pl.$.abl.","0.99",],
+[,"vanta","vantehi",".ti.",".m.$.pl.$.inst.","0.99",],
+[,"vanta","vantehi",".ti.",".nt.$.pl.$.abl.","0.99",],
+[,"vanta","vantehi",".ti.",".nt.$.pl.$.inst.","0.99",],
+[,"vanta","vantesu",".ti.",".m.$.pl.$.loc.","0.99",],
+[,"vanta","vantesu",".ti.",".nt.$.pl.$.loc.","0.99",],
+[,"vanta","vantesu",".ti.",".nt.$.pl.$.loc.","0.99",],
+[,"vanta","vantī",".ti.",".f.$.pl.$.acc.","0.99",],
+[,"vanta","vantī",".ti.",".f.$.pl.$.nom.","0.99",],
+[,"vanta","vantī",".ti.",".f.$.pl.$.voc.","0.3",],
+[,"vanta","vantī",".ti.",".f.$.sg.$.nom.","0.99",],
+[,"vanta","vantī",".ti.",".f.$.sg.$.voc.","0.3",],
+[,"vanta","vantībhi",".ti.",".f.$.pl.$.abl.","0.99",],
+[,"vanta","vantībhi",".ti.",".f.$.pl.$.inst.","0.99",],
+[,"vanta","vantīhi",".ti.",".f.$.pl.$.abl.","0.99",],
+[,"vanta","vantīhi",".ti.",".f.$.pl.$.inst.","0.99",],
+[,"vanta","vantiṃ",".ti.",".f.$.sg.$.acc.","0.99",],
+[,"vanta","vantīnaṃ",".ti.",".f.$.pl.$.dat.","0.99",],
+[,"vanta","vantīnaṃ",".ti.",".f.$.pl.$.gen.","0.99",],
+[,"vanta","vantīsu",".ti.",".f.$.pl.$.loc.","0.99",],
+[,"vanta","vantiyā",".ti.",".f.$.sg.$.abl.","0.99",],
+[,"vanta","vantiyā",".ti.",".f.$.sg.$.dat.","0.99",],
+[,"vanta","vantiyā",".ti.",".f.$.sg.$.gen.","0.99",],
+[,"vanta","vantiyā",".ti.",".f.$.sg.$.inst.","0.99",],
+[,"vanta","vantiyā",".ti.",".f.$.sg.$.loc.","0.99",],
+[,"vanta","vantiyaṃ",".ti.",".f.$.sg.$.loc.","0.99",],
+[,"vanta","vantiyo",".ti.",".f.$.pl.$.acc.","0.99",],
+[,"vanta","vantiyo",".ti.",".f.$.pl.$.nom.","0.99",],
+[,"vanta","vantiyo",".ti.",".f.$.pl.$.voc.","0.3",],
+[,"vanta","vanto",".ti.",".m.$.pl.$.nom.","0.99",],
+[,"vanta","vanto",".ti.",".m.$.pl.$.voc.","0.3",],
+[,"vanta","vanto",".ti.",".m.$.sg.$.nom.","0.99",],
+[,"vanta","vanto",".ti.",".nt.$.pl.$.nom.","0.99",],
+[,"vanta","vanto",".ti.",".nt.$.pl.$.voc.","0.3",],
+[,"vanta","vanto",".ti.",".nt.$.sg.$.nom.","0.99",],
+[,"vanta","vatā",".ti.",".m.$.sg.$.abl.","0.99",],
+[,"vanta","vatā",".ti.",".m.$.sg.$.inst.","0.99",],
+[,"vanta","vatā",".ti.",".nt.$.sg.$.abl.","0.99",],
+[,"vanta","vatā",".ti.",".nt.$.sg.$.inst.","0.99",],
+[,"vanta","vatā",".ti.",".m.$.sg.$.abl.","0.99",],
+[,"vanta","vatā",".ti.",".m.$.sg.$.inst.","0.99",],
+[,"vanta","vatā",".ti.",".nt.$.sg.$.abl.","0.99",],
+[,"vanta","vatā",".ti.",".nt.$.sg.$.inst.","0.99",],
+[,"vanta","vataṃ",".ti.",".m.$.pl.$.dat.","0.99",],
+[,"vanta","vataṃ",".ti.",".m.$.pl.$.gen.","0.99",],
+[,"vanta","vataṃ",".ti.",".nt.$.pl.$.dat.","0.99",],
+[,"vanta","vataṃ",".ti.",".nt.$.pl.$.gen.","0.99",],
+[,"vanta","vataṃ",".ti.",".nt.$.pl.$.dat.","0.99",],
+[,"vanta","vataṃ",".ti.",".nt.$.pl.$.gen.","0.99",],
+[,"vanta","vatena",".ti.",".m.$.sg.$.inst.","0.99",],
+[,"vanta","vatena",".ti.",".nt.$.sg.$.inst.","0.99",],
+[,"vanta","vatena",".ti.",".m.$.sg.$.inst.","0.99",],
+[,"vanta","vatena",".ti.",".nt.$.sg.$.inst.","0.99",],
+[,"vanta","vatī",".ti.",".f.$.pl.$.acc.","0.99",],
+[,"vanta","vatī",".ti.",".f.$.pl.$.nom.","0.99",],
+[,"vanta","vatī",".ti.",".f.$.pl.$.voc.","0.3",],
+[,"vanta","vatī",".ti.",".f.$.sg.$.nom.","0.99",],
+[,"vanta","vatī",".ti.",".f.$.sg.$.voc.","0.3",],
+[,"vanta","vati",".ti.",".m.$.sg.$.loc.","0.99",],
+[,"vanta","vati",".ti.",".nt.$.sg.$.loc.","0.99",],
+[,"vanta","vati",".ti.",".m.$.sg.$.loc.","0.99",],
+[,"vanta","vati",".ti.",".nt.$.sg.$.loc.","0.99",],
+[,"vanta","vatībhi",".ti.",".f.$.pl.$.abl.","0.99",],
+[,"vanta","vatībhi",".ti.",".f.$.pl.$.inst.","0.99",],
+[,"vanta","vatīhi",".ti.",".f.$.pl.$.abl.","0.99",],
+[,"vanta","vatīhi",".ti.",".f.$.pl.$.inst.","0.99",],
+[,"vanta","vatiṃ",".ti.",".f.$.sg.$.acc.","0.99",],
+[,"vanta","vatīnaṃ",".ti.",".f.$.pl.$.dat.","0.99",],
+[,"vanta","vatīnaṃ",".ti.",".f.$.pl.$.gen.","0.99",],
+[,"vanta","vatīsu",".ti.",".f.$.pl.$.loc.","0.99",],
+[,"vanta","vatiyā",".ti.",".f.$.sg.$.abl.","0.99",],
+[,"vanta","vatiyā",".ti.",".f.$.sg.$.dat.","0.99",],
+[,"vanta","vatiyā",".ti.",".f.$.sg.$.gen.","0.99",],
+[,"vanta","vatiyā",".ti.",".f.$.sg.$.inst.","0.99",],
+[,"vanta","vatiyā",".ti.",".f.$.sg.$.loc.","0.99",],
+[,"vanta","vatiyaṃ",".ti.",".f.$.sg.$.loc.","0.99",],
+[,"vanta","vatiyo",".ti.",".f.$.pl.$.acc.","0.99",],
+[,"vanta","vatiyo",".ti.",".f.$.pl.$.nom.","0.99",],
+[,"vanta","vatiyo",".ti.",".f.$.pl.$.voc.","0.3",],
+[,"vanta","vato",".ti.",".m.$.sg.$.dat.","0.99",],
+[,"vanta","vato",".ti.",".m.$.sg.$.gen.","0.99",],
+[,"vanta","vato",".ti.",".nt.$.sg.$.dat.","0.99",],
+[,"vanta","vato",".ti.",".nt.$.sg.$.gen.","0.99",],
+[,"vanta","vato",".ti.",".m.$.sg.$.dat.","0.99",],
+[,"vanta","vato",".ti.",".m.$.sg.$.gen.","0.99",],
+[,"vanta","vato",".ti.",".nt.$.sg.$.dat.","0.99",],
+[,"vanta","vato",".ti.",".nt.$.sg.$.gen.","0.99",],
+[,"vanta","ve",".ti.",".m.$.pl.$.acc.","0.99",],
+[,"vanta","vebhi",".ti.",".m.$.pl.$.abl.","0.99",],
+[,"vanta","vebhi",".ti.",".m.$.pl.$.inst.","0.99",],
+[,"vanta","vehi",".ti.",".m.$.pl.$.abl.","0.99",],
+[,"vanta","vehi",".ti.",".m.$.pl.$.inst.","0.99",],
+[,"vanta","vesu",".ti.",".m.$.pl.$.loc.","0.99",],
+[,"a","o",".n.",".m.$.sg.$.nom.","0.99",],
+[,"a","a",".n.",".m.$.sg.$.voc.","0.3",],
+[,"a","ā",".n.",".m.$.sg.$.voc.","0.3",],
+[,"a","aṃ",".n.",".m.$.sg.$.acc.","0.99",],
+[,"a","assa",".n.",".m.$.sg.$.gen.","0.99",],
+[,"a","assa",".n.",".m.$.sg.$.dat.","0.99",],
+[,"a","āya",".n.",".m.$.sg.$.dat.","0.99",],
+[,"a","ena",".n.",".m.$.sg.$.inst.","0.99",],
+[,"a","ā",".n.",".m.$.sg.$.abl.","0.99",],
+[,"a","asmā",".n.",".m.$.sg.$.abl.","0.99",],
+[,"a","amhā",".n.",".m.$.sg.$.abl.","0.99",],
+[,"a","ato",".n.",".m.$.sg.$.abl.","0.99",],
+[,"a","e",".n.",".m.$.sg.$.loc.","0.99",],
+[,"a","asmiṃ",".n.",".m.$.sg.$.loc.","0.99",],
+[,"a","amhi",".n.",".m.$.sg.$.loc.","0.99",],
+[,"a","ā",".n.",".m.$.pl.$.nom.","0.99",],
+[,"a","āse",".n.",".m.$.pl.$.nom.","0.99",],
+[,"a","ā",".n.",".m.$.pl.$.voc.","0.3",],
+[,"a","e",".n.",".m.$.pl.$.acc.","0.99",],
+[,"a","ānaṃ",".n.",".m.$.pl.$.gen.","0.99",],
+[,"a","ānaṃ",".n.",".m.$.pl.$.dat.","0.99",],
+[,"a","ehi",".n.",".m.$.pl.$.inst.","0.99",],
+[,"a","ebhi",".n.",".m.$.pl.$.inst.","0.99",],
+[,"a","ehi",".n.",".m.$.pl.$.abl.","0.99",],
+[,"a","ebhi",".n.",".m.$.pl.$.abl.","0.99",],
+[,"a","esu",".n.",".m.$.pl.$.loc.","0.99",],
+[,"a","aṃ",".n.",".nt.$.sg.$.nom.","0.99",],
+[,"a","a",".n.",".nt.$.sg.$.voc.","0.3",],
+[,"a","aṃ",".n.",".nt.$.sg.$.acc.","0.99",],
+[,"a","assa",".n.",".nt.$.sg.$.gen.","0.99",],
+[,"a","assa",".n.",".nt.$.sg.$.dat.","0.99",],
+[,"a","āya",".n.",".nt.$.sg.$.dat.","0.99",],
+[,"a","ena",".n.",".nt.$.sg.$.inst.","0.99",],
+[,"a","ā",".n.",".nt.$.sg.$.abl.","0.99",],
+[,"a","asmā",".n.",".nt.$.sg.$.abl.","0.99",],
+[,"a","amhā",".n.",".nt.$.sg.$.abl.","0.99",],
+[,"a","ato",".n.",".nt.$.sg.$.abl.","0.99",],
+[,"a","e",".n.",".nt.$.sg.$.loc.","0.99",],
+[,"a","asmiṃ",".n.",".nt.$.sg.$.loc.","0.99",],
+[,"a","amhi",".n.",".nt.$.sg.$.loc.","0.99",],
+[,"a","āni",".n.",".nt.$.pl.$.nom.","0.99",],
+[,"a","ā",".n.",".nt.$.pl.$.nom.","0.99",],
+[,"a","āni",".n.",".nt.$.pl.$.voc.","0.3",],
+[,"a","ā",".n.",".nt.$.pl.$.voc.","0.3",],
+[,"a","āni",".n.",".nt.$.pl.$.acc.","0.99",],
+[,"a","e",".n.",".nt.$.pl.$.acc.","0.99",],
+[,"a","ānaṃ",".n.",".nt.$.pl.$.gen.","0.99",],
+[,"a","ānaṃ",".n.",".nt.$.pl.$.dat.","0.99",],
+[,"a","ehi",".n.",".nt.$.pl.$.inst.","0.99",],
+[,"a","ebhi",".n.",".nt.$.pl.$.inst.","0.99",],
+[,"a","ehi",".n.",".nt.$.pl.$.abl.","0.99",],
+[,"a","ebhi",".n.",".nt.$.pl.$.abl.","0.99",],
+[,"a","esu",".n.",".nt.$.pl.$.loc.","0.99",],
+[,"a","esaṃ",".n.",".m.$.pl.$.dat.","0.99",],
+[,"a","esaṃ",".n.",".m.$.pl.$.gen.","0.99",],
+[,"a","esaṃ",".n.",".nt.$.pl.$.dat.","0.99",],
+[,"a","esaṃ",".n.",".nt.$.pl.$.gen.","0.99",],
+[,"ā","ā",".n.",".f.$.sg.$.nom.","0.99",],
+[,"ā","ā",".n.",".f.$.sg.$.voc.","0.3",],
+[,"ā","e",".n.",".f.$.sg.$.voc.","0.3",],
+[,"ā","aṃ",".n.",".f.$.sg.$.acc.","0.99",],
+[,"ā","āya",".n.",".f.$.sg.$.gen.","0.99",],
+[,"ā","āya",".n.",".f.$.sg.$.dat.","0.99",],
+[,"ā","āya",".n.",".f.$.sg.$.inst.","0.99",],
+[,"ā","āya",".n.",".f.$.sg.$.abl.","0.99",],
+[,"ā","ato",".n.",".f.$.sg.$.abl.","0.99",],
+[,"ā","āya",".n.",".f.$.sg.$.loc.","0.99",],
+[,"ā","āyaṃ",".n.",".f.$.sg.$.loc.","0.99",],
+[,"ā","ā",".n.",".f.$.pl.$.nom.","0.99",],
+[,"ā","āyo",".n.",".f.$.pl.$.nom.","0.99",],
+[,"ā","ā",".n.",".f.$.pl.$.voc.","0.3",],
+[,"ā","āyo",".n.",".f.$.pl.$.voc.","0.3",],
+[,"ā","ā",".n.",".f.$.pl.$.acc.","0.99",],
+[,"ā","āyo",".n.",".f.$.pl.$.acc.","0.99",],
+[,"ā","ānaṃ",".n.",".f.$.pl.$.gen.","0.99",],
+[,"ā","ānaṃ",".n.",".f.$.pl.$.dat.","0.99",],
+[,"ā","āhi",".n.",".f.$.pl.$.inst.","0.99",],
+[,"ā","ābhi",".n.",".f.$.pl.$.inst.","0.99",],
+[,"ā","āhi",".n.",".f.$.pl.$.abl.","0.99",],
+[,"ā","ābhi",".n.",".f.$.pl.$.abl.","0.99",],
+[,"ā","āsu",".n.",".f.$.pl.$.loc.","0.99",],
+[,"i","i",".n.",".m.$.sg.$.nom.","0.99",],
+[,"i","i",".n.",".m.$.sg.$.voc.","0.3",],
+[,"i","iṃ",".n.",".m.$.sg.$.acc.","0.99",],
+[,"i","issa",".n.",".m.$.sg.$.gen.","0.99",],
+[,"i","ino",".n.",".m.$.sg.$.gen.","0.99",],
+[,"i","issa",".n.",".m.$.sg.$.dat.","0.99",],
+[,"i","ino",".n.",".m.$.sg.$.dat.","0.99",],
+[,"i","inā",".n.",".m.$.sg.$.inst.","0.99",],
+[,"i","inā",".n.",".m.$.sg.$.abl.","0.99",],
+[,"i","ismā",".n.",".m.$.sg.$.abl.","0.99",],
+[,"i","imhā",".n.",".m.$.sg.$.abl.","0.99",],
+[,"i","ismiṃ",".n.",".m.$.sg.$.loc.","0.99",],
+[,"i","imhi",".n.",".m.$.sg.$.loc.","0.99",],
+[,"i","ī",".n.",".m.$.pl.$.nom.","0.99",],
+[,"i","ayo",".n.",".m.$.pl.$.nom.","0.99",],
+[,"i","ī",".n.",".m.$.pl.$.voc.","0.3",],
+[,"i","ayo",".n.",".m.$.pl.$.voc.","0.3",],
+[,"i","ī",".n.",".m.$.pl.$.acc.","0.99",],
+[,"i","ayo",".n.",".m.$.pl.$.acc.","0.99",],
+[,"i","īnaṃ",".n.",".m.$.pl.$.gen.","0.99",],
+[,"i","īnaṃ",".n.",".m.$.pl.$.dat.","0.99",],
+[,"i","īhi",".n.",".m.$.pl.$.inst.","0.99",],
+[,"i","ībhi",".n.",".m.$.pl.$.inst.","0.99",],
+[,"i","īhi",".n.",".m.$.pl.$.abl.","0.99",],
+[,"i","ībhi",".n.",".m.$.pl.$.abl.","0.99",],
+[,"i","īsu",".n.",".m.$.pl.$.loc.","0.99",],
+[,"i","i",".n.",".nt.$.sg.$.nom.","0.99",],
+[,"i","i",".n.",".nt.$.sg.$.voc.","0.3",],
+[,"i","iṃ",".n.",".nt.$.sg.$.acc.","0.99",],
+[,"i","assa",".n.",".nt.$.sg.$.gen.","0.99",],
+[,"i","ino",".n.",".nt.$.sg.$.gen.","0.99",],
+[,"i","assa",".n.",".nt.$.sg.$.dat.","0.99",],
+[,"i","ino",".n.",".nt.$.sg.$.dat.","0.99",],
+[,"i","inā",".n.",".nt.$.sg.$.inst.","0.99",],
+[,"i","inā",".n.",".nt.$.sg.$.abl.","0.99",],
+[,"i","ismā",".n.",".nt.$.sg.$.abl.","0.99",],
+[,"i","imhā",".n.",".nt.$.sg.$.abl.","0.99",],
+[,"i","ismiṃ",".n.",".nt.$.sg.$.loc.","0.99",],
+[,"i","imhi",".n.",".nt.$.sg.$.loc.","0.99",],
+[,"i","īni",".n.",".nt.$.pl.$.nom.","0.99",],
+[,"i","ī",".n.",".nt.$.pl.$.nom.","0.99",],
+[,"i","īni",".n.",".nt.$.pl.$.voc.","0.3",],
+[,"i","ī",".n.",".nt.$.pl.$.voc.","0.3",],
+[,"i","īni",".n.",".nt.$.pl.$.acc.","0.99",],
+[,"i","ī",".n.",".nt.$.pl.$.acc.","0.99",],
+[,"i","īnaṃ",".n.",".nt.$.pl.$.gen.","0.99",],
+[,"i","īnaṃ",".n.",".nt.$.pl.$.dat.","0.99",],
+[,"i","īhi",".n.",".nt.$.pl.$.inst.","0.99",],
+[,"i","ībhi",".n.",".nt.$.pl.$.inst.","0.99",],
+[,"i","īhi",".n.",".nt.$.pl.$.abl.","0.99",],
+[,"i","ībhi",".n.",".nt.$.pl.$.abl.","0.99",],
+[,"i","īsu",".n.",".nt.$.pl.$.loc.","0.99",],
+[,"i","i",".n.",".f.$.sg.$.nom.","0.99",],
+[,"i","i",".n.",".f.$.sg.$.voc.","0.3",],
+[,"i","iṃ",".n.",".f.$.sg.$.acc.","0.99",],
+[,"i","iyā",".n.",".f.$.sg.$.gen.","0.99",],
+[,"i","yā",".n.",".f.$.sg.$.gen.","0.99",],
+[,"i","iyā",".n.",".f.$.sg.$.dat.","0.99",],
+[,"i","yā",".n.",".f.$.sg.$.dat.","0.99",],
+[,"i","iyā",".n.",".f.$.sg.$.inst.","0.99",],
+[,"i","yā",".n.",".f.$.sg.$.inst.","0.99",],
+[,"i","iyā",".n.",".f.$.sg.$.abl.","0.99",],
+[,"i","yā",".n.",".f.$.sg.$.abl.","0.99",],
+[,"i","iyā",".n.",".f.$.sg.$.loc.","0.99",],
+[,"i","yā",".n.",".f.$.sg.$.loc.","0.99",],
+[,"i","iyaṃ",".n.",".f.$.sg.$.loc.","0.99",],
+[,"i","yaṃ",".n.",".f.$.sg.$.loc.","0.99",],
+[,"i","ī",".n.",".f.$.pl.$.nom.","0.99",],
+[,"i","iyo",".n.",".f.$.pl.$.nom.","0.99",],
+[,"i","yo",".n.",".f.$.pl.$.nom.","0.99",],
+[,"i","ī",".n.",".f.$.pl.$.voc.","0.3",],
+[,"i","iyo",".n.",".f.$.pl.$.voc.","0.3",],
+[,"i","yo",".n.",".f.$.pl.$.voc.","0.3",],
+[,"i","ī",".n.",".f.$.pl.$.acc.","0.99",],
+[,"i","iyo",".n.",".f.$.pl.$.acc.","0.99",],
+[,"i","yo",".n.",".f.$.pl.$.acc.","0.99",],
+[,"i","īnaṃ",".n.",".f.$.pl.$.gen.","0.99",],
+[,"i","īnaṃ",".n.",".f.$.pl.$.dat.","0.99",],
+[,"i","īhi",".n.",".f.$.pl.$.inst.","0.99",],
+[,"i","ībhi",".n.",".f.$.pl.$.inst.","0.99",],
+[,"i","īhi",".n.",".f.$.pl.$.abl.","0.99",],
+[,"i","ībhi",".n.",".f.$.pl.$.abl.","0.99",],
+[,"i","īsu",".n.",".f.$.pl.$.loc.","0.99",],
+[,"ī","ī",".n.",".m.$.sg.$.nom.","0.99",],
+[,"in","ī",".n.",".m.$.sg.$.nom.","0.99",],
+[,"ī","ī",".n.",".m.$.sg.$.voc.","0.3",],
+[,"ī","inī",".n.",".m.$.sg.$.voc.","0.3",],
+[,"in","ī",".n.",".m.$.sg.$.voc.","0.3",],
+[,"in","inī",".n.",".m.$.sg.$.voc.","0.3",],
+[,"ī","iṃ",".n.",".m.$.sg.$.acc.","0.99",],
+[,"ī","inaṃ",".n.",".m.$.sg.$.acc.","0.99",],
+[,"in","iṃ",".n.",".m.$.sg.$.acc.","0.99",],
+[,"in","inaṃ",".n.",".m.$.sg.$.acc.","0.99",],
+[,"ī","issa",".n.",".m.$.sg.$.gen.","0.99",],
+[,"ī","ino",".n.",".m.$.sg.$.gen.","0.99",],
+[,"in","issa",".n.",".m.$.sg.$.gen.","0.99",],
+[,"in","ino",".n.",".m.$.sg.$.gen.","0.99",],
+[,"ī","issa",".n.",".m.$.sg.$.dat.","0.99",],
+[,"ī","ino",".n.",".m.$.sg.$.dat.","0.99",],
+[,"in","issa",".n.",".m.$.sg.$.dat.","0.99",],
+[,"in","ino",".n.",".m.$.sg.$.dat.","0.99",],
+[,"ī","inā",".n.",".m.$.sg.$.inst.","0.99",],
+[,"in","inā",".n.",".m.$.sg.$.inst.","0.99",],
+[,"ī","inā",".n.",".m.$.sg.$.abl.","0.99",],
+[,"ī","ismā",".n.",".m.$.sg.$.abl.","0.99",],
+[,"ī","imhā",".n.",".m.$.sg.$.abl.","0.99",],
+[,"in","inā",".n.",".m.$.sg.$.abl.","0.99",],
+[,"in","ismā",".n.",".m.$.sg.$.abl.","0.99",],
+[,"in","imhā",".n.",".m.$.sg.$.abl.","0.99",],
+[,"ī","ismiṃ",".n.",".m.$.sg.$.loc.","0.99",],
+[,"ī","imhi",".n.",".m.$.sg.$.loc.","0.99",],
+[,"in","ismiṃ",".n.",".m.$.sg.$.loc.","0.99",],
+[,"in","imhi",".n.",".m.$.sg.$.loc.","0.99",],
+[,"ī","ī",".n.",".m.$.pl.$.nom.","0.99",],
+[,"ī","ino",".n.",".m.$.pl.$.nom.","0.99",],
+[,"in","ī",".n.",".m.$.pl.$.nom.","0.99",],
+[,"in","ino",".n.",".m.$.pl.$.nom.","0.99",],
+[,"ī","ī",".n.",".m.$.pl.$.voc.","0.3",],
+[,"ī","ino",".n.",".m.$.pl.$.voc.","0.3",],
+[,"in","ī",".n.",".m.$.pl.$.voc.","0.3",],
+[,"in","ino",".n.",".m.$.pl.$.voc.","0.3",],
+[,"ī","ī",".n.",".m.$.pl.$.acc.","0.99",],
+[,"ī","ino",".n.",".m.$.pl.$.acc.","0.99",],
+[,"in","ī",".n.",".m.$.pl.$.acc.","0.99",],
+[,"in","ino",".n.",".m.$.pl.$.acc.","0.99",],
+[,"ī","inaṃ",".n.",".m.$.pl.$.gen.","0.99",],
+[,"in","inaṃ",".n.",".m.$.pl.$.gen.","0.99",],
+[,"ī","inaṃ",".n.",".m.$.pl.$.dat.","0.99",],
+[,"in","inaṃ",".n.",".m.$.pl.$.dat.","0.99",],
+[,"ī","īhi",".n.",".m.$.pl.$.inst.","0.99",],
+[,"ī","ībhi",".n.",".m.$.pl.$.inst.","0.99",],
+[,"in","īhi",".n.",".m.$.pl.$.inst.","0.99",],
+[,"in","ībhi",".n.",".m.$.pl.$.inst.","0.99",],
+[,"ī","īhi",".n.",".m.$.pl.$.abl.","0.99",],
+[,"ī","ībhi",".n.",".m.$.pl.$.abl.","0.99",],
+[,"in","īhi",".n.",".m.$.pl.$.abl.","0.99",],
+[,"in","ībhi",".n.",".m.$.pl.$.abl.","0.99",],
+[,"ī","īsu",".n.",".m.$.pl.$.loc.","0.99",],
+[,"in","īsu",".n.",".m.$.pl.$.loc.","0.99",],
+[,"ī","ī",".n.",".f.$.sg.$.nom.","0.99",],
+[,"ī","ī",".n.",".f.$.sg.$.voc.","0.3",],
+[,"ī","iṃ",".n.",".f.$.sg.$.acc.","0.99",],
+[,"ī","iyā",".n.",".f.$.sg.$.gen.","0.99",],
+[,"ī","ayā",".n.",".f.$.sg.$.gen.","0.99",],
+[,"ī","yā",".n.",".f.$.sg.$.gen.","0.99",],
+[,"ī","iyā",".n.",".f.$.sg.$.dat.","0.99",],
+[,"ī","ayā",".n.",".f.$.sg.$.dat.","0.99",],
+[,"ī","yā",".n.",".f.$.sg.$.dat.","0.99",],
+[,"ī","iyā",".n.",".f.$.sg.$.inst.","0.99",],
+[,"ī","ayā",".n.",".f.$.sg.$.inst.","0.99",],
+[,"ī","yā",".n.",".f.$.sg.$.inst.","0.99",],
+[,"ī","iyā",".n.",".f.$.sg.$.abl.","0.99",],
+[,"ī","ayā",".n.",".f.$.sg.$.abl.","0.99",],
+[,"ī","yā",".n.",".f.$.sg.$.abl.","0.99",],
+[,"ī","iyā",".n.",".f.$.sg.$.loc.","0.99",],
+[,"ī","ayā",".n.",".f.$.sg.$.loc.","0.99",],
+[,"ī","yā",".n.",".f.$.sg.$.loc.","0.99",],
+[,"ī","iyaṃ",".n.",".f.$.sg.$.loc.","0.99",],
+[,"ī","ayaṃ",".n.",".f.$.sg.$.loc.","0.99",],
+[,"ī","yaṃ",".n.",".f.$.sg.$.loc.","0.99",],
+[,"ī","ī",".n.",".f.$.pl.$.nom.","0.99",],
+[,"ī","iyo",".n.",".f.$.pl.$.nom.","0.99",],
+[,"ī","yo",".n.",".f.$.pl.$.nom.","0.99",],
+[,"ī","ī",".n.",".f.$.pl.$.voc.","0.3",],
+[,"ī","iyo",".n.",".f.$.pl.$.voc.","0.3",],
+[,"ī","yo",".n.",".f.$.pl.$.voc.","0.3",],
+[,"ī","ī",".n.",".f.$.pl.$.acc.","0.99",],
+[,"ī","iyo",".n.",".f.$.pl.$.acc.","0.99",],
+[,"ī","yo",".n.",".f.$.pl.$.acc.","0.99",],
+[,"ī","īnaṃ",".n.",".f.$.pl.$.gen.","0.99",],
+[,"ī","īnaṃ",".n.",".f.$.pl.$.dat.","0.99",],
+[,"ī","īhi",".n.",".f.$.pl.$.inst.","0.99",],
+[,"ī","ībhi",".n.",".f.$.pl.$.inst.","0.99",],
+[,"ī","īhi",".n.",".f.$.pl.$.abl.","0.99",],
+[,"ī","ībhi",".n.",".f.$.pl.$.abl.","0.99",],
+[,"ī","īsu",".n.",".f.$.pl.$.loc.","0.99",],
+[,"u","u",".n.",".m.$.sg.$.nom.","0.99",],
+[,"u","u",".n.",".m.$.sg.$.voc.","0.3",],
+[,"u","uṃ",".n.",".m.$.sg.$.acc.","0.99",],
+[,"u","ussa",".n.",".m.$.sg.$.gen.","0.99",],
+[,"u","uno",".n.",".m.$.sg.$.gen.","0.99",],
+[,"u","ussa",".n.",".m.$.sg.$.dat.","0.99",],
+[,"u","uno",".n.",".m.$.sg.$.dat.","0.99",],
+[,"u","unā",".n.",".m.$.sg.$.inst.","0.99",],
+[,"u","unā",".n.",".m.$.sg.$.abl.","0.99",],
+[,"u","usmā",".n.",".m.$.sg.$.abl.","0.99",],
+[,"u","umhā",".n.",".m.$.sg.$.abl.","0.99",],
+[,"u","usmiṃ",".n.",".m.$.sg.$.loc.","0.99",],
+[,"u","umhi",".n.",".m.$.sg.$.loc.","0.99",],
+[,"u","ū",".n.",".m.$.pl.$.nom.","0.99",],
+[,"u","avo",".n.",".m.$.pl.$.nom.","0.99",],
+[,"u","ū",".n.",".m.$.pl.$.voc.","0.3",],
+[,"u","avo",".n.",".m.$.pl.$.voc.","0.3",],
+[,"u","ave",".n.",".m.$.pl.$.voc.","0.3",],
+[,"u","ū",".n.",".m.$.pl.$.acc.","0.99",],
+[,"u","avo",".n.",".m.$.pl.$.acc.","0.99",],
+[,"u","ūnaṃ",".n.",".m.$.pl.$.gen.","0.99",],
+[,"u","ūnaṃ",".n.",".m.$.pl.$.dat.","0.99",],
+[,"u","ūhi",".n.",".m.$.pl.$.inst.","0.99",],
+[,"u","ūbhi",".n.",".m.$.pl.$.inst.","0.99",],
+[,"u","ūhi",".n.",".m.$.pl.$.abl.","0.99",],
+[,"u","ūbhi",".n.",".m.$.pl.$.abl.","0.99",],
+[,"u","ūsu",".n.",".m.$.pl.$.loc.","0.99",],
+[,"u","u",".n.",".nt.$.sg.$.nom.","0.99",],
+[,"u","u",".n.",".nt.$.sg.$.voc.","0.3",],
+[,"u","uṃ",".n.",".nt.$.sg.$.acc.","0.99",],
+[,"u","ussa",".n.",".nt.$.sg.$.gen.","0.99",],
+[,"u","uno",".n.",".nt.$.sg.$.gen.","0.99",],
+[,"u","ussa",".n.",".nt.$.sg.$.dat.","0.99",],
+[,"u","uno",".n.",".nt.$.sg.$.dat.","0.99",],
+[,"u","unā",".n.",".nt.$.sg.$.inst.","0.99",],
+[,"u","unā",".n.",".nt.$.sg.$.abl.","0.99",],
+[,"u","usmā",".n.",".nt.$.sg.$.abl.","0.99",],
+[,"u","umhā",".n.",".nt.$.sg.$.abl.","0.99",],
+[,"u","usmiṃ",".n.",".nt.$.sg.$.loc.","0.99",],
+[,"u","umhi",".n.",".nt.$.sg.$.loc.","0.99",],
+[,"u","ū",".n.",".nt.$.pl.$.nom.","0.99",],
+[,"u","ūni",".n.",".nt.$.pl.$.nom.","0.99",],
+[,"u","ū",".n.",".nt.$.pl.$.voc.","0.3",],
+[,"u","ūni",".n.",".nt.$.pl.$.voc.","0.3",],
+[,"u","ū",".n.",".nt.$.pl.$.acc.","0.99",],
+[,"u","ūni",".n.",".nt.$.pl.$.acc.","0.99",],
+[,"u","ūnaṃ",".n.",".nt.$.pl.$.gen.","0.99",],
+[,"u","ūnaṃ",".n.",".nt.$.pl.$.dat.","0.99",],
+[,"u","ūhi",".n.",".nt.$.pl.$.inst.","0.99",],
+[,"u","ūbhi",".n.",".nt.$.pl.$.inst.","0.99",],
+[,"u","ūhi",".n.",".nt.$.pl.$.abl.","0.99",],
+[,"u","ūbhi",".n.",".nt.$.pl.$.abl.","0.99",],
+[,"u","ūsu",".n.",".nt.$.pl.$.loc.","0.99",],
+[,"u","u",".n.",".f.$.sg.$.nom.","0.99",],
+[,"u","u",".n.",".f.$.sg.$.voc.","0.3",],
+[,"u","uṃ",".n.",".f.$.sg.$.acc.","0.99",],
+[,"u","uyā",".n.",".f.$.sg.$.gen.","0.99",],
+[,"u","uyā",".n.",".f.$.sg.$.dat.","0.99",],
+[,"u","uyā",".n.",".f.$.sg.$.inst.","0.99",],
+[,"u","uyā",".n.",".f.$.sg.$.abl.","0.99",],
+[,"u","uto",".n.",".f.$.sg.$.abl.","0.99",],
+[,"u","uyā",".n.",".f.$.sg.$.loc.","0.99",],
+[,"u","uyaṃ",".n.",".f.$.sg.$.loc.","0.99",],
+[,"u","ū",".n.",".f.$.pl.$.nom.","0.99",],
+[,"u","uyo",".n.",".f.$.pl.$.nom.","0.99",],
+[,"u","ūvo",".n.",".f.$.pl.$.nom.","0.99",],
+[,"u","ū",".n.",".f.$.pl.$.voc.","0.3",],
+[,"u","uyo",".n.",".f.$.pl.$.voc.","0.3",],
+[,"u","ū",".n.",".f.$.pl.$.acc.","0.99",],
+[,"u","uyo",".n.",".f.$.pl.$.acc.","0.99",],
+[,"u","ūnaṃ",".n.",".f.$.pl.$.gen.","0.99",],
+[,"u","ūnaṃ",".n.",".f.$.pl.$.dat.","0.99",],
+[,"u","ūhi",".n.",".f.$.pl.$.inst.","0.99",],
+[,"u","ūbhi",".n.",".f.$.pl.$.inst.","0.99",],
+[,"u","ūhi",".n.",".f.$.pl.$.abl.","0.99",],
+[,"u","ūbhi",".n.",".f.$.pl.$.abl.","0.99",],
+[,"u","ūsu",".n.",".f.$.pl.$.loc.","0.99",],
+[,"ū","ū",".n.",".m.$.sg.$.nom.","0.99",],
+[,"ū","ū",".n.",".m.$.sg.$.voc.","0.3",],
+[,"ū","uṃ",".n.",".m.$.sg.$.acc.","0.99",],
+[,"ū","ussa",".n.",".m.$.sg.$.gen.","0.99",],
+[,"ū","uno",".n.",".m.$.sg.$.gen.","0.99",],
+[,"ū","ussa",".n.",".m.$.sg.$.dat.","0.99",],
+[,"ū","uno",".n.",".m.$.sg.$.dat.","0.99",],
+[,"ū","unā",".n.",".m.$.sg.$.inst.","0.99",],
+[,"ū","unā",".n.",".m.$.sg.$.abl.","0.99",],
+[,"ū","usmā",".n.",".m.$.sg.$.abl.","0.99",],
+[,"ū","umhā",".n.",".m.$.sg.$.abl.","0.99",],
+[,"ū","usmiṃ",".n.",".m.$.sg.$.loc.","0.99",],
+[,"ū","umhi",".n.",".m.$.sg.$.loc.","0.99",],
+[,"ū","ū",".n.",".m.$.pl.$.nom.","0.99",],
+[,"ū","avo",".n.",".m.$.pl.$.nom.","0.99",],
+[,"ū","ū",".n.",".m.$.pl.$.voc.","0.3",],
+[,"ū","avo",".n.",".m.$.pl.$.voc.","0.3",],
+[,"ū","ave",".n.",".m.$.pl.$.voc.","0.3",],
+[,"ū","ū",".n.",".m.$.pl.$.acc.","0.99",],
+[,"ū","avo",".n.",".m.$.pl.$.acc.","0.99",],
+[,"ū","ūnaṃ",".n.",".m.$.pl.$.gen.","0.99",],
+[,"ū","ūnaṃ",".n.",".m.$.pl.$.dat.","0.99",],
+[,"ū","ūhi",".n.",".m.$.pl.$.inst.","0.99",],
+[,"ū","ūbhi",".n.",".m.$.pl.$.inst.","0.99",],
+[,"ū","ūhi",".n.",".m.$.pl.$.abl.","0.99",],
+[,"ū","ūbhi",".n.",".m.$.pl.$.abl.","0.99",],
+[,"ū","ūsu",".n.",".m.$.pl.$.loc.","0.99",],
+[,"ū","ū",".n.",".f.$.sg.$.nom.","0.99",],
+[,"ū","ū",".n.",".f.$.sg.$.voc.","0.3",],
+[,"ū","uṃ",".n.",".f.$.sg.$.acc.","0.99",],
+[,"ū","uyā",".n.",".f.$.sg.$.gen.","0.99",],
+[,"ū","uyā",".n.",".f.$.sg.$.dat.","0.99",],
+[,"ū","uyā",".n.",".f.$.sg.$.inst.","0.99",],
+[,"ū","uyā",".n.",".f.$.sg.$.abl.","0.99",],
+[,"ū","uto",".n.",".f.$.sg.$.abl.","0.99",],
+[,"ū","uyā",".n.",".f.$.sg.$.loc.","0.99",],
+[,"ū","uyaṃ",".n.",".f.$.sg.$.loc.","0.99",],
+[,"ū","ū",".n.",".f.$.pl.$.nom.","0.99",],
+[,"ū","uyo",".n.",".f.$.pl.$.nom.","0.99",],
+[,"ū","ū",".n.",".f.$.pl.$.voc.","0.3",],
+[,"ū","uyo",".n.",".f.$.pl.$.voc.","0.3",],
+[,"ū","ū",".n.",".f.$.pl.$.acc.","0.99",],
+[,"ū","uyo",".n.",".f.$.pl.$.acc.","0.99",],
+[,"ū","ūnaṃ",".n.",".f.$.pl.$.gen.","0.99",],
+[,"ū","ūnaṃ",".n.",".f.$.pl.$.dat.","0.99",],
+[,"ū","ūhi",".n.",".f.$.pl.$.inst.","0.99",],
+[,"ū","ūbhi",".n.",".f.$.pl.$.inst.","0.99",],
+[,"ū","ūhi",".n.",".f.$.pl.$.abl.","0.99",],
+[,"ū","ūbhi",".n.",".f.$.pl.$.abl.","0.99",],
+[,"ū","ūsu",".n.",".f.$.pl.$.loc.","0.99",],
+[,"as","o",".n.",".m.$.sg.$.nom.","0.99",],
+[,"as","aṃ",".n.",".m.$.sg.$.nom.","0.99",],
+[,"o","o",".n.",".m.$.sg.$.nom.","0.99",],
+[,"o","aṃ",".n.",".m.$.sg.$.nom.","0.99",],
+[,"as","o",".n.",".m.$.sg.$.voc.","0.3",],
+[,"as","aṃ",".n.",".m.$.sg.$.voc.","0.3",],
+[,"as","ā",".n.",".m.$.sg.$.voc.","0.3",],
+[,"as","a",".n.",".m.$.sg.$.voc.","0.3",],
+[,"o","o",".n.",".m.$.sg.$.voc.","0.3",],
+[,"o","aṃ",".n.",".m.$.sg.$.voc.","0.3",],
+[,"o","ā",".n.",".m.$.sg.$.voc.","0.3",],
+[,"o","a",".n.",".m.$.sg.$.voc.","0.3",],
+[,"as","o",".n.",".m.$.sg.$.acc.","0.99",],
+[,"as","aṃ",".n.",".m.$.sg.$.acc.","0.99",],
+[,"o","o",".n.",".m.$.sg.$.acc.","0.99",],
+[,"o","aṃ",".n.",".m.$.sg.$.acc.","0.99",],
+[,"as","aso",".n.",".m.$.sg.$.gen.","0.99",],
+[,"as","assa",".n.",".m.$.sg.$.gen.","0.99",],
+[,"o","aso",".n.",".m.$.sg.$.gen.","0.99",],
+[,"o","assa",".n.",".m.$.sg.$.gen.","0.99",],
+[,"as","aso",".n.",".m.$.sg.$.dat.","0.99",],
+[,"as","assa",".n.",".m.$.sg.$.dat.","0.99",],
+[,"o","aso",".n.",".m.$.sg.$.dat.","0.99",],
+[,"o","assa",".n.",".m.$.sg.$.dat.","0.99",],
+[,"as","asā",".n.",".m.$.sg.$.inst.","0.99",],
+[,"as","ena",".n.",".m.$.sg.$.inst.","0.99",],
+[,"o","asā",".n.",".m.$.sg.$.inst.","0.99",],
+[,"o","ena",".n.",".m.$.sg.$.inst.","0.99",],
+[,"as","asā",".n.",".m.$.sg.$.abl.","0.99",],
+[,"as","asmā",".n.",".m.$.sg.$.abl.","0.99",],
+[,"as","amhā",".n.",".m.$.sg.$.abl.","0.99",],
+[,"as","ā",".n.",".m.$.sg.$.abl.","0.99",],
+[,"o","asā",".n.",".m.$.sg.$.abl.","0.99",],
+[,"o","asmā",".n.",".m.$.sg.$.abl.","0.99",],
+[,"o","amhā",".n.",".m.$.sg.$.abl.","0.99",],
+[,"o","ā",".n.",".m.$.sg.$.abl.","0.99",],
+[,"as","asi",".n.",".m.$.sg.$.loc.","0.99",],
+[,"as","e",".n.",".m.$.sg.$.loc.","0.99",],
+[,"as","asmiṃ",".n.",".m.$.sg.$.loc.","0.99",],
+[,"as","amhi",".n.",".m.$.sg.$.loc.","0.99",],
+[,"o","asi",".n.",".m.$.sg.$.loc.","0.99",],
+[,"o","e",".n.",".m.$.sg.$.loc.","0.99",],
+[,"o","asmiṃ",".n.",".m.$.sg.$.loc.","0.99",],
+[,"o","amhi",".n.",".m.$.sg.$.loc.","0.99",],
+[,"as","ā",".n.",".m.$.pl.$.nom.","0.99",],
+[,"o","ā",".n.",".m.$.pl.$.nom.","0.99",],
+[,"as","ā",".n.",".m.$.pl.$.voc.","0.3",],
+[,"o","ā",".n.",".m.$.pl.$.voc.","0.3",],
+[,"as","e",".n.",".m.$.pl.$.acc.","0.99",],
+[,"o","e",".n.",".m.$.pl.$.acc.","0.99",],
+[,"as","ānaṃ",".n.",".m.$.pl.$.gen.","0.99",],
+[,"o","ānaṃ",".n.",".m.$.pl.$.gen.","0.99",],
+[,"as","ānaṃ",".n.",".m.$.pl.$.dat.","0.99",],
+[,"o","ānaṃ",".n.",".m.$.pl.$.dat.","0.99",],
+[,"as","ehi",".n.",".m.$.pl.$.inst.","0.99",],
+[,"as","ebhi",".n.",".m.$.pl.$.inst.","0.99",],
+[,"o","ehi",".n.",".m.$.pl.$.inst.","0.99",],
+[,"o","ebhi",".n.",".m.$.pl.$.inst.","0.99",],
+[,"as","ehi",".n.",".m.$.pl.$.abl.","0.99",],
+[,"as","ebhi",".n.",".m.$.pl.$.abl.","0.99",],
+[,"o","ehi",".n.",".m.$.pl.$.abl.","0.99",],
+[,"o","ebhi",".n.",".m.$.pl.$.abl.","0.99",],
+[,"as","esu",".n.",".m.$.pl.$.loc.","0.99",],
+[,"o","esu",".n.",".m.$.pl.$.loc.","0.99",],
+[,"as","o",".n.",".nt.$.sg.$.nom.","0.99",],
+[,"as","aṃ",".n.",".nt.$.sg.$.nom.","0.99",],
+[,"o","o",".n.",".nt.$.sg.$.nom.","0.99",],
+[,"o","aṃ",".n.",".nt.$.sg.$.nom.","0.99",],
+[,"as","o",".n.",".nt.$.sg.$.voc.","0.3",],
+[,"as","aṃ",".n.",".nt.$.sg.$.voc.","0.3",],
+[,"as","ā",".n.",".nt.$.sg.$.voc.","0.3",],
+[,"as","a",".n.",".nt.$.sg.$.voc.","0.3",],
+[,"o","o",".n.",".nt.$.sg.$.voc.","0.3",],
+[,"o","aṃ",".n.",".nt.$.sg.$.voc.","0.3",],
+[,"o","ā",".n.",".nt.$.sg.$.voc.","0.3",],
+[,"o","a",".n.",".nt.$.sg.$.voc.","0.3",],
+[,"as","o",".n.",".nt.$.sg.$.acc.","0.99",],
+[,"as","aṃ",".n.",".nt.$.sg.$.acc.","0.99",],
+[,"o","o",".n.",".nt.$.sg.$.acc.","0.99",],
+[,"o","aṃ",".n.",".nt.$.sg.$.acc.","0.99",],
+[,"as","aso",".n.",".nt.$.sg.$.gen.","0.99",],
+[,"as","assa",".n.",".nt.$.sg.$.gen.","0.99",],
+[,"o","aso",".n.",".nt.$.sg.$.gen.","0.99",],
+[,"o","assa",".n.",".nt.$.sg.$.gen.","0.99",],
+[,"as","aso",".n.",".nt.$.sg.$.dat.","0.99",],
+[,"as","assa",".n.",".nt.$.sg.$.dat.","0.99",],
+[,"o","aso",".n.",".nt.$.sg.$.dat.","0.99",],
+[,"o","assa",".n.",".nt.$.sg.$.dat.","0.99",],
+[,"as","asā",".n.",".nt.$.sg.$.inst.","0.99",],
+[,"as","ena",".n.",".nt.$.sg.$.inst.","0.99",],
+[,"o","asā",".n.",".nt.$.sg.$.inst.","0.99",],
+[,"o","ena",".n.",".nt.$.sg.$.inst.","0.99",],
+[,"as","asā",".n.",".nt.$.sg.$.abl.","0.99",],
+[,"as","asmā",".n.",".nt.$.sg.$.abl.","0.99",],
+[,"as","amhā",".n.",".nt.$.sg.$.abl.","0.99",],
+[,"as","ā",".n.",".nt.$.sg.$.abl.","0.99",],
+[,"o","asā",".n.",".nt.$.sg.$.abl.","0.99",],
+[,"o","asmā",".n.",".nt.$.sg.$.abl.","0.99",],
+[,"o","amhā",".n.",".nt.$.sg.$.abl.","0.99",],
+[,"o","ā",".n.",".nt.$.sg.$.abl.","0.99",],
+[,"as","asi",".n.",".nt.$.sg.$.loc.","0.99",],
+[,"as","e",".n.",".nt.$.sg.$.loc.","0.99",],
+[,"as","asmiṃ",".n.",".nt.$.sg.$.loc.","0.99",],
+[,"as","amhi",".n.",".nt.$.sg.$.loc.","0.99",],
+[,"o","asi",".n.",".nt.$.sg.$.loc.","0.99",],
+[,"o","e",".n.",".nt.$.sg.$.loc.","0.99",],
+[,"o","asmiṃ",".n.",".nt.$.sg.$.loc.","0.99",],
+[,"o","amhi",".n.",".nt.$.sg.$.loc.","0.99",],
+[,"as","ā",".n.",".nt.$.pl.$.nom.","0.99",],
+[,"o","ā",".n.",".nt.$.pl.$.nom.","0.99",],
+[,"as","ā",".n.",".nt.$.pl.$.voc.","0.3",],
+[,"o","ā",".n.",".nt.$.pl.$.voc.","0.3",],
+[,"as","e",".n.",".nt.$.pl.$.acc.","0.99",],
+[,"o","e",".n.",".nt.$.pl.$.acc.","0.99",],
+[,"as","ānaṃ",".n.",".nt.$.pl.$.gen.","0.99",],
+[,"o","ānaṃ",".n.",".nt.$.pl.$.gen.","0.99",],
+[,"as","ānaṃ",".n.",".nt.$.pl.$.dat.","0.99",],
+[,"o","ānaṃ",".n.",".nt.$.pl.$.dat.","0.99",],
+[,"as","ehi",".n.",".nt.$.pl.$.inst.","0.99",],
+[,"as","ebhi",".n.",".nt.$.pl.$.inst.","0.99",],
+[,"o","ehi",".n.",".nt.$.pl.$.inst.","0.99",],
+[,"o","ebhi",".n.",".nt.$.pl.$.inst.","0.99",],
+[,"as","ehi",".n.",".nt.$.pl.$.abl.","0.99",],
+[,"as","ebhi",".n.",".nt.$.pl.$.abl.","0.99",],
+[,"o","ehi",".n.",".nt.$.pl.$.abl.","0.99",],
+[,"o","ebhi",".n.",".nt.$.pl.$.abl.","0.99",],
+[,"as","esu",".n.",".nt.$.pl.$.loc.","0.99",],
+[,"o","esu",".n.",".nt.$.pl.$.loc.","0.99",],
+[,"an","ā",".n.",".m.$.sg.$.nom.","0.99",],
+[,"an","ā",".n.",".m.$.sg.$.voc.","0.3",],
+[,"an","a",".n.",".m.$.sg.$.voc.","0.3",],
+[,"an","aṃ",".n.",".m.$.sg.$.acc.","0.99",],
+[,"an","ānaṃ",".n.",".m.$.sg.$.acc.","0.99",],
+[,"an","anaṃ",".n.",".m.$.sg.$.acc.","0.99",],
+[,"an","assa",".n.",".m.$.sg.$.gen.","0.99",],
+[,"an","ano",".n.",".m.$.sg.$.gen.","0.99",],
+[,"an","assa",".n.",".m.$.sg.$.dat.","0.99",],
+[,"an","ano",".n.",".m.$.sg.$.dat.","0.99",],
+[,"an","ena",".n.",".m.$.sg.$.inst.","0.99",],
+[,"an","anā",".n.",".m.$.sg.$.inst.","0.99",],
+[,"an","anā",".n.",".m.$.sg.$.abl.","0.99",],
+[,"an","asmā",".n.",".m.$.sg.$.abl.","0.99",],
+[,"an","amhā",".n.",".m.$.sg.$.abl.","0.99",],
+[,"an","ani",".n.",".m.$.sg.$.loc.","0.99",],
+[,"an","asmiṃ",".n.",".m.$.sg.$.loc.","0.99",],
+[,"an","amhi",".n.",".m.$.sg.$.loc.","0.99",],
+[,"an","ā",".n.",".m.$.pl.$.nom.","0.99",],
+[,"an","āno",".n.",".m.$.pl.$.nom.","0.99",],
+[,"an","ā",".n.",".m.$.pl.$.voc.","0.3",],
+[,"an","āno",".n.",".m.$.pl.$.voc.","0.3",],
+[,"an","āno",".n.",".m.$.pl.$.acc.","0.99",],
+[,"an","e",".n.",".m.$.pl.$.acc.","0.99",],
+[,"an","ānaṃ",".n.",".m.$.pl.$.gen.","0.99",],
+[,"an","ānaṃ",".n.",".m.$.pl.$.dat.","0.99",],
+[,"an","anehi",".n.",".m.$.pl.$.inst.","0.99",],
+[,"an","anebhi",".n.",".m.$.pl.$.inst.","0.99",],
+[,"an","anehi",".n.",".m.$.pl.$.abl.","0.99",],
+[,"an","anebhi",".n.",".m.$.pl.$.abl.","0.99",],
+[,"an","anesu",".n.",".m.$.pl.$.loc.","0.99",],
+[,"an","aṃ",".n.",".nt.$.sg.$.nom.","0.99",],
+[,"an","a",".n.",".nt.$.sg.$.voc.","0.3",],
+[,"an","aṃ",".n.",".nt.$.sg.$.acc.","0.99",],
+[,"an","assa",".n.",".nt.$.sg.$.gen.","0.99",],
+[,"an","assa",".n.",".nt.$.sg.$.dat.","0.99",],
+[,"an","āya",".n.",".nt.$.sg.$.dat.","0.99",],
+[,"an","ena",".n.",".nt.$.sg.$.inst.","0.99",],
+[,"an","ā",".n.",".nt.$.sg.$.abl.","0.99",],
+[,"an","asmā",".n.",".nt.$.sg.$.abl.","0.99",],
+[,"an","amhā",".n.",".nt.$.sg.$.abl.","0.99",],
+[,"an","ato",".n.",".nt.$.sg.$.abl.","0.99",],
+[,"an","e",".n.",".nt.$.sg.$.loc.","0.99",],
+[,"an","asmiṃ",".n.",".nt.$.sg.$.loc.","0.99",],
+[,"an","amhi",".n.",".nt.$.sg.$.loc.","0.99",],
+[,"an","āni",".n.",".nt.$.pl.$.nom.","0.99",],
+[,"an","ā",".n.",".nt.$.pl.$.nom.","0.99",],
+[,"an","āni",".n.",".nt.$.pl.$.voc.","0.3",],
+[,"an","ā",".n.",".nt.$.pl.$.voc.","0.3",],
+[,"an","āni",".n.",".nt.$.pl.$.acc.","0.99",],
+[,"an","e",".n.",".nt.$.pl.$.acc.","0.99",],
+[,"an","ānaṃ",".n.",".nt.$.pl.$.gen.","0.99",],
+[,"an","ānaṃ",".n.",".nt.$.pl.$.dat.","0.99",],
+[,"an","ehi",".n.",".nt.$.pl.$.inst.","0.99",],
+[,"an","ebhi",".n.",".nt.$.pl.$.inst.","0.99",],
+[,"an","ehi",".n.",".nt.$.pl.$.abl.","0.99",],
+[,"an","ebhi",".n.",".nt.$.pl.$.abl.","0.99",],
+[,"an","esu",".n.",".nt.$.pl.$.loc.","0.99",],
+[,"ar","ā",".n.",".f.$.sg.$.nom.","0.99",],
+[,"ar","ā",".n.",".f.$.sg.$.voc.","0.3",],
+[,"ar","aṃ",".n.",".f.$.sg.$.acc.","0.99",],
+[,"ar","ānaṃ",".n.",".f.$.sg.$.acc.","0.99",],
+[,"ar","assa",".n.",".f.$.sg.$.gen.","0.99",],
+[,"ar","ino",".n.",".f.$.sg.$.gen.","0.99",],
+[,"ar","assa",".n.",".f.$.sg.$.dat.","0.99",],
+[,"ar","ino",".n.",".f.$.sg.$.dat.","0.99",],
+[,"ar","ena",".n.",".f.$.sg.$.inst.","0.99",],
+[,"ar","inā",".n.",".f.$.sg.$.inst.","0.99",],
+[,"ar","asmā",".n.",".f.$.sg.$.abl.","0.99",],
+[,"ar","amhā",".n.",".f.$.sg.$.abl.","0.99",],
+[,"ar","ini",".n.",".f.$.sg.$.loc.","0.99",],
+[,"ar","asmiṃ",".n.",".f.$.sg.$.loc.","0.99",],
+[,"ar","amhi",".n.",".f.$.sg.$.loc.","0.99",],
+[,"ar","ā",".n.",".f.$.pl.$.nom.","0.99",],
+[,"ar","āno",".n.",".f.$.pl.$.nom.","0.99",],
+[,"ar","ā",".n.",".f.$.pl.$.voc.","0.3",],
+[,"ar","āno",".n.",".f.$.pl.$.voc.","0.3",],
+[,"ar","ā",".n.",".f.$.pl.$.acc.","0.99",],
+[,"ar","āno",".n.",".f.$.pl.$.acc.","0.99",],
+[,"ar","ānaṃ",".n.",".f.$.pl.$.gen.","0.99",],
+[,"ar","ānaṃ",".n.",".f.$.pl.$.dat.","0.99",],
+[,"ar","ehi",".n.",".f.$.pl.$.inst.","0.99",],
+[,"ar","āhi",".n.",".f.$.pl.$.inst.","0.99",],
+[,"ar","ehi",".n.",".f.$.pl.$.abl.","0.99",],
+[,"ar","āhi",".n.",".f.$.pl.$.abl.","0.99",],
+[,"ar","esu",".n.",".f.$.pl.$.loc.","0.99",],
+[,"ar","āsu",".n.",".f.$.pl.$.loc.","0.99",],
+[,"ar","ā",".n.",".nt.$.sg.$.nom.","0.99",],
+[,"ar","ā",".n.",".nt.$.sg.$.voc.","0.3",],
+[,"ar","aṃ",".n.",".nt.$.sg.$.acc.","0.99",],
+[,"ar","ānaṃ",".n.",".nt.$.sg.$.acc.","0.99",],
+[,"ar","assa",".n.",".nt.$.sg.$.gen.","0.99",],
+[,"ar","ino",".n.",".nt.$.sg.$.gen.","0.99",],
+[,"ar","assa",".n.",".nt.$.sg.$.dat.","0.99",],
+[,"ar","ino",".n.",".nt.$.sg.$.dat.","0.99",],
+[,"ar","ena",".n.",".nt.$.sg.$.inst.","0.99",],
+[,"ar","inā",".n.",".nt.$.sg.$.inst.","0.99",],
+[,"ar","asmā",".n.",".nt.$.sg.$.abl.","0.99",],
+[,"ar","amhā",".n.",".nt.$.sg.$.abl.","0.99",],
+[,"ar","ini",".n.",".nt.$.sg.$.loc.","0.99",],
+[,"ar","asmiṃ",".n.",".nt.$.sg.$.loc.","0.99",],
+[,"ar","amhi",".n.",".nt.$.sg.$.loc.","0.99",],
+[,"ar","ā",".n.",".nt.$.pl.$.nom.","0.99",],
+[,"ar","āno",".n.",".nt.$.pl.$.nom.","0.99",],
+[,"ar","ā",".n.",".nt.$.pl.$.voc.","0.3",],
+[,"ar","āno",".n.",".nt.$.pl.$.voc.","0.3",],
+[,"ar","ā",".n.",".nt.$.pl.$.acc.","0.99",],
+[,"ar","āno",".n.",".nt.$.pl.$.acc.","0.99",],
+[,"ar","ānaṃ",".n.",".nt.$.pl.$.gen.","0.99",],
+[,"ar","ānaṃ",".n.",".nt.$.pl.$.dat.","0.99",],
+[,"ar","ehi",".n.",".nt.$.pl.$.inst.","0.99",],
+[,"ar","āhi",".n.",".nt.$.pl.$.inst.","0.99",],
+[,"ar","ehi",".n.",".nt.$.pl.$.abl.","0.99",],
+[,"ar","āhi",".n.",".nt.$.pl.$.abl.","0.99",],
+[,"ar","esu",".n.",".nt.$.pl.$.loc.","0.99",],
+[,"ar","āsu",".n.",".nt.$.pl.$.loc.","0.99",],
+[,"a","e",".n.",".m.$.sg.$.nom.","0.99",],
+[,"a","ā",".n.",".m.$.sg.$.inst.","0.99",],
+[,"a","asā",".n.",".m.$.sg.$.inst.","0.99",],
+[,"a","ā",".n.",".m.$.sg.$.dat.","0.99",],
+[,"a","āya",".n.",".m.$.sg.$.gen.","0.99",],
+[,"a","ā",".n.",".m.$.sg.$.gen.","0.99",],
+[,"a","asi",".n.",".m.$.sg.$.loc.","0.99",],
+[,"a","e",".n.",".m.$.sg.$.voc.","0.3",],
+[,"a","o",".n.",".m.$.sg.$.voc.","0.3",],
+[,"a","āse",".n.",".m.$.pl.$.nom.","0.99",],
+[,"a","o",".n.",".m.$.pl.$.nom.","0.99",],
+[,"a","ān",".n.",".m.$.pl.$.acc.","0.99",],
+[,"a","e",".n.",".m.$.pl.$.inst.","0.99",],
+[,"a","ato",".n.",".m.$.pl.$.abl.","0.99",],
+[,"a","e",".n.",".nt.$.sg.$.nom.","0.99",],
+[,"a","ā",".n.",".nt.$.sg.$.inst.","0.99",],
+[,"a","asā",".n.",".nt.$.sg.$.inst.","0.99",],
+[,"a","ā",".n.",".nt.$.sg.$.dat.","0.99",],
+[,"a","asi",".n.",".nt.$.sg.$.loc.","0.99",],
+[,"a","ā",".n.",".nt.$.sg.$.voc.","0.3",],
+[,"a","aṃ",".n.",".nt.$.sg.$.voc.","0.3",],
+[,"a","āya",".n.",".nt.$.sg.$.gen.","0.99",],
+[,"a","ā",".n.",".nt.$.sg.$.gen.","0.99",],
+[,"a","o",".n.",".nt.$.pl.$.acc.","0.99",],
+[,"a","ato",".n.",".nt.$.pl.$.abl.","0.99",],
+[,"ā","ā",".n.",".f.$.sg.$.inst.","0.99",],
+[,"ā","āto",".n.",".f.$.sg.$.abl.","0.99",],
+[,"ā","a",".n.",".f.$.sg.$.voc.","0.3",],
+[,"ā","iyo",".n.",".f.$.pl.$.voc.","0.3",],
+[,"i","e",".n.",".m.$.sg.$.dat.","0.99",],
+[,"i","ito",".n.",".m.$.sg.$.abl.","0.99",],
+[,"i","e",".n.",".m.$.sg.$.gen.","0.99",],
+[,"i","ini",".n.",".m.$.sg.$.loc.","0.99",],
+[,"i","e",".n.",".m.$.sg.$.loc.","0.99",],
+[,"i","o",".n.",".m.$.sg.$.loc.","0.99",],
+[,"i","iyo",".n.",".m.$.pl.$.nom.","0.99",],
+[,"i","ino",".n.",".m.$.pl.$.nom.","0.99",],
+[,"i","iyo",".n.",".m.$.pl.$.acc.","0.99",],
+[,"i","ihi",".n.",".m.$.pl.$.inst.","0.99",],
+[,"i","ibhi",".n.",".m.$.pl.$.inst.","0.99",],
+[,"i","inaṃ",".n.",".m.$.pl.$.dat.","0.99",],
+[,"i","ihi",".n.",".m.$.pl.$.abl.","0.99",],
+[,"i","ibhi",".n.",".m.$.pl.$.abl.","0.99",],
+[,"i","inaṃ",".n.",".m.$.pl.$.gen.","0.99",],
+[,"i","isu",".n.",".m.$.pl.$.loc.","0.99",],
+[,"i","iyo",".n.",".m.$.pl.$.voc.","0.3",],
+[,"i","ihi",".n.",".nt.$.pl.$.inst.","0.99",],
+[,"i","ibhi",".n.",".nt.$.pl.$.inst.","0.99",],
+[,"i","ihi",".n.",".nt.$.pl.$.abl.","0.99",],
+[,"i","ibhi",".n.",".nt.$.pl.$.abl.","0.99",],
+[,"i","inaṃ",".n.",".nt.$.pl.$.gen.","0.99",],
+[,"i","inaṃ",".n.",".nt.$.pl.$.dat.","0.99",],
+[,"i","isu",".n.",".nt.$.pl.$.loc.","0.99",],
+[,"i","iṃ",".n.",".nt.$.sg.$.nom.","0.99",],
+[,"i","i",".n.",".nt.$.sg.$.acc.","0.99",],
+[,"i","e",".n.",".nt.$.sg.$.dat.","0.99",],
+[,"i","ito",".n.",".nt.$.sg.$.abl.","0.99",],
+[,"i","e",".n.",".nt.$.sg.$.gen.","0.99",],
+[,"i","ini",".n.",".nt.$.sg.$.loc.","0.99",],
+[,"i","e",".n.",".nt.$.sg.$.loc.","0.99",],
+[,"i","o",".n.",".nt.$.sg.$.loc.","0.99",],
+[,"i","iṃ",".n.",".nt.$.sg.$.voc.","0.3",],
+[,"i","ī",".n.",".f.$.sg.$.nom.","0.99",],
+[,"i","ito",".n.",".f.$.sg.$.abl.","0.99",],
+[,"i","myā",".n.",".f.$.sg.$.gen.","0.99",],
+[,"i","o",".n.",".f.$.sg.$.loc.","0.99",],
+[,"i","āyaṃ",".n.",".f.$.sg.$.loc.","0.99",],
+[,"i","u",".n.",".f.$.sg.$.loc.","0.99",],
+[,"i","ī",".n.",".f.$.sg.$.voc.","0.3",],
+[,"ī","ini",".n.",".m.$.sg.$.loc.","0.99",],
+[,"ī","īnaṃ",".n.",".m.$.pl.$.gen.","0.99",],
+[,"ī","īnaṃ",".n.",".m.$.pl.$.dat.","0.99",],
+[,"ī","īsu",".n.",".m.$.pl.$.loc.","0.99",],
+[,"ī","i",".n.",".m.$.sg.$.nom.","0.99",],
+[,"ī","iyo",".n.",".m.$.pl.$.nom.","0.99",],
+[,"ī","iye",".n.",".m.$.pl.$.acc.","0.99",],
+[,"ī","iyaṃ",".n.",".m.$.sg.$.acc.","0.99",],
+[,"ī","ito",".n.",".m.$.sg.$.abl.","0.99",],
+[,"ī","i",".n.",".f.$.sg.$.nom.","0.99",],
+[,"ī","iyaṃ",".n.",".f.$.sg.$.acc.","0.99",],
+[,"ī","ito",".n.",".f.$.sg.$.abl.","0.99",],
+[,"ī","īto",".n.",".f.$.sg.$.abl.","0.99",],
+[,"ī","āyo",".n.",".f.$.pl.$.nom.","0.99",],
+[,"ī","āyo",".n.",".f.$.pl.$.nom.","0.99",],
+[,"ī","āyo",".n.",".f.$.pl.$.nom.","0.99",],
+[,"ī","inaṃ",".n.",".f.$.pl.$.gen.","0.99",],
+[,"ī","inaṃ",".n.",".f.$.pl.$.dat.","0.99",],
+[,"ī","īyanaṃ",".n.",".f.$.pl.$.gen.","0.99",],
+[,"ī","īyanaṃ",".n.",".f.$.pl.$.dat.","0.99",],
+[,"ī","iyanaṃ",".n.",".f.$.pl.$.gen.","0.99",],
+[,"ī","iyanaṃ",".n.",".f.$.pl.$.dat.","0.99",],
+[,"ī","isu",".n.",".f.$.pl.$.loc.","0.99",],
+[,"ar","ā",".n.",".m.$.sg.$.nom.","0.99",],
+[,"ar","ā",".n.",".m.$.sg.$.voc.","0.3",],
+[,"ar","a",".n.",".m.$.sg.$.voc.","0.3",],
+[,"ar","araṃ",".n.",".m.$.sg.$.acc.","0.99",],
+[,"ar","āraṃ",".n.",".m.$.sg.$.acc.","0.99",],
+[,"ar","u",".n.",".m.$.sg.$.dat.","0.99",],
+[,"ar","ussa",".n.",".m.$.sg.$.dat.","0.99",],
+[,"ar","uno",".n.",".m.$.sg.$.dat.","0.99",],
+[,"ar","u",".n.",".m.$.sg.$.gen.","0.99",],
+[,"ar","ussa",".n.",".m.$.sg.$.gen.","0.99",],
+[,"ar","uno",".n.",".m.$.sg.$.gen.","0.99",],
+[,"ar","arā",".n.",".m.$.sg.$.inst.","0.99",],
+[,"ar","ara",".n.",".m.$.sg.$.inst.","0.99",],
+[,"ar","āra",".n.",".m.$.sg.$.inst.","0.99",],
+[,"ar","ārā",".n.",".m.$.sg.$.inst.","0.99",],
+[,"ar","unā",".n.",".m.$.sg.$.inst.","0.99",],
+[,"ar","arā",".n.",".m.$.sg.$.abl.","0.99",],
+[,"ar","ara",".n.",".m.$.sg.$.abl.","0.99",],
+[,"ar","āra",".n.",".m.$.sg.$.abl.","0.99",],
+[,"ar","ārā",".n.",".m.$.sg.$.abl.","0.99",],
+[,"ar","unā",".n.",".m.$.sg.$.abl.","0.99",],
+[,"ar","ari",".n.",".m.$.sg.$.loc.","0.99",],
+[,"ar","āro",".n.",".m.$.pl.$.nom.","0.99",],
+[,"ar","ā",".n.",".m.$.pl.$.nom.","0.99",],
+[,"ar","āro",".n.",".m.$.pl.$.voc.","0.3",],
+[,"ar","ā",".n.",".m.$.pl.$.voc.","0.3",],
+[,"ar","āro",".n.",".m.$.pl.$.acc.","0.99",],
+[,"ar","āre",".n.",".m.$.pl.$.acc.","0.99",],
+[,"ar","ānaṃ",".n.",".m.$.pl.$.dat.","0.99",],
+[,"ar","ārānaṃ",".n.",".m.$.pl.$.dat.","0.99",],
+[,"ar","ūnaṃ",".n.",".m.$.pl.$.dat.","0.99",],
+[,"ar","ānaṃ",".n.",".m.$.pl.$.gen.","0.99",],
+[,"ar","ārānaṃ",".n.",".m.$.pl.$.gen.","0.99",],
+[,"ar","ūnaṃ",".n.",".m.$.pl.$.gen.","0.99",],
+[,"ar","ārehi",".n.",".m.$.pl.$.inst.","0.99",],
+[,"ar","ārebhi",".n.",".m.$.pl.$.inst.","0.99",],
+[,"ar","ārehi",".n.",".m.$.pl.$.abl.","0.99",],
+[,"ar","ārebhi",".n.",".m.$.pl.$.abl.","0.99",],
+[,"ar","āresu",".n.",".m.$.pl.$.loc.","0.99",],
+[,"ar","ūsu",".n.",".m.$.pl.$.loc.","0.99",],
+[,"ar","āyo",".n.",".m.$.sg.$.voc.","0.3",],
+[,"ar","iyo",".n.",".m.$.sg.$.voc.","0.3",],
+[,"an","ane",".n.",".m.$.sg.$.loc.","0.99",],
+[,"an","ā",".n.",".m.$.pl.$.voc.","0.3",],
+[,"an","ubhi",".n.",".m.$.pl.$.inst.","0.99",],
+[,"an","ūbhi",".n.",".m.$.pl.$.inst.","0.99",],
+[,"an","uhi",".n.",".m.$.pl.$.inst.","0.99",],
+[,"an","ūhi",".n.",".m.$.pl.$.inst.","0.99",],
+[,"an","ūnaṃ",".n.",".m.$.pl.$.gen.","0.99",],
+[,"an","ūnaṃ",".n.",".m.$.pl.$.gen.","0.99",],
+[,"an","esu",".n.",".m.$.pl.$.loc.","0.99",],
+[,"an","ūsu",".n.",".m.$.pl.$.loc.","0.99",],
+[,"an","usu",".n.",".m.$.pl.$.loc.","0.99",],
+[,"an","a",".n.",".nt.$.sg.$.nom.","0.99",],
+[,"an","a",".n.",".nt.$.sg.$.acc.","0.99",],
+[,"an","anā",".n.",".nt.$.sg.$.inst.","0.99",],
+[,"an","unā",".n.",".nt.$.sg.$.inst.","0.99",],
+[,"an","no",".n.",".nt.$.sg.$.dat.","0.99",],
+[,"an","unā",".n.",".nt.$.sg.$.abl.","0.99",],
+[,"an","no",".n.",".nt.$.sg.$.dat.","0.99",],
+[,"an","ani",".n.",".nt.$.sg.$.loc.","0.99",],
+[,"an","ā",".n.",".nt.$.pl.$.voc.","0.3",],
+[,"as","āni",".n.",".m.$.pl.$.nom.","0.99",],
+[,"as","ā",".n.",".m.$.pl.$.acc.","0.99",],
+[,"as","āni",".n.",".m.$.pl.$.acc.","0.99",],
+[,"as","āni",".n.",".m.$.pl.$.voc.","0.3",],
+[,"as","āni",".n.",".m.$.pl.$.nom.","0.99",],
+[,"as","ā",".n.",".m.$.pl.$.acc.","0.99",],
+[,"as","āni",".n.",".m.$.pl.$.acc.","0.99",],
+[,"as","āni",".n.",".m.$.pl.$.voc.","0.3",],
+[,"as","āni",".n.",".m.$.pl.$.nom.","0.99",],
+[,"as","ā",".n.",".m.$.pl.$.acc.","0.99",],
+[,"as","āni",".n.",".m.$.pl.$.acc.","0.99",],
+[,"as","āni",".n.",".m.$.pl.$.voc.","0.3",],
+[,"us","u",".n.",".m.$.sg.$.nom.","0.99",],
+[,"us","uṃ",".n.",".m.$.sg.$.nom.","0.99",],
+[,"us","u",".n.",".m.$.sg.$.voc.","0.3",],
+[,"us","uṃ",".n.",".m.$.sg.$.voc.","0.3",],
+[,"us","u",".n.",".m.$.sg.$.acc.","0.99",],
+[,"us","uṃ",".n.",".m.$.sg.$.acc.","0.99",],
+[,"us","ussa",".n.",".m.$.sg.$.dat.","0.99",],
+[,"us","uno",".n.",".m.$.sg.$.dat.","0.99",],
+[,"us","ussa",".n.",".m.$.sg.$.gen.","0.99",],
+[,"us","uno",".n.",".m.$.sg.$.gen.","0.99",],
+[,"us","unā",".n.",".m.$.sg.$.inst.","0.99",],
+[,"us","usā",".n.",".m.$.sg.$.inst.","0.99",],
+[,"us","unā",".n.",".m.$.sg.$.abl.","0.99",],
+[,"us","usā",".n.",".m.$.sg.$.abl.","0.99",],
+[,"us","uni",".n.",".m.$.sg.$.loc.","0.99",],
+[,"us","usi",".n.",".m.$.sg.$.loc.","0.99",],
+[,"us","ū",".n.",".m.$.pl.$.nom.","0.99",],
+[,"us","ūni",".n.",".m.$.pl.$.nom.","0.99",],
+[,"us","ū",".n.",".m.$.pl.$.voc.","0.3",],
+[,"us","ūni",".n.",".m.$.pl.$.voc.","0.3",],
+[,"us","ū",".n.",".m.$.pl.$.acc.","0.99",],
+[,"us","ūni",".n.",".m.$.pl.$.acc.","0.99",],
+[,"us","ūnaṃ",".n.",".m.$.pl.$.dat.","0.99",],
+[,"us","ūsaṃ",".n.",".m.$.pl.$.dat.","0.99",],
+[,"us","ūnaṃ",".n.",".m.$.pl.$.gen.","0.99",],
+[,"us","ūsaṃ",".n.",".m.$.pl.$.gen.","0.99",],
+[,"us","ūhi",".n.",".m.$.pl.$.inst.","0.99",],
+[,"us","ūbhi",".n.",".m.$.pl.$.inst.","0.99",],
+[,"us","ūhi",".n.",".m.$.pl.$.abl.","0.99",],
+[,"us","ūbhi",".n.",".m.$.pl.$.abl.","0.99",],
+[,"us","ūsu",".n.",".m.$.pl.$.loc.","0.99",],
+[,"a","assā",".n.",".m.$.sg.$.gen.","0.99",],
+[,"a","assā",".n.",".m.$.sg.$.dat.","0.99",],
+[,"a","enā",".n.",".m.$.sg.$.inst.","0.99",],
+[,"a","amhī",".n.",".m.$.sg.$.loc.","0.99",],
+[,"a","ehī",".n.",".m.$.pl.$.inst.","0.99",],
+[,"a","ebhī",".n.",".m.$.pl.$.inst.","0.99",],
+[,"a","ehī",".n.",".m.$.pl.$.abl.","0.99",],
+[,"a","ebhī",".n.",".m.$.pl.$.abl.","0.99",],
+[,"a","esū",".n.",".m.$.pl.$.loc.","0.99",],
+[,"a","assā",".n.",".nt.$.sg.$.gen.","0.99",],
+[,"a","assā",".n.",".nt.$.sg.$.dat.","0.99",],
+[,"a","enā",".n.",".nt.$.sg.$.inst.","0.99",],
+[,"a","amhī",".n.",".nt.$.sg.$.loc.","0.99",],
+[,"a","ānī",".n.",".nt.$.pl.$.nom.","0.99",],
+[,"a","ānī",".n.",".nt.$.pl.$.voc.","0.3",],
+[,"a","ānī",".n.",".nt.$.pl.$.acc.","0.99",],
+[,"a","ehī",".n.",".nt.$.pl.$.inst.","0.99",],
+[,"a","ebhī",".n.",".nt.$.pl.$.inst.","0.99",],
+[,"a","ehī",".n.",".nt.$.pl.$.abl.","0.99",],
+[,"a","ebhī",".n.",".nt.$.pl.$.abl.","0.99",],
+[,"a","esū",".n.",".nt.$.pl.$.loc.","0.99",],
+[,"ā","āhī",".n.",".f.$.pl.$.inst.","0.99",],
+[,"ā","ābhī",".n.",".f.$.pl.$.inst.","0.99",],
+[,"ā","āhī",".n.",".f.$.pl.$.abl.","0.99",],
+[,"ā","ābhī",".n.",".f.$.pl.$.abl.","0.99",],
+[,"ā","āsū",".n.",".f.$.pl.$.loc.","0.99",],
+[,"i","issā",".n.",".m.$.sg.$.gen.","0.99",],
+[,"i","issā",".n.",".m.$.sg.$.dat.","0.99",],
+[,"i","imhī",".n.",".m.$.sg.$.loc.","0.99",],
+[,"i","īhī",".n.",".m.$.pl.$.inst.","0.99",],
+[,"i","ībhī",".n.",".m.$.pl.$.inst.","0.99",],
+[,"i","īhī",".n.",".m.$.pl.$.abl.","0.99",],
+[,"i","ībhī",".n.",".m.$.pl.$.abl.","0.99",],
+[,"i","īsū",".n.",".m.$.pl.$.loc.","0.99",],
+[,"i","assā",".n.",".nt.$.sg.$.gen.","0.99",],
+[,"i","assā",".n.",".nt.$.sg.$.dat.","0.99",],
+[,"i","imhī",".n.",".nt.$.sg.$.loc.","0.99",],
+[,"i","īnī",".n.",".nt.$.pl.$.nom.","0.99",],
+[,"i","īnī",".n.",".nt.$.pl.$.voc.","0.3",],
+[,"i","īnī",".n.",".nt.$.pl.$.acc.","0.99",],
+[,"i","īhī",".n.",".nt.$.pl.$.inst.","0.99",],
+[,"i","ībhī",".n.",".nt.$.pl.$.inst.","0.99",],
+[,"i","īhī",".n.",".nt.$.pl.$.abl.","0.99",],
+[,"i","ībhī",".n.",".nt.$.pl.$.abl.","0.99",],
+[,"i","īsū",".n.",".nt.$.pl.$.loc.","0.99",],
+[,"i","īhī",".n.",".f.$.pl.$.inst.","0.99",],
+[,"i","ībhī",".n.",".f.$.pl.$.inst.","0.99",],
+[,"i","īhī",".n.",".f.$.pl.$.abl.","0.99",],
+[,"i","ībhī",".n.",".f.$.pl.$.abl.","0.99",],
+[,"i","īsū",".n.",".f.$.pl.$.loc.","0.99",],
+[,"ī","issā",".n.",".m.$.sg.$.gen.","0.99",],
+[,"in","issā",".n.",".m.$.sg.$.gen.","0.99",],
+[,"ī","issā",".n.",".m.$.sg.$.dat.","0.99",],
+[,"in","issā",".n.",".m.$.sg.$.dat.","0.99",],
+[,"ī","imhī",".n.",".m.$.sg.$.loc.","0.99",],
+[,"in","imhī",".n.",".m.$.sg.$.loc.","0.99",],
+[,"ī","īhī",".n.",".m.$.pl.$.inst.","0.99",],
+[,"ī","ībhī",".n.",".m.$.pl.$.inst.","0.99",],
+[,"in","īhī",".n.",".m.$.pl.$.inst.","0.99",],
+[,"in","ībhī",".n.",".m.$.pl.$.inst.","0.99",],
+[,"ī","īhī",".n.",".m.$.pl.$.abl.","0.99",],
+[,"ī","ībhī",".n.",".m.$.pl.$.abl.","0.99",],
+[,"in","īhī",".n.",".m.$.pl.$.abl.","0.99",],
+[,"in","ībhī",".n.",".m.$.pl.$.abl.","0.99",],
+[,"ī","īsū",".n.",".m.$.pl.$.loc.","0.99",],
+[,"in","īsū",".n.",".m.$.pl.$.loc.","0.99",],
+[,"ī","īhī",".n.",".f.$.pl.$.inst.","0.99",],
+[,"ī","ībhī",".n.",".f.$.pl.$.inst.","0.99",],
+[,"ī","īhī",".n.",".f.$.pl.$.abl.","0.99",],
+[,"ī","ībhī",".n.",".f.$.pl.$.abl.","0.99",],
+[,"ī","īsū",".n.",".f.$.pl.$.loc.","0.99",],
+[,"u","ussā",".n.",".m.$.sg.$.gen.","0.99",],
+[,"u","ussā",".n.",".m.$.sg.$.dat.","0.99",],
+[,"u","umhī",".n.",".m.$.sg.$.loc.","0.99",],
+[,"u","ūhī",".n.",".m.$.pl.$.inst.","0.99",],
+[,"u","ūbhī",".n.",".m.$.pl.$.inst.","0.99",],
+[,"u","ūhī",".n.",".m.$.pl.$.abl.","0.99",],
+[,"u","ūbhī",".n.",".m.$.pl.$.abl.","0.99",],
+[,"u","ūsū",".n.",".m.$.pl.$.loc.","0.99",],
+[,"u","ussā",".n.",".nt.$.sg.$.gen.","0.99",],
+[,"u","ussā",".n.",".nt.$.sg.$.dat.","0.99",],
+[,"u","umhī",".n.",".nt.$.sg.$.loc.","0.99",],
+[,"u","ūnī",".n.",".nt.$.pl.$.nom.","0.99",],
+[,"u","ūnī",".n.",".nt.$.pl.$.voc.","0.3",],
+[,"u","ūnī",".n.",".nt.$.pl.$.acc.","0.99",],
+[,"u","ūhī",".n.",".nt.$.pl.$.inst.","0.99",],
+[,"u","ūbhī",".n.",".nt.$.pl.$.inst.","0.99",],
+[,"u","ūhī",".n.",".nt.$.pl.$.abl.","0.99",],
+[,"u","ūbhī",".n.",".nt.$.pl.$.abl.","0.99",],
+[,"u","ūsū",".n.",".nt.$.pl.$.loc.","0.99",],
+[,"u","ūhī",".n.",".f.$.pl.$.inst.","0.99",],
+[,"u","ūbhī",".n.",".f.$.pl.$.inst.","0.99",],
+[,"u","ūhī",".n.",".f.$.pl.$.abl.","0.99",],
+[,"u","ūbhī",".n.",".f.$.pl.$.abl.","0.99",],
+[,"u","ūsū",".n.",".f.$.pl.$.loc.","0.99",],
+[,"ū","ussā",".n.",".m.$.sg.$.gen.","0.99",],
+[,"ū","ussā",".n.",".m.$.sg.$.dat.","0.99",],
+[,"ū","umhī",".n.",".m.$.sg.$.loc.","0.99",],
+[,"ū","ūhī",".n.",".m.$.pl.$.inst.","0.99",],
+[,"ū","ūbhī",".n.",".m.$.pl.$.inst.","0.99",],
+[,"ū","ūhī",".n.",".m.$.pl.$.abl.","0.99",],
+[,"ū","ūbhī",".n.",".m.$.pl.$.abl.","0.99",],
+[,"ū","ūsū",".n.",".m.$.pl.$.loc.","0.99",],
+[,"ū","ūhī",".n.",".f.$.pl.$.inst.","0.99",],
+[,"ū","ūbhī",".n.",".f.$.pl.$.inst.","0.99",],
+[,"ū","ūhī",".n.",".f.$.pl.$.abl.","0.99",],
+[,"ū","ūbhī",".n.",".f.$.pl.$.abl.","0.99",],
+[,"ū","ūsū",".n.",".f.$.pl.$.loc.","0.99",],
+[,"as","assā",".n.",".m.$.sg.$.gen.","0.99",],
+[,"o","assā",".n.",".m.$.sg.$.gen.","0.99",],
+[,"as","assā",".n.",".m.$.sg.$.dat.","0.99",],
+[,"o","assā",".n.",".m.$.sg.$.dat.","0.99",],
+[,"as","enā",".n.",".m.$.sg.$.inst.","0.99",],
+[,"o","enā",".n.",".m.$.sg.$.inst.","0.99",],
+[,"as","asī",".n.",".m.$.sg.$.loc.","0.99",],
+[,"as","amhī",".n.",".m.$.sg.$.loc.","0.99",],
+[,"o","asī",".n.",".m.$.sg.$.loc.","0.99",],
+[,"o","amhī",".n.",".m.$.sg.$.loc.","0.99",],
+[,"as","ehī",".n.",".m.$.pl.$.inst.","0.99",],
+[,"as","ebhī",".n.",".m.$.pl.$.inst.","0.99",],
+[,"o","ehī",".n.",".m.$.pl.$.inst.","0.99",],
+[,"o","ebhī",".n.",".m.$.pl.$.inst.","0.99",],
+[,"as","ehī",".n.",".m.$.pl.$.abl.","0.99",],
+[,"as","ebhī",".n.",".m.$.pl.$.abl.","0.99",],
+[,"o","ehī",".n.",".m.$.pl.$.abl.","0.99",],
+[,"o","ebhī",".n.",".m.$.pl.$.abl.","0.99",],
+[,"as","esū",".n.",".m.$.pl.$.loc.","0.99",],
+[,"o","esū",".n.",".m.$.pl.$.loc.","0.99",],
+[,"as","assā",".n.",".nt.$.sg.$.gen.","0.99",],
+[,"o","assā",".n.",".nt.$.sg.$.gen.","0.99",],
+[,"as","assā",".n.",".nt.$.sg.$.dat.","0.99",],
+[,"o","assā",".n.",".nt.$.sg.$.dat.","0.99",],
+[,"as","enā",".n.",".nt.$.sg.$.inst.","0.99",],
+[,"o","enā",".n.",".nt.$.sg.$.inst.","0.99",],
+[,"as","asī",".n.",".nt.$.sg.$.loc.","0.99",],
+[,"as","amhī",".n.",".nt.$.sg.$.loc.","0.99",],
+[,"o","asī",".n.",".nt.$.sg.$.loc.","0.99",],
+[,"o","amhī",".n.",".nt.$.sg.$.loc.","0.99",],
+[,"as","ehī",".n.",".nt.$.pl.$.inst.","0.99",],
+[,"as","ebhī",".n.",".nt.$.pl.$.inst.","0.99",],
+[,"o","ehī",".n.",".nt.$.pl.$.inst.","0.99",],
+[,"o","ebhī",".n.",".nt.$.pl.$.inst.","0.99",],
+[,"as","ehī",".n.",".nt.$.pl.$.abl.","0.99",],
+[,"as","ebhī",".n.",".nt.$.pl.$.abl.","0.99",],
+[,"o","ehī",".n.",".nt.$.pl.$.abl.","0.99",],
+[,"o","ebhī",".n.",".nt.$.pl.$.abl.","0.99",],
+[,"as","esū",".n.",".nt.$.pl.$.loc.","0.99",],
+[,"o","esū",".n.",".nt.$.pl.$.loc.","0.99",],
+[,"an","assā",".n.",".m.$.sg.$.gen.","0.99",],
+[,"an","assā",".n.",".m.$.sg.$.dat.","0.99",],
+[,"an","enā",".n.",".m.$.sg.$.inst.","0.99",],
+[,"an","anī",".n.",".m.$.sg.$.loc.","0.99",],
+[,"an","amhī",".n.",".m.$.sg.$.loc.","0.99",],
+[,"an","anehī",".n.",".m.$.pl.$.inst.","0.99",],
+[,"an","anebhī",".n.",".m.$.pl.$.inst.","0.99",],
+[,"an","anehī",".n.",".m.$.pl.$.abl.","0.99",],
+[,"an","anebhī",".n.",".m.$.pl.$.abl.","0.99",],
+[,"an","anesū",".n.",".m.$.pl.$.loc.","0.99",],
+[,"an","assā",".n.",".nt.$.sg.$.gen.","0.99",],
+[,"an","assā",".n.",".nt.$.sg.$.dat.","0.99",],
+[,"an","enā",".n.",".nt.$.sg.$.inst.","0.99",],
+[,"an","amhī",".n.",".nt.$.sg.$.loc.","0.99",],
+[,"an","ānī",".n.",".nt.$.pl.$.nom.","0.99",],
+[,"an","ānī",".n.",".nt.$.pl.$.voc.","0.3",],
+[,"an","ānī",".n.",".nt.$.pl.$.acc.","0.99",],
+[,"an","ehī",".n.",".nt.$.pl.$.inst.","0.99",],
+[,"an","ebhī",".n.",".nt.$.pl.$.inst.","0.99",],
+[,"an","ehī",".n.",".nt.$.pl.$.abl.","0.99",],
+[,"an","ebhī",".n.",".nt.$.pl.$.abl.","0.99",],
+[,"an","esū",".n.",".nt.$.pl.$.loc.","0.99",],
+[,"ar","assā",".n.",".f.$.sg.$.gen.","0.99",],
+[,"ar","assā",".n.",".f.$.sg.$.dat.","0.99",],
+[,"ar","enā",".n.",".f.$.sg.$.inst.","0.99",],
+[,"ar","amhī",".n.",".f.$.sg.$.loc.","0.99",],
+[,"ar","ehī",".n.",".f.$.pl.$.inst.","0.99",],
+[,"ar","āhī",".n.",".f.$.pl.$.inst.","0.99",],
+[,"ar","ehī",".n.",".f.$.pl.$.abl.","0.99",],
+[,"ar","āhī",".n.",".f.$.pl.$.abl.","0.99",],
+[,"ar","esū",".n.",".f.$.pl.$.loc.","0.99",],
+[,"ar","āsū",".n.",".f.$.pl.$.loc.","0.99",],
+[,"ar","assā",".n.",".nt.$.sg.$.gen.","0.99",],
+[,"ar","assā",".n.",".nt.$.sg.$.dat.","0.99",],
+[,"ar","enā",".n.",".nt.$.sg.$.inst.","0.99",],
+[,"ar","amhī",".n.",".nt.$.sg.$.loc.","0.99",],
+[,"ar","ehī",".n.",".nt.$.pl.$.inst.","0.99",],
+[,"ar","āhī",".n.",".nt.$.pl.$.inst.","0.99",],
+[,"ar","ehī",".n.",".nt.$.pl.$.abl.","0.99",],
+[,"ar","āhī",".n.",".nt.$.pl.$.abl.","0.99",],
+[,"ar","esū",".n.",".nt.$.pl.$.loc.","0.99",],
+[,"ar","āsū",".n.",".nt.$.pl.$.loc.","0.99",],
+[,"a","asī",".n.",".m.$.sg.$.loc.","0.99",],
+[,"a","asī",".n.",".nt.$.sg.$.loc.","0.99",],
+[,"i","ihī",".n.",".m.$.pl.$.inst.","0.99",],
+[,"i","ibhī",".n.",".m.$.pl.$.inst.","0.99",],
+[,"i","ihī",".n.",".m.$.pl.$.abl.","0.99",],
+[,"i","ibhī",".n.",".m.$.pl.$.abl.","0.99",],
+[,"i","isū",".n.",".m.$.pl.$.loc.","0.99",],
+[,"i","ihī",".n.",".nt.$.pl.$.inst.","0.99",],
+[,"i","ibhī",".n.",".nt.$.pl.$.inst.","0.99",],
+[,"i","ihī",".n.",".nt.$.pl.$.abl.","0.99",],
+[,"i","ibhī",".n.",".nt.$.pl.$.abl.","0.99",],
+[,"i","isū",".n.",".nt.$.pl.$.loc.","0.99",],
+[,"ī","īsū",".n.",".m.$.pl.$.loc.","0.99",],
+[,"ī","isū",".n.",".f.$.pl.$.loc.","0.99",],
+[,"ar","ussā",".n.",".m.$.sg.$.dat.","0.99",],
+[,"ar","ussā",".n.",".m.$.sg.$.gen.","0.99",],
+[,"ar","arī",".n.",".m.$.sg.$.loc.","0.99",],
+[,"ar","ārehī",".n.",".m.$.pl.$.inst.","0.99",],
+[,"ar","ārebhī",".n.",".m.$.pl.$.inst.","0.99",],
+[,"ar","ārehī",".n.",".m.$.pl.$.abl.","0.99",],
+[,"ar","ārebhī",".n.",".m.$.pl.$.abl.","0.99",],
+[,"ar","āresū",".n.",".m.$.pl.$.loc.","0.99",],
+[,"ar","ūsū",".n.",".m.$.pl.$.loc.","0.99",],
+[,"an","ubhī",".n.",".m.$.pl.$.inst.","0.99",],
+[,"an","ūbhī",".n.",".m.$.pl.$.inst.","0.99",],
+[,"an","uhī",".n.",".m.$.pl.$.inst.","0.99",],
+[,"an","ūhī",".n.",".m.$.pl.$.inst.","0.99",],
+[,"an","esū",".n.",".m.$.pl.$.loc.","0.99",],
+[,"an","ūsū",".n.",".m.$.pl.$.loc.","0.99",],
+[,"an","usū",".n.",".m.$.pl.$.loc.","0.99",],
+[,"an","anī",".n.",".nt.$.sg.$.loc.","0.99",],
+[,"as","ānī",".n.",".m.$.pl.$.nom.","0.99",],
+[,"as","ānī",".n.",".m.$.pl.$.acc.","0.99",],
+[,"as","ānī",".n.",".m.$.pl.$.voc.","0.3",],
+[,"as","ānī",".n.",".m.$.pl.$.nom.","0.99",],
+[,"as","ānī",".n.",".m.$.pl.$.acc.","0.99",],
+[,"as","ānī",".n.",".m.$.pl.$.voc.","0.3",],
+[,"as","ānī",".n.",".m.$.pl.$.nom.","0.99",],
+[,"as","ānī",".n.",".m.$.pl.$.acc.","0.99",],
+[,"as","ānī",".n.",".m.$.pl.$.voc.","0.3",],
+[,"us","ussā",".n.",".m.$.sg.$.dat.","0.99",],
+[,"us","ussā",".n.",".m.$.sg.$.gen.","0.99",],
+[,"us","unī",".n.",".m.$.sg.$.loc.","0.99",],
+[,"us","usī",".n.",".m.$.sg.$.loc.","0.99",],
+[,"us","ūnī",".n.",".m.$.pl.$.nom.","0.99",],
+[,"us","ūnī",".n.",".m.$.pl.$.voc.","0.3",],
+[,"us","ūnī",".n.",".m.$.pl.$.acc.","0.99",],
+[,"us","ūhī",".n.",".m.$.pl.$.inst.","0.99",],
+[,"us","ūbhī",".n.",".m.$.pl.$.inst.","0.99",],
+[,"us","ūhī",".n.",".m.$.pl.$.abl.","0.99",],
+[,"us","ūbhī",".n.",".m.$.pl.$.abl.","0.99",],
+[,"us","ūsū",".n.",".m.$.pl.$.loc.","0.99",],
+[,"ant","ā",".n.",".m.$.pl.$.nom.","0.99",],
+[,"ant","ā",".n.",".m.$.pl.$.voc.","0.3",],
+[,"ant","ā",".n.",".m.$.sg.$.nom.","0.99",],
+[,"ant","a",".n.",".m.$.sg.$.voc.","0.3",],
+[,"ant","ā",".n.",".m.$.sg.$.voc.","0.3",],
+[,"ant","ā",".n.",".nt.$.pl.$.nom.","0.99",],
+[,"ant","ā",".n.",".nt.$.pl.$.voc.","0.3",],
+[,"ant","a",".n.",".nt.$.sg.$.voc.","0.3",],
+[,"ant","ā",".n.",".nt.$.sg.$.voc.","0.3",],
+[,"ant","ā",".n.",".m.$.sg.$.voc.","0.3",],
+[,"ant","ā",".n.",".nt.$.sg.$.voc.","0.3",],
+[,"ant","aṃ",".n.",".m.$.sg.$.acc.","0.99",],
+[,"ant","aṃ",".n.",".nt.$.sg.$.acc.","0.99",],
+[,"ant","aṃ",".n.",".nt.$.sg.$.nom.","0.99",],
+[,"ant","aṃ",".n.",".m.$.sg.$.nom.","0.99",],
+[,"ant","aṃ",".n.",".m.$.sg.$.voc.","0.3",],
+[,"ant","aṃ",".n.",".nt.$.sg.$.voc.","0.3",],
+[,"ant","aṃ",".n.",".m.$.sg.$.voc.","0.3",],
+[,"ant","aṃ",".n.",".nt.$.sg.$.voc.","0.3",],
+[,"ant","ānaṃ",".n.",".m.$.pl.$.dat.","0.99",],
+[,"ant","ānaṃ",".n.",".m.$.pl.$.gen.","0.99",],
+[,"ant","e",".n.",".m.$.pl.$.acc.","0.99",],
+[,"ant","ebhi",".n.",".m.$.pl.$.abl.","0.99",],
+[,"ant","ebhi",".n.",".m.$.pl.$.inst.","0.99",],
+[,"ant","ehi",".n.",".m.$.pl.$.abl.","0.99",],
+[,"ant","ehi",".n.",".m.$.pl.$.inst.","0.99",],
+[,"ant","esu",".n.",".m.$.pl.$.loc.","0.99",],
+[,"anta","ā",".n.",".m.$.pl.$.nom.","0.99",],
+[,"anta","ā",".n.",".m.$.pl.$.voc.","0.3",],
+[,"anta","ā",".n.",".m.$.sg.$.nom.","0.99",],
+[,"anta","a",".n.",".m.$.sg.$.voc.","0.3",],
+[,"anta","ā",".n.",".m.$.sg.$.voc.","0.3",],
+[,"anta","ā",".n.",".nt.$.pl.$.nom.","0.99",],
+[,"anta","ā",".n.",".nt.$.pl.$.voc.","0.3",],
+[,"anta","a",".n.",".nt.$.sg.$.voc.","0.3",],
+[,"anta","ā",".n.",".nt.$.sg.$.voc.","0.3",],
+[,"anta","ā",".n.",".m.$.sg.$.voc.","0.3",],
+[,"anta","ā",".n.",".nt.$.sg.$.voc.","0.3",],
+[,"anta","aṃ",".n.",".m.$.sg.$.acc.","0.99",],
+[,"anta","aṃ",".n.",".nt.$.sg.$.acc.","0.99",],
+[,"anta","aṃ",".n.",".nt.$.sg.$.nom.","0.99",],
+[,"anta","aṃ",".n.",".m.$.sg.$.nom.","0.99",],
+[,"anta","aṃ",".n.",".m.$.sg.$.voc.","0.3",],
+[,"anta","aṃ",".n.",".nt.$.sg.$.voc.","0.3",],
+[,"anta","aṃ",".n.",".m.$.sg.$.voc.","0.3",],
+[,"anta","aṃ",".n.",".nt.$.sg.$.voc.","0.3",],
+[,"anta","ānaṃ",".n.",".m.$.pl.$.dat.","0.99",],
+[,"anta","ānaṃ",".n.",".m.$.pl.$.gen.","0.99",],
+[,"anta","e",".n.",".m.$.pl.$.acc.","0.99",],
+[,"anta","ebhi",".n.",".m.$.pl.$.abl.","0.99",],
+[,"anta","ebhi",".n.",".m.$.pl.$.inst.","0.99",],
+[,"anta","ehi",".n.",".m.$.pl.$.abl.","0.99",],
+[,"anta","ehi",".n.",".m.$.pl.$.inst.","0.99",],
+[,"anta","esu",".n.",".m.$.pl.$.loc.","0.99",],
+[,"ti","ti",".v.",".3p.$.sg.$.pres.","0.99",],
+[,"ti","nti",".v.",".3p.$.pl.$.pres.","0.99",],
+[,"ti","te",".v.",".3p.$.sg.$.pres.","0.99",],
+[,"ti","nte",".v.",".3p.$.pl.$.pres.","0.99",],
+[,"ti","re",".v.",".3p.$.pl.$.pres.","0.99",],
+[,"ti","ssati",".v.",".3p.$.sg.$.fut.","0.99",],
+[,"ti","ssanti",".v.",".3p.$.pl.$.fut.","0.99",],
+[,"ti","ssate",".v.",".3p.$.sg.$.fut.","0.99",],
+[,"ti","ssante",".v.",".3p.$.pl.$.fut.","0.99",],
+[,"ti","ssare",".v.",".3p.$.pl.$.fut.","0.99",],
+[,"ti","tu",".v.",".3p.$.sg.$.imp.","0.99",],
+[,"ti","ntu",".v.",".3p.$.pl.$.imp.","0.99",],
+[,"ti","taṃ",".v.",".3p.$.sg.$.imp.","0.99",],
+[,"ti","ntaṃ",".v.",".3p.$.pl.$.imp.","0.99",],
+[,"ti","sā",".v.",".3p.$.sg.$.cond.","0.99",],
+[,"ti","ssa",".v.",".3p.$.sg.$.cond.","0.99",],
+[,"ti","ssati",".v.",".3p.$.sg.$.cond.","0.99",],
+[,"ti","ssaṃsu",".v.",".3p.$.pl.$.cond.","0.99",],
+[,"ti","ssatha",".v.",".3p.$.sg.$.cond.","0.99",],
+[,"ti","ssiṃsu",".v.",".3p.$.pl.$.cond.","0.99",],
+[,"ti","si",".v.",".3p.$.sg.$.aor.","0.99",],
+[,"ti","sī",".v.",".3p.$.sg.$.aor.","0.99",],
+[,"ti","sā",".v.",".3p.$.sg.$.aor.","0.99",],
+[,"ti","siṃsu",".v.",".3p.$.pl.$.aor.","0.99",],
+[,"ti","sṃ",".v.",".3p.$.pl.$.aor.","0.99",],
+[,"ti","suṃū",".v.",".3p.$.pl.$.aor.","0.99",],
+[,"ti","sā",".v.",".3p.$.sg.$.aor.","0.99",],
+[,"ti","sa",".v.",".3p.$.sg.$.aor.","0.99",],
+[,"ti","stthuṃ",".v.",".3p.$.pl.$.aor.","0.99",],
+[,"ti","satthuṃ",".v.",".3p.$.pl.$.aor.","0.99",],
+[,"ti","mi",".v.",".1p.$.sg.$.pres.","0.99",],
+[,"ti","ma",".v.",".1p.$.pl.$.pres.","0.99",],
+[,"ti","e",".v.",".1p.$.sg.$.pres.","0.99",],
+[,"ti","mhe",".v.",".1p.$.pl.$.pres.","0.99",],
+[,"ti","mahe",".v.",".1p.$.pl.$.pres.","0.99",],
+[,"ti","mha",".v.",".1p.$.pl.$.pres.","0.99",],
+[,"ti","mase",".v.",".1p.$.pl.$.pres.","0.99",],
+[,"ti","mhase",".v.",".1p.$.pl.$.pres.","0.99",],
+[,"ti","ssāmi",".v.",".1p.$.sg.$.fut.","0.99",],
+[,"ti","ssāma",".v.",".1p.$.pl.$.fut.","0.99",],
+[,"ti","ssaṃ",".v.",".1p.$.sg.$.fut.","0.99",],
+[,"ti","ssāmhe",".v.",".1p.$.pl.$.fut.","0.99",],
+[,"ti","ssāmase",".v.",".1p.$.pl.$.fut.","0.99",],
+[,"ti","mi",".v.",".1p.$.sg.$.imp.","0.99",],
+[,"ti","ma",".v.",".1p.$.pl.$.imp.","0.99",],
+[,"ti","ssa",".v.",".1p.$.sg.$.cond.","0.99",],
+[,"ti","ssamhā",".v.",".1p.$.pl.$.cond.","0.99",],
+[,"ti","ssaṃ",".v.",".1p.$.sg.$.cond.","0.99",],
+[,"ti","ssāmhase",".v.",".1p.$.pl.$.cond.","0.99",],
+[,"ti","siṃ",".v.",".1p.$.sg.$.aor.","0.99",],
+[,"ti","saṃ",".v.",".1p.$.sg.$.aor.","0.99",],
+[,"ti","sṃ",".v.",".1p.$.sg.$.aor.","0.99",],
+[,"ti","sa",".v.",".1p.$.sg.$.aor.","0.99",],
+[,"ti","sā",".v.",".1p.$.sg.$.aor.","0.99",],
+[,"ti","simha",".v.",".1p.$.pl.$.aor.","0.99",],
+[,"ti","simhā",".v.",".1p.$.pl.$.aor.","0.99",],
+[,"ti","sa",".v.",".1p.$.sg.$.aor.","0.99",],
+[,"ti","simhe",".v.",".1p.$.pl.$.aor.","0.99",],
+[,"ti","si",".v.",".2p.$.sg.$.pres.","0.99",],
+[,"ti","tha",".v.",".2p.$.pl.$.pres.","0.99",],
+[,"ti","se",".v.",".2p.$.sg.$.pres.","0.99",],
+[,"ti","vhe",".v.",".2p.$.pl.$.pres.","0.99",],
+[,"ti","ssasi",".v.",".2p.$.sg.$.fut.","0.99",],
+[,"ti","ssatha",".v.",".2p.$.pl.$.fut.","0.99",],
+[,"ti","ssase",".v.",".2p.$.sg.$.fut.","0.99",],
+[,"ti","ssavhe",".v.",".2p.$.pl.$.fut.","0.99",],
+[,"ti","hi",".v.",".2p.$.sg.$.imp.","0.99",],
+[,"ti","ta",".v.",".2p.$.pl.$.imp.","0.99",],
+[,"ti","ssu",".v.",".2p.$.sg.$.imp.","0.99",],
+[,"ti","vho",".v.",".2p.$.pl.$.imp.","0.99",],
+[,"ti","se",".v.",".2p.$.sg.$.cond.","0.99",],
+[,"ti","ssa",".v.",".2p.$.sg.$.cond.","0.99",],
+[,"ti","ssasi",".v.",".2p.$.sg.$.cond.","0.99",],
+[,"ti","ssatha",".v.",".2p.$.pl.$.cond.","0.99",],
+[,"ti","ssase",".v.",".2p.$.sg.$.cond.","0.99",],
+[,"ti","ssavhe",".v.",".2p.$.pl.$.cond.","0.99",],
+[,"ti","si",".v.",".2p.$.sg.$.aor.","0.99",],
+[,"ti","so",".v.",".2p.$.sg.$.aor.","0.99",],
+[,"ti","sā",".v.",".2p.$.sg.$.aor.","0.99",],
+[,"ti","sttha",".v.",".2p.$.pl.$.aor.","0.99",],
+[,"ti","sse",".v.",".2p.$.sg.$.aor.","0.99",],
+[,"ti","svhaṃ",".v.",".2p.$.pl.$.aor.","0.99",],
+[,"ti","eyya",".v.",".3p.$.sg.$.opt.","0.99",],
+[,"ati","eyyuṃ",".v.",".3p.$.pl.$.opt.","0.99",],
+[,"ati","etha",".v.",".3p.$.sg.$.opt.","0.99",],
+[,"ati","eraṃ",".v.",".3p.$.pl.$.opt.","0.99",],
+[,"ati","issati",".v.",".3p.$.sg.$.fut.","0.99",],
+[,"ati","issanti",".v.",".3p.$.pl.$.fut.","0.99",],
+[,"ati","issate",".v.",".3p.$.sg.$.fut.","0.99",],
+[,"ati","issante",".v.",".3p.$.pl.$.fut.","0.99",],
+[,"ati","issare",".v.",".3p.$.pl.$.fut.","0.99",],
+[,"ati","i",".v.",".3p.$.sg.$.aor.","0.99",],
+[,"ati","ī",".v.",".3p.$.sg.$.aor.","0.99",],
+[,"ati","ā",".v.",".3p.$.sg.$.aor.","0.99",],
+[,"ati","iṃsu",".v.",".3p.$.pl.$.aor.","0.99",],
+[,"ati","ṃ",".v.",".3p.$.pl.$.aor.","0.99",],
+[,"ati","uṃū",".v.",".3p.$.pl.$.aor.","0.99",],
+[,"ati","ā",".v.",".3p.$.sg.$.aor.","0.99",],
+[,"ati","a",".v.",".3p.$.sg.$.aor.","0.99",],
+[,"ati","tthuṃ",".v.",".3p.$.pl.$.aor.","0.99",],
+[,"ati","atthuṃ",".v.",".3p.$.pl.$.aor.","0.99",],
+[,"ati","āmi",".v.",".1p.$.sg.$.pres.","0.99",],
+[,"ati","āma",".v.",".1p.$.pl.$.pres.","0.99",],
+[,"ati","e",".v.",".1p.$.sg.$.imp.","0.99",],
+[,"ati","āmase",".v.",".1p.$.pl.$.imp.","0.99",],
+[,"ati","eyyāmi",".v.",".1p.$.sg.$.opt.","0.99",],
+[,"ati","eyyāma",".v.",".1p.$.pl.$.opt.","0.99",],
+[,"ati","eyyaṃ",".v.",".1p.$.sg.$.opt.","0.99",],
+[,"ati","eyyāmhe",".v.",".1p.$.pl.$.opt.","0.99",],
+[,"ati","issāmi",".v.",".1p.$.sg.$.fut.","0.99",],
+[,"ati","issāma",".v.",".1p.$.pl.$.fut.","0.99",],
+[,"ati","issaṃ",".v.",".1p.$.sg.$.fut.","0.99",],
+[,"ati","issāmhe",".v.",".1p.$.pl.$.fut.","0.99",],
+[,"ati","issāmase",".v.",".1p.$.pl.$.fut.","0.99",],
+[,"ati","iṃ",".v.",".1p.$.sg.$.aor.","0.99",],
+[,"ati","aṃ",".v.",".1p.$.sg.$.aor.","0.99",],
+[,"ati","ṃ",".v.",".1p.$.sg.$.aor.","0.99",],
+[,"ati","a",".v.",".1p.$.sg.$.aor.","0.99",],
+[,"ati","ā",".v.",".1p.$.sg.$.aor.","0.99",],
+[,"ati","imha",".v.",".1p.$.pl.$.aor.","0.99",],
+[,"ati","imhā",".v.",".1p.$.pl.$.aor.","0.99",],
+[,"ati","a",".v.",".1p.$.sg.$.aor.","0.99",],
+[,"ati","imhe",".v.",".1p.$.pl.$.aor.","0.99",],
+[,"ati","eyyāsi",".v.",".2p.$.sg.$.opt.","0.99",],
+[,"ati","eyyātha",".v.",".2p.$.pl.$.opt.","0.99",],
+[,"ati","etho",".v.",".2p.$.sg.$.opt.","0.99",],
+[,"ati","eyyavho",".v.",".2p.$.pl.$.opt.","0.99",],
+[,"ati","issasi",".v.",".2p.$.sg.$.fut.","0.99",],
+[,"ati","issatha",".v.",".2p.$.pl.$.fut.","0.99",],
+[,"ati","issase",".v.",".2p.$.sg.$.fut.","0.99",],
+[,"ati","issavhe",".v.",".2p.$.pl.$.fut.","0.99",],
+[,"ati","i",".v.",".2p.$.sg.$.aor.","0.99",],
+[,"ati","o",".v.",".2p.$.sg.$.aor.","0.99",],
+[,"ati","ā",".v.",".2p.$.sg.$.aor.","0.99",],
+[,"ati","ttha",".v.",".2p.$.pl.$.aor.","0.99",],
+[,"ati","se",".v.",".2p.$.sg.$.aor.","0.99",],
+[,"ati","vhaṃ",".v.",".2p.$.pl.$.aor.","0.99",],
+[,"āti","etha",".v.",".3p.$.sg.$.opt.","0.99",],
+[,"āti","eraṃ",".v.",".3p.$.pl.$.opt.","0.99",],
+[,"āti","issati",".v.",".3p.$.sg.$.fut.","0.99",],
+[,"āti","issanti",".v.",".3p.$.pl.$.fut.","0.99",],
+[,"āti","issate",".v.",".3p.$.sg.$.fut.","0.99",],
+[,"āti","issante",".v.",".3p.$.pl.$.fut.","0.99",],
+[,"āti","issare",".v.",".3p.$.pl.$.fut.","0.99",],
+[,"āti","i",".v.",".3p.$.sg.$.aor.","0.99",],
+[,"āti","ī",".v.",".3p.$.sg.$.aor.","0.99",],
+[,"āti","ā",".v.",".3p.$.sg.$.aor.","0.99",],
+[,"āti","iṃsu",".v.",".3p.$.pl.$.aor.","0.99",],
+[,"āti","ṃ",".v.",".3p.$.pl.$.aor.","0.99",],
+[,"āti","uṃū",".v.",".3p.$.pl.$.aor.","0.99",],
+[,"āti","ā",".v.",".3p.$.sg.$.aor.","0.99",],
+[,"āti","a",".v.",".3p.$.sg.$.aor.","0.99",],
+[,"āti","tthuṃ",".v.",".3p.$.pl.$.aor.","0.99",],
+[,"āti","atthuṃ",".v.",".3p.$.pl.$.aor.","0.99",],
+[,"āti","e",".v.",".1p.$.sg.$.imp.","0.99",],
+[,"āti","āmase",".v.",".1p.$.pl.$.imp.","0.99",],
+[,"āti","eyyuṃ",".v.",".3p.$.pl.$.opt.","0.99",],
+[,"āti","eyyāmi",".v.",".1p.$.sg.$.opt.","0.99",],
+[,"āti","eyyāma",".v.",".1p.$.pl.$.opt.","0.99",],
+[,"āti","eyyaṃ",".v.",".1p.$.sg.$.opt.","0.99",],
+[,"āti","eyyāmhe",".v.",".1p.$.pl.$.opt.","0.99",],
+[,"āti","issāmi",".v.",".1p.$.sg.$.fut.","0.99",],
+[,"āti","issāma",".v.",".1p.$.pl.$.fut.","0.99",],
+[,"āti","issaṃ",".v.",".1p.$.sg.$.fut.","0.99",],
+[,"āti","issāmhe",".v.",".1p.$.pl.$.fut.","0.99",],
+[,"āti","issāmase",".v.",".1p.$.pl.$.fut.","0.99",],
+[,"āti","iṃ",".v.",".1p.$.sg.$.aor.","0.99",],
+[,"āti","aṃ",".v.",".1p.$.sg.$.aor.","0.99",],
+[,"āti","ṃ",".v.",".1p.$.sg.$.aor.","0.99",],
+[,"āti","a",".v.",".1p.$.sg.$.aor.","0.99",],
+[,"āti","ā",".v.",".1p.$.sg.$.aor.","0.99",],
+[,"āti","imha",".v.",".1p.$.pl.$.aor.","0.99",],
+[,"āti","imhā",".v.",".1p.$.pl.$.aor.","0.99",],
+[,"āti","a",".v.",".1p.$.sg.$.aor.","0.99",],
+[,"āti","imhe",".v.",".1p.$.pl.$.aor.","0.99",],
+[,"āti","eyyāsi",".v.",".2p.$.sg.$.opt.","0.99",],
+[,"āti","eyyātha",".v.",".2p.$.pl.$.opt.","0.99",],
+[,"āti","etho",".v.",".2p.$.sg.$.opt.","0.99",],
+[,"āti","eyyavho",".v.",".2p.$.pl.$.opt.","0.99",],
+[,"āti","issasi",".v.",".2p.$.sg.$.fut.","0.99",],
+[,"āti","issatha",".v.",".2p.$.pl.$.fut.","0.99",],
+[,"āti","issase",".v.",".2p.$.sg.$.fut.","0.99",],
+[,"āti","issavhe",".v.",".2p.$.pl.$.fut.","0.99",],
+[,"āti","i",".v.",".2p.$.sg.$.aor.","0.99",],
+[,"āti","o",".v.",".2p.$.sg.$.aor.","0.99",],
+[,"āti","ā",".v.",".2p.$.sg.$.aor.","0.99",],
+[,"āti","ttha",".v.",".2p.$.pl.$.aor.","0.99",],
+[,"āti","se",".v.",".2p.$.sg.$.aor.","0.99",],
+[,"āti","vhaṃ",".v.",".2p.$.pl.$.aor.","0.99",],
+[,"eti","etha",".v.",".3p.$.sg.$.opt.","0.99",],
+[,"eti","eraṃ",".v.",".3p.$.pl.$.opt.","0.99",],
+[,"eti","issati",".v.",".3p.$.sg.$.fut.","0.99",],
+[,"eti","issanti",".v.",".3p.$.pl.$.fut.","0.99",],
+[,"eti","issate",".v.",".3p.$.sg.$.fut.","0.99",],
+[,"eti","issante",".v.",".3p.$.pl.$.fut.","0.99",],
+[,"eti","issare",".v.",".3p.$.pl.$.fut.","0.99",],
+[,"eti","i",".v.",".3p.$.sg.$.aor.","0.99",],
+[,"eti","ī",".v.",".3p.$.sg.$.aor.","0.99",],
+[,"eti","ā",".v.",".3p.$.sg.$.aor.","0.99",],
+[,"eti","iṃsu",".v.",".3p.$.pl.$.aor.","0.99",],
+[,"eti","ṃ",".v.",".3p.$.pl.$.aor.","0.99",],
+[,"eti","uṃū",".v.",".3p.$.pl.$.aor.","0.99",],
+[,"eti","ā",".v.",".3p.$.sg.$.aor.","0.99",],
+[,"eti","a",".v.",".3p.$.sg.$.aor.","0.99",],
+[,"eti","tthuṃ",".v.",".3p.$.pl.$.aor.","0.99",],
+[,"eti","atthuṃ",".v.",".3p.$.pl.$.aor.","0.99",],
+[,"eti","e",".v.",".1p.$.sg.$.imp.","0.99",],
+[,"eti","āmase",".v.",".1p.$.pl.$.imp.","0.99",],
+[,"eti","eyyāmi",".v.",".1p.$.sg.$.opt.","0.99",],
+[,"eti","eyyuṃ",".v.",".3p.$.pl.$.opt.","0.99",],
+[,"eti","eyyāma",".v.",".1p.$.pl.$.opt.","0.99",],
+[,"eti","eyyaṃ",".v.",".1p.$.sg.$.opt.","0.99",],
+[,"eti","eyyāmhe",".v.",".1p.$.pl.$.opt.","0.99",],
+[,"eti","issāmi",".v.",".1p.$.sg.$.fut.","0.99",],
+[,"eti","issāma",".v.",".1p.$.pl.$.fut.","0.99",],
+[,"eti","issaṃ",".v.",".1p.$.sg.$.fut.","0.99",],
+[,"eti","issāmhe",".v.",".1p.$.pl.$.fut.","0.99",],
+[,"eti","issāmase",".v.",".1p.$.pl.$.fut.","0.99",],
+[,"eti","iṃ",".v.",".1p.$.sg.$.aor.","0.99",],
+[,"eti","aṃ",".v.",".1p.$.sg.$.aor.","0.99",],
+[,"eti","ṃ",".v.",".1p.$.sg.$.aor.","0.99",],
+[,"eti","a",".v.",".1p.$.sg.$.aor.","0.99",],
+[,"eti","ā",".v.",".1p.$.sg.$.aor.","0.99",],
+[,"eti","imha",".v.",".1p.$.pl.$.aor.","0.99",],
+[,"eti","imhā",".v.",".1p.$.pl.$.aor.","0.99",],
+[,"eti","a",".v.",".1p.$.sg.$.aor.","0.99",],
+[,"eti","imhe",".v.",".1p.$.pl.$.aor.","0.99",],
+[,"eti","eyyāsi",".v.",".2p.$.sg.$.opt.","0.99",],
+[,"eti","eyyātha",".v.",".2p.$.pl.$.opt.","0.99",],
+[,"eti","etho",".v.",".2p.$.sg.$.opt.","0.99",],
+[,"eti","eyyavho",".v.",".2p.$.pl.$.opt.","0.99",],
+[,"eti","issasi",".v.",".2p.$.sg.$.fut.","0.99",],
+[,"eti","issatha",".v.",".2p.$.pl.$.fut.","0.99",],
+[,"eti","issase",".v.",".2p.$.sg.$.fut.","0.99",],
+[,"eti","issavhe",".v.",".2p.$.pl.$.fut.","0.99",],
+[,"eti","i",".v.",".2p.$.sg.$.aor.","0.99",],
+[,"eti","o",".v.",".2p.$.sg.$.aor.","0.99",],
+[,"eti","ā",".v.",".2p.$.sg.$.aor.","0.99",],
+[,"eti","ttha",".v.",".2p.$.pl.$.aor.","0.99",],
+[,"eti","se",".v.",".2p.$.sg.$.aor.","0.99",],
+[,"eti","vhaṃ",".v.",".2p.$.pl.$.aor.","0.99",],
+[,"oti","etha",".v.",".3p.$.sg.$.opt.","0.99",],
+[,"oti","eraṃ",".v.",".3p.$.pl.$.opt.","0.99",],
+[,"oti","issati",".v.",".3p.$.sg.$.fut.","0.99",],
+[,"oti","issanti",".v.",".3p.$.pl.$.fut.","0.99",],
+[,"oti","issate",".v.",".3p.$.sg.$.fut.","0.99",],
+[,"oti","issante",".v.",".3p.$.pl.$.fut.","0.99",],
+[,"oti","issare",".v.",".3p.$.pl.$.fut.","0.99",],
+[,"oti","i",".v.",".3p.$.sg.$.aor.","0.99",],
+[,"oti","ī",".v.",".3p.$.sg.$.aor.","0.99",],
+[,"oti","ā",".v.",".3p.$.sg.$.aor.","0.99",],
+[,"oti","iṃsu",".v.",".3p.$.pl.$.aor.","0.99",],
+[,"oti","ṃ",".v.",".3p.$.pl.$.aor.","0.99",],
+[,"oti","uṃū",".v.",".3p.$.pl.$.aor.","0.99",],
+[,"oti","ā",".v.",".3p.$.sg.$.aor.","0.99",],
+[,"oti","a",".v.",".3p.$.sg.$.aor.","0.99",],
+[,"oti","tthuṃ",".v.",".3p.$.pl.$.aor.","0.99",],
+[,"oti","atthuṃ",".v.",".3p.$.pl.$.aor.","0.99",],
+[,"oti","e",".v.",".1p.$.sg.$.imp.","0.99",],
+[,"oti","āmase",".v.",".1p.$.pl.$.imp.","0.99",],
+[,"oti","eyyuṃ",".v.",".3p.$.pl.$.opt.","0.99",],
+[,"oti","eyyāmi",".v.",".1p.$.sg.$.opt.","0.99",],
+[,"oti","eyyāma",".v.",".1p.$.pl.$.opt.","0.99",],
+[,"oti","eyyaṃ",".v.",".1p.$.sg.$.opt.","0.99",],
+[,"oti","eyyāmhe",".v.",".1p.$.pl.$.opt.","0.99",],
+[,"oti","issāmi",".v.",".1p.$.sg.$.fut.","0.99",],
+[,"oti","issāma",".v.",".1p.$.pl.$.fut.","0.99",],
+[,"oti","issaṃ",".v.",".1p.$.sg.$.fut.","0.99",],
+[,"oti","issāmhe",".v.",".1p.$.pl.$.fut.","0.99",],
+[,"oti","issāmase",".v.",".1p.$.pl.$.fut.","0.99",],
+[,"oti","iṃ",".v.",".1p.$.sg.$.aor.","0.99",],
+[,"oti","aṃ",".v.",".1p.$.sg.$.aor.","0.99",],
+[,"oti","ṃ",".v.",".1p.$.sg.$.aor.","0.99",],
+[,"oti","a",".v.",".1p.$.sg.$.aor.","0.99",],
+[,"oti","ā",".v.",".1p.$.sg.$.aor.","0.99",],
+[,"oti","imha",".v.",".1p.$.pl.$.aor.","0.99",],
+[,"oti","imhā",".v.",".1p.$.pl.$.aor.","0.99",],
+[,"oti","a",".v.",".1p.$.sg.$.aor.","0.99",],
+[,"oti","imhe",".v.",".1p.$.pl.$.aor.","0.99",],
+[,"oti","eyyāsi",".v.",".2p.$.sg.$.opt.","0.99",],
+[,"oti","eyyātha",".v.",".2p.$.pl.$.opt.","0.99",],
+[,"oti","etho",".v.",".2p.$.sg.$.opt.","0.99",],
+[,"oti","eyyavho",".v.",".2p.$.pl.$.opt.","0.99",],
+[,"oti","issasi",".v.",".2p.$.sg.$.fut.","0.99",],
+[,"oti","issatha",".v.",".2p.$.pl.$.fut.","0.99",],
+[,"oti","issase",".v.",".2p.$.sg.$.fut.","0.99",],
+[,"oti","issavhe",".v.",".2p.$.pl.$.fut.","0.99",],
+[,"oti","i",".v.",".2p.$.sg.$.aor.","0.99",],
+[,"oti","o",".v.",".2p.$.sg.$.aor.","0.99",],
+[,"oti","ā",".v.",".2p.$.sg.$.aor.","0.99",],
+[,"oti","ttha",".v.",".2p.$.pl.$.aor.","0.99",],
+[,"oti","se",".v.",".2p.$.sg.$.aor.","0.99",],
+[,"oti","vhaṃ",".v.",".2p.$.pl.$.aor.","0.99",],
+[,"ati","ittha",".v.",".2p.$.pl.$.aor.","0.99",],

+ 6 - 1
change-logs.md

@@ -4,9 +4,14 @@ All notable changes to this project will be documented in this file.
 The format is based on [Keep a Changelog](https://keepachangelog.com/en/1.0.0/),
 and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0.html).
 
+
+## [1.0.12] - 2022-12-16
+
+- add ALLOWED_ORIGINS to .env
+
 ## [1.0.11] - 2022-09-6
 
-add doctrine/dbal
+- add doctrine/dbal
 
 ## [1.0.10] - 2022-07-31
 

+ 8 - 2
composer.json

@@ -7,13 +7,16 @@
     "require": {
         "php": "^7.3|^8.0",
         "doctrine/dbal": "^3.4",
-        "fruitcake/laravel-cors": "^2.0",
+        "firebase/php-jwt": "^6.2",
+        "fruitcake/laravel-cors": "^3.0",
         "godruoyi/php-snowflake": "^2.0",
         "guzzlehttp/guzzle": "^7.0.1",
         "laravel/framework": "^8.75",
         "laravel/sanctum": "^2.11",
         "laravel/tinker": "^2.5",
-		"php-amqplib/php-amqplib": ">=3.0"
+        "mustache/mustache": "^2.14",
+        "php-amqplib/php-amqplib": ">=3.0",
+        "php-ffmpeg/php-ffmpeg": "^1.1"
     },
     "require-dev": {
         "facade/ignition": "^2.5",
@@ -24,6 +27,9 @@
         "phpunit/phpunit": "^9.5.10"
     },
     "autoload": {
+		"classmap":[
+			"app/Tools/TurboSplit.php"
+		],
         "psr-4": {
             "App\\": "app/",
             "Database\\Factories\\": "database/factories/",

+ 1 - 1
config/app.php

@@ -255,7 +255,7 @@ return [
 	'admin' => [
 		'root_uuid' => '6e12f8ea-ee4d-4e0f-a6b0-472f2d99a814',
 		'robot_uuid' => '6e12f8ea-ee4d-4e0f-a6b0-472f2d99a814',
-		'cs6_channel' => '1e4b926d-54d7-4932-b8a6-7cdc65abd992',
+		'cs_channel' => '1e4b926d-54d7-4932-b8a6-7cdc65abd992',
 	],
 
 	'dependence' => [

+ 4 - 4
config/cors.php

@@ -15,15 +15,15 @@ return [
     |
     */
 
-    'paths' => ['api/*', 'sanctum/csrf-cookie'],
+    'paths' => ['api/*'],
 
-    'allowed_methods' => ['*'],
+    'allowed_methods' => ['GET','POST','PUT','DELETE','PATCH','OPTIONS'],
 
-    'allowed_origins' => ['*'],
+    'allowed_origins' => [env('ALLOWED_ORIGINS', 'http://127.0.0.1:3000')],
 
     'allowed_origins_patterns' => [],
 
-    'allowed_headers' => ['*'],
+    'allowed_headers' => ['content-type','cookie','authorization','x-requested-with'],
 
     'exposed_headers' => [],
 

+ 39 - 0
database/migrations/2022_08_11_064121_create_dict_infos_table.php

@@ -0,0 +1,39 @@
+<?php
+
+use Illuminate\Database\Migrations\Migration;
+use Illuminate\Database\Schema\Blueprint;
+use Illuminate\Support\Facades\Schema;
+
+class CreateDictInfosTable extends Migration
+{
+    /**
+     * Run the migrations.
+     *
+     * @return void
+     */
+    public function up()
+    {
+        Schema::create('dict_infos', function (Blueprint $table) {
+			$table->uuid('id')->primary()->default(DB::raw('uuid_generate_v1mc()'));
+			$table->string('name',256)->index();
+			$table->string('shortname',16)->index();
+			$table->string('description',1024)->nullable();
+			$table->string('src_lang',16)->index()->default('pa');
+			$table->string('dest_lang',16)->index()->default('en');
+			$table->integer('rows')->default(0);
+			$table->uuid('owner_id');
+			$table->json('meta');
+            $table->timestamps();
+        });
+    }
+
+    /**
+     * Reverse the migrations.
+     *
+     * @return void
+     */
+    public function down()
+    {
+        Schema::dropIfExists('dict_infos');
+    }
+}

+ 34 - 0
database/migrations/2022_08_11_095714_add_dictid_in_user_dicts.php

@@ -0,0 +1,34 @@
+<?php
+
+use Illuminate\Database\Migrations\Migration;
+use Illuminate\Database\Schema\Blueprint;
+use Illuminate\Support\Facades\Schema;
+
+class AddDictidInUserDicts extends Migration
+{
+    /**
+     * Run the migrations.
+     *
+     * @return void
+     */
+    public function up()
+    {
+        Schema::table('user_dicts', function (Blueprint $table) {
+            //
+			$table->uuid('dict_id')->nullable()->index();
+        });
+    }
+
+    /**
+     * Reverse the migrations.
+     *
+     * @return void
+     */
+    public function down()
+    {
+        Schema::table('user_dicts', function (Blueprint $table) {
+            //
+            $table->dropColumn('dict_id');
+        });
+    }
+}

+ 33 - 0
database/migrations/2022_08_12_134209_create_word_parts_table.php

@@ -0,0 +1,33 @@
+<?php
+
+use Illuminate\Database\Migrations\Migration;
+use Illuminate\Database\Schema\Blueprint;
+use Illuminate\Support\Facades\Schema;
+
+class CreateWordPartsTable extends Migration
+{
+    /**
+     * Run the migrations.
+     *
+     * @return void
+     */
+    public function up()
+    {
+        Schema::create('word_parts', function (Blueprint $table) {
+            $table->id();
+			$table->string('word',1024)->unique();
+			$table->bigInteger('weight');
+            $table->timestamps();
+        });
+    }
+
+    /**
+     * Reverse the migrations.
+     *
+     * @return void
+     */
+    public function down()
+    {
+        Schema::dropIfExists('word_parts');
+    }
+}

+ 35 - 0
database/migrations/2022_08_14_131951_add_realindex_in_wbw_templates.php

@@ -0,0 +1,35 @@
+<?php
+
+use Illuminate\Database\Migrations\Migration;
+use Illuminate\Database\Schema\Blueprint;
+use Illuminate\Support\Facades\Schema;
+
+class AddRealindexInWbwTemplates extends Migration
+{
+    /**
+     * Run the migrations.
+     *
+     * @return void
+     */
+    public function up()
+    {
+        Schema::table('wbw_templates', function (Blueprint $table) {
+            //
+			$table->index(['real']);
+        });
+    }
+
+    /**
+     * Reverse the migrations.
+     *
+     * @return void
+     */
+    public function down()
+    {
+        Schema::table('wbw_templates', function (Blueprint $table) {
+            //
+            $table->dropIndex('wbw_templates_real_index');
+
+        });
+    }
+}

+ 34 - 0
database/migrations/2022_08_14_133812_add_sourceindex_in_user_dicts.php

@@ -0,0 +1,34 @@
+<?php
+
+use Illuminate\Database\Migrations\Migration;
+use Illuminate\Database\Schema\Blueprint;
+use Illuminate\Support\Facades\Schema;
+
+class AddSourceindexInUserDicts extends Migration
+{
+    /**
+     * Run the migrations.
+     *
+     * @return void
+     */
+    public function up()
+    {
+        Schema::table('user_dicts', function (Blueprint $table) {
+            //
+			$table->index(['source']);
+        });
+    }
+
+    /**
+     * Reverse the migrations.
+     *
+     * @return void
+     */
+    public function down()
+    {
+        Schema::table('user_dicts', function (Blueprint $table) {
+            //
+            $table->dropIndex('user_dicts_source_index');
+        });
+    }
+}

+ 36 - 0
database/migrations/2022_08_14_140946_add_flag_in_user_dicts.php

@@ -0,0 +1,36 @@
+<?php
+
+use Illuminate\Database\Migrations\Migration;
+use Illuminate\Database\Schema\Blueprint;
+use Illuminate\Support\Facades\Schema;
+
+class AddFlagInUserDicts extends Migration
+{
+    /**
+     * Run the migrations.
+     *
+     * @return void
+     */
+    public function up()
+    {
+        Schema::table('user_dicts', function (Blueprint $table) {
+            //
+			$table->integer('flag')->default(0)->index();
+
+        });
+    }
+
+    /**
+     * Reverse the migrations.
+     *
+     * @return void
+     */
+    public function down()
+    {
+        Schema::table('user_dicts', function (Blueprint $table) {
+            //
+            $table->dropColumn('flag');
+
+        });
+    }
+}

+ 39 - 0
database/migrations/2022_12_19_125601_create_discussions_table.php

@@ -0,0 +1,39 @@
+<?php
+
+use Illuminate\Database\Migrations\Migration;
+use Illuminate\Database\Schema\Blueprint;
+use Illuminate\Support\Facades\Schema;
+
+class CreateDiscussionsTable extends Migration
+{
+    /**
+     * Run the migrations.
+     *
+     * @return void
+     */
+    public function up()
+    {
+        Schema::create('discussions', function (Blueprint $table) {
+            $table->uuid('id')->primary()->default(DB::raw('uuid_generate_v1mc()'));
+			$table->uuid('res_id')->index();
+			$table->string('res_type',32)->index();
+			$table->uuid('parent')->index()->nullable();
+			$table->string('title',256)->nullable();
+			$table->text('content')->nullable();
+            $table->integer('children_count')->default(0);
+			$table->uuid('editor_uid')->index();
+			$table->string('publicity',32)->default('public');
+            $table->timestamps();
+        });
+    }
+
+    /**
+     * Reverse the migrations.
+     *
+     * @return void
+     */
+    public function down()
+    {
+        Schema::dropIfExists('discussions');
+    }
+}

+ 40 - 0
database/migrations/2022_12_29_125609_create_courses_table.php

@@ -0,0 +1,40 @@
+<?php
+
+use Illuminate\Database\Migrations\Migration;
+use Illuminate\Database\Schema\Blueprint;
+use Illuminate\Support\Facades\Schema;
+
+class CreateCoursesTable extends Migration
+{
+    /**
+     * Run the migrations.
+     *
+     * @return void
+     */
+    public function up()
+    {
+        Schema::create('courses', function (Blueprint $table) {
+            $table->uuid('id')->primary()->default(DB::raw('uuid_generate_v1mc()'));
+            $table->string('title',256)->index();
+            $table->string('subtitle',256)->nullable();
+            $table->string('cover',256)->nullable();
+            $table->text('content')->nullable();
+            $table->enum('content_type',['markdown','text','html'])->default('markdown');
+            $table->uuid('teacher')->nullable()->index();
+            $table->timestamp('start_at')->nullable()->index();
+            $table->timestamp('end_at')->nullable()->index();
+            $table->uuid('studio_id')->index();
+            $table->timestamps();
+        });
+    }
+
+    /**
+     * Reverse the migrations.
+     *
+     * @return void
+     */
+    public function down()
+    {
+        Schema::dropIfExists('courses');
+    }
+}

+ 36 - 0
database/migrations/2022_12_29_125646_create_course_members_table.php

@@ -0,0 +1,36 @@
+<?php
+
+use Illuminate\Database\Migrations\Migration;
+use Illuminate\Database\Schema\Blueprint;
+use Illuminate\Support\Facades\Schema;
+
+class CreateCourseMembersTable extends Migration
+{
+    /**
+     * Run the migrations.
+     *
+     * @return void
+     */
+    public function up()
+    {
+        Schema::create('course_members', function (Blueprint $table) {
+            $table->uuid('id')->primary()->default(DB::raw('uuid_generate_v1mc()'));
+            $table->uuid('user_id')->index();
+            $table->string('role',32)->index();
+            $table->uuid('course_id')->index();
+            $table->uuid('channel_id')->nullable()->index();
+            $table->string('status',32)->default('normal')->index();
+            $table->timestamps();
+        });
+    }
+
+    /**
+     * Reverse the migrations.
+     *
+     * @return void
+     */
+    public function down()
+    {
+        Schema::dropIfExists('course_members');
+    }
+}

+ 58 - 0
documents/laravel_quick_start.md

@@ -0,0 +1,58 @@
+1. 建立表
+php artisan make:model Lesson -m
+
+2. 修改迁移文件,添加列
+
+
+3. 升级数据库
+php artisan migrate
+
+4. 降级
+
+php artisan migrate:rollback --step=1
+
+
+5. 升级数据库
+php artisan migrate
+
+6. 建立控制器
+
+php artisan make:controller --api --model=Lesson  LessonController
+
+7. 数据库查询
+
+        $table = new Tag();
+        $table = $table->where('name','aaa');
+        $count = $table->count();
+        // select count(*) where name = 'aaa';
+
+        $data = $table->select(['name','id'])->get();
+        // select name,id where name = 'aaa';
+        return $this->ok($data);
+
+        /*
+        ['rows'=>$data,'count'=>$count]
+        {
+            rows: data,
+            count: count,
+        }
+        */
+
+		/**
+ * GET tag/ -> index()
+ * GET tag/:id -> show()
+ * POST tag  -> store()
+ * PUT tag/:id -> update()
+ * DELETE tag/:id -> destroy()
+ */
+
+前端 api 配置
+
+.env
+
+ REACT_APP_API_HOST=http://127.0.0.1:8000/api/v2
+
+前端调用
+
+ApiFetch(`/progress?view=chapter-tag`)
+

+ 7 - 7
documents/proto/course.proto

@@ -4,7 +4,7 @@ import "public.proto";
 package pcds.course.v1;
 
 /*
- * 课程服务 
+ * 课程服务
  */
 service Course{
 	rpc GetCourseListForStudio (CourseListRequest) returns (CourseListReply){}
@@ -37,9 +37,9 @@ message CourseRequest{
 	string Id        = 1;
 	string Title     = 2;
 	string Subtitle  = 3;
-	string Summary   = 4;	
-	string Cover     = 5;	
-	string Content   = 6;	
+	string Summary   = 4;
+	string Cover     = 5;
+	string Content   = 6;
 	EnumContentType ContentType = 7;
 	string Html = 8;
 	string StartAt     = 9;
@@ -50,14 +50,14 @@ message CourseRequest{
 	string EditorId = 52;
 	EnumPublicity Publicity = 53;
 
-	string CreatedAt = 101; 
-	string UpdatedAt = 102; 
+	string CreatedAt = 101;
+	string UpdatedAt = 102;
 }
 message CourseList{
 	string Id = 1;
 	string Title = 2;
 	string Subtitle = 3;
-	string Summary = 4;						
+	string Summary = 4;
 	string   Start = 5;
 	string   End   = 6;
 	string Cover = 7;

+ 9 - 5
public/app/api/user.php

@@ -21,11 +21,11 @@ switch ($_REQUEST["_method"]) {
 	case 'show':
 		# get
 		$model->show();
-		break;	
+		break;
 	case 'update':
 		# post
 		$model->update();
-		break;	
+		break;
 	case 'delete':
 		# get
 		$model->delete();
@@ -33,15 +33,19 @@ switch ($_REQUEST["_method"]) {
 	case 'reset_email':
 		# get
 		$model->reset_password_send_email();
-		break;	
+		break;
 	case 'reset_pwd':
 		# get
 		$model->reset_password();
-		break;	
+		break;
+    case 'signin':
+        # get
+        $model->signin();
+        break;
 	default:
 		# code...
 		break;
 }
 
 
-?>
+?>

+ 67 - 23
public/app/db/user.php

@@ -6,6 +6,9 @@ require_once "../public/function.php";
 // Require Composer's autoloader.
 require_once '../../vendor/autoload.php';
 
+use Firebase\JWT\JWT;
+use Firebase\JWT\Key;
+
 // Using Medoo namespace.
 use Medoo\Medoo;
 
@@ -36,7 +39,7 @@ class User extends Table
 		$where["resource_id"] = explode($_GET["id"],",");
 		echo json_encode($this->_index(["resource_id","user_id"],$where), JSON_UNESCAPED_UNICODE);
 	}
-	
+
 	public function  list(){
 		if(!isset($_COOKIE["userid"])){
 			$userId = $_COOKIE["userid"];
@@ -81,23 +84,23 @@ class User extends Table
 			if ($this->redis == false) {
 				$this->result["ok"]=false;
 				$this->result["message"]="no_redis_connect";
-				echo json_encode($this->result, JSON_UNESCAPED_UNICODE);	
-				return;	
+				echo json_encode($this->result, JSON_UNESCAPED_UNICODE);
+				return;
 			}
 			$redisKey = "invitecode://".$data["invite"];
 			$code = $this->redis->exists($redisKey);
 			if(!$code){
 				$this->result["ok"]=false;
 				$this->result["message"]="invite_code_invalid";
-				echo json_encode($this->result, JSON_UNESCAPED_UNICODE);	
-				return;	
+				echo json_encode($this->result, JSON_UNESCAPED_UNICODE);
+				return;
 			}
-			$data["email"] = $this->redis->get($redisKey);				
+			$data["email"] = $this->redis->get($redisKey);
 		}else{
 			$this->result["ok"]=false;
 			$this->result["message"]="no_invite_code";
-			echo json_encode($this->result, JSON_UNESCAPED_UNICODE);	
-			return;	
+			echo json_encode($this->result, JSON_UNESCAPED_UNICODE);
+			return;
 		}
 		//验证用户名有效性
 		if(!$this->isValidUsername($data["username"])){
@@ -158,11 +161,11 @@ class User extends Table
 				}else{
 					echo json_encode($result, JSON_UNESCAPED_UNICODE);
 				}
-				
+
 			}else{
 				$this->result["ok"]=false;
 				$this->result["message"]="email_is_exist";
-				echo json_encode($this->result, JSON_UNESCAPED_UNICODE);				
+				echo json_encode($this->result, JSON_UNESCAPED_UNICODE);
 			}
 		}
 		else{
@@ -171,7 +174,7 @@ class User extends Table
 			echo json_encode($this->result, JSON_UNESCAPED_UNICODE);
 		}
 	}
-	
+
 
 
 	#发送密码重置邮件
@@ -189,7 +192,7 @@ class User extends Table
 				#send email
 				$resetLink="https://".$_SERVER['SERVER_NAME']."/app/ucenter/reset.php?token=".$resetToken;
 				$resetString="https://".$_SERVER['SERVER_NAME']."/app/ucenter/reset.php";
-		
+
 				// 打开文件并读取数据
 				$irow=0;
 				$strSubject = "";
@@ -198,9 +201,9 @@ class User extends Table
 					while(($data=fgets($fp))!==FALSE){
 						$irow++;
 						if($irow==1){
-							$strSubject = $data; 
+							$strSubject = $data;
 						}else{
-							$strBody .= $data; 
+							$strBody .= $data;
 						}
 					}
 					fclose($fp);
@@ -211,15 +214,15 @@ class User extends Table
 					echo json_encode($this->result, JSON_UNESCAPED_UNICODE);
 					return;
 				}
-		
+
 				$strBody = str_replace("%ResetLink%",$resetLink,$strBody);
 				$strBody = str_replace("%ResetString%",$resetString,$strBody);
-		
+
 				//TODO sendmail
-		
+
 				//Create an instance; passing `true` enables exceptions
 				$mail = new PHPMailer(true);
-		
+
 				try {
 					//Server settings
 					$mail->SMTPDebug = SMTP::DEBUG_OFF;                      //Enable verbose debug output
@@ -235,13 +238,13 @@ class User extends Table
 					//Recipients
 					$mail->setFrom(Email["From"], Email["Sender"]);
 					$mail->addAddress($email);     //Add a recipient Name is optional
-		
+
 					//Content
 					$mail->isHTML(true);                                  //Set email format to HTML
 					$mail->Subject = $strSubject;
 					$mail->Body    = $strBody;
 					$mail->AltBody = $strBody;
-		
+
 					$mail->send();
 					#邮件发送成功,修改数据库
 					$this->_update(["reset_password_sent_at"=>Medoo::raw('datetime(<now>)')],["reset_password_sent_at"],["email"=>$email]);
@@ -285,7 +288,7 @@ class User extends Table
 				$ok = $this->_update(["reset_password_token"=>null,
 									  "reset_password_sent_at"=>null],
 									  null,
-									  ["username"=>$data["username"]]);	
+									  ["username"=>$data["username"]]);
 			}
 			echo json_encode($this->result, JSON_UNESCAPED_UNICODE);
 		}else{
@@ -295,6 +298,47 @@ class User extends Table
 		}
 	}
 
+    public function signin(){
+        $isExist = $this->medoo->has($this->table,["username"=>$_REQUEST["username"],'password'=>md5($_REQUEST["password"])]);
+        if(!$isExist){
+            $isExist = $this->medoo->has($this->table,["email"=>$_REQUEST["username"],'password'=>md5($_REQUEST["password"])]);
+            if(!$isExist){
+                $this->result["ok"]=false;
+                $this->result["message"]="wrong username or password";
+                echo json_encode($this->result, JSON_UNESCAPED_UNICODE);
+            }else{
+                $uid = $this->medoo->get( $this->table, 'userid', ["email"=>$_REQUEST["username"]] );
+            }
+        }else{
+            $uid = $this->medoo->get( $this->table, 'userid', ["username"=>$_REQUEST["username"]] );
+        }
+        //JWT
+
+        $key = APP_KEY;
+        $payload = [
+            'nbf' => time(),
+            'exp' => time()+60*60*24*365,
+            'uid' => $uid
+        ];
+        $jwt = JWT::encode($payload,$key,'HS512');
+        //End of JWT
+        // set cookie
+        if(empty($_SERVER["HTTPS"])){
+            //本地开发
+            setcookie("user_uid", $uid,["expires"=>$ExpTime,"path"=>"/","secure"=>false,"httponly"=>true]);
+//            setcookie("user_id", $Fetch[0]["id"], ["expires"=>$ExpTime,"path"=>"/","secure"=>false,"httponly"=>true]);
+            setcookie("token", $jwt, ["expires"=>$ExpTime,"path"=>"/","secure"=>false,"httponly"=>true]);
+        }else{
+            //服务器运行
+            setcookie("user_uid", $uid, ["expires"=>$ExpTime,"path"=>"/","secure"=>true,"httponly"=>true]);
+//            setcookie("user_id", $Fetch[0]["id"], ["expires"=>$ExpTime,"path"=>"/","secure"=>true,"httponly"=>true]);
+            setcookie("token", $jwt, ["expires"=>$ExpTime,"path"=>"/","secure"=>true,"httponly"=>true]);
+        }
+        $this->result["ok"]=true;
+        $this->result["data"]=['token'=>$jwt];
+        echo json_encode($this->result, JSON_UNESCAPED_UNICODE);
+    }
+
 	private function isValidPassword($password){
 		if(mb_strlen($password,"UTF-8")<6){
 			$this->result["ok"]=false;
@@ -344,7 +388,7 @@ class User extends Table
 		}
 		return true;
 	}
-	private function isValidEmail($email){	
+	private function isValidEmail($email){
 		$isValid = filter_var($email, FILTER_VALIDATE_EMAIL);
 		if($isValid===false){
 			$this->result["ok"]=false;
@@ -355,4 +399,4 @@ class User extends Table
 
 }
 
-?>
+?>

+ 61 - 62
public/app/dict/turbo_split.php

@@ -1,17 +1,15 @@
 <?php
-require_once '../public/casesuf.inc';
-//require_once '../studio/dict_find_un.inc';
-//require_once '../studio/sandhi.php';
-require_once "../config.php";
-require_once "../public/_pdo.php";
+require_once __DIR__.'/../public/casesuf.inc';
+require_once __DIR__."/../config.php";
+require_once __DIR__."/../public/_pdo.php";
 
-require_once "../redis/function.php";
+require_once __DIR__."/../redis/function.php";
 global $redis;
 $redis = redis_connect();
 
 // open word part db
 global $dbh;
-$dns = "" . _FILE_DB_PART_;
+$dns = _FILE_DB_PART_;
 $dbh = new PDO($dns, "", "", array(PDO::ATTR_PERSISTENT => true));
 $dbh->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_WARNING);
 
@@ -145,6 +143,9 @@ $sandhi2[] = array("a" => "ṃ", "b" => "api", "c" => "mpi", "len" => 3, "adj_le
 $sandhi[] = array("a" => "a", "b" => "a", "c" => "a", "len" => 1, "adj_len" => -1, "advance" => true,"cf"=>0.99);
 $sandhi[] = array("a" => "ī", "b" => "", "c" => "i", "len" => 1, "adj_len" => 0, "advance" => true,"cf"=>0.9);
 
+/*
+从双元音处切开
+*/
 function split_diphthong($word)
 {
     //diphthong table双元音表
@@ -229,8 +230,7 @@ function dict_lookup2($word){
 		return $cf;
 	}
 }
-function dict_lookup($word)
-{
+function dict_lookup($word){
     if (strlen($word) <= 1) {
         return array(0,0);
     }
@@ -289,8 +289,7 @@ function dict_lookup($word)
 look up single word in dictionary vocabulary
 return the confidence value
  */
-function isExsit($word, $adj_len = 0)
-{
+function isExsit($word, $adj_len = 0){
 
     global $auto_split_times;
     global $part;
@@ -328,7 +327,7 @@ function isExsit($word, $adj_len = 0)
             $count = $word_count + 1;
         }
     }
-//fomular of confidence value 信心值计算公式
+	//fomular of confidence value 信心值计算公式
     if ($isFound) {
         if (isset($confidence["{$word}"])) {
             $cf = $confidence["{$word}"];
@@ -654,55 +653,55 @@ function split2($word){
 
 function preSandhi($word){
 	$sandhi2[] = array("a" => "ṃ", "b" => "ca", "c" => "ñca", "len" => 3, "adj_len" => 0, "advance" => false,"cf"=>1.0);
-$sandhi2[] = array("a" => "ṃ", "b" => "hi", "c" => "ñhi", "len" => 3, "adj_len" => 0, "advance" => false,"cf"=>1.0);
-
-$sandhi2[] = array("a" => "a", "b" => "iti", "c" => "āti", "len" => 3, "adj_len" => 0, "advance" => false,"cf"=>0.99999);
-$sandhi2[] = array("a" => "e", "b" => "iti", "c" => "eti", "len" => 3, "adj_len" => 0, "advance" => false,"cf"=>0.99999);
-$sandhi2[] = array("a" => "i", "b" => "iti", "c" => "īti", "len" => 3, "adj_len" => 0, "advance" => false,"cf"=>0.99999);
-$sandhi2[] = array("a" => "o", "b" => "iti", "c" => "oti", "len" => 3, "adj_len" => 0, "advance" => false,"cf"=>0.99999);
-$sandhi2[] = array("a" => "u", "b" => "iti", "c" => "ūti", "len" => 3, "adj_len" => 0, "advance" => false,"cf"=>0.99999);
-$sandhi2[] = array("a" => "ṃ", "b" => "iti", "c" => "nti", "len" => 3, "adj_len" => 0, "advance" => false,"cf"=>0.99999);
-
-$sandhi2[] = array("a" => "ī", "b" => "eva", "c" => "iyeva", "len" => 5, "adj_len" => 0, "advance" => false,"cf"=>0.9999);
-$sandhi2[] = array("a" => "ī", "b" => "eva", "c" => "īyeva", "len" => 5, "adj_len" => 0, "advance" => false,"cf"=>0.9999);
-$sandhi2[] = array("a" => "u", "b" => "eva", "c" => "uyeva", "len" => 5, "adj_len" => 0, "advance" => false,"cf"=>0.9999);
-$sandhi2[] = array("a" => "ṃ", "b" => "eva", "c" => "ṃyeva", "len" => 5, "adj_len" => 0, "advance" => false,"cf"=>0.9999);
-$sandhi2[] = array("a" => "i", "b" => "eva", "c" => "yeva", "len" => 4, "adj_len" => 0, "advance" => false,"cf"=>0.9999);
-$sandhi2[] = array("a" => "o", "b" => "eva", "c" => "ova", "len" => 3, "adj_len" => 0, "advance" => false,"cf"=>0.9999);
-$sandhi2[] = array("a" => "ṃ", "b" => "eva", "c" => "meva", "len" => 4, "adj_len" => 0, "advance" => false,"cf"=>0.9999);
-$sandhi2[] = array("a" => "u", "b" => "eva", "c" => "veva", "len" => 4, "adj_len" => 0, "advance" => false,"cf"=>0.9999);
-$sandhi2[] = array("a" => "a", "b" => "eva", "c" => "eva", "len" => 3, "adj_len" => 0, "advance" => false,"cf"=>0.9999);
-$sandhi2[] = array("a" => "e", "b" => "eva", "c" => "eva", "len" => 3, "adj_len" => 0, "advance" => false,"cf"=>0.9999);
-
-$sandhi2[] = array("a" => "a", "b" => "api", "c" => "āpi", "len" => 3, "adj_len" => 0, "advance" => false,"cf"=>0.9999);
-$sandhi2[] = array("a" => "ā", "b" => "api", "c" => "āpi", "len" => 3, "adj_len" => 0, "advance" => false,"cf"=>0.9999);
-$sandhi2[] = array("a" => "e", "b" => "api", "c" => "epi", "len" => 3, "adj_len" => 0, "advance" => false,"cf"=>0.9999);
-$sandhi2[] = array("a" => "i", "b" => "api", "c" => "īpi", "len" => 3, "adj_len" => 0, "advance" => false,"cf"=>0.9999);
-$sandhi2[] = array("a" => "ī", "b" => "api", "c" => "īpi", "len" => 3, "adj_len" => 0, "advance" => false,"cf"=>0.9999);
-$sandhi2[] = array("a" => "o", "b" => "api", "c" => "opi", "len" => 3, "adj_len" => 0, "advance" => false,"cf"=>0.9999);
-$sandhi2[] = array("a" => "u", "b" => "api", "c" => "ūpi", "len" => 3, "adj_len" => 0, "advance" => false,"cf"=>0.9999);
-$sandhi2[] = array("a" => "ū", "b" => "api", "c" => "ūpi", "len" => 3, "adj_len" => 0, "advance" => false,"cf"=>0.9999);
-$sandhi2[] = array("a" => "u", "b" => "api", "c" => "upi", "len" => 3, "adj_len" => 0, "advance" => false,"cf"=>0.9999);
-$sandhi2[] = array("a" => "ṃ", "b" => "api", "c" => "mpi", "len" => 3, "adj_len" => 0, "advance" => false,"cf"=>0.9999);
-
-$newWord = "";
-$firstWord=$word;
-do {
-	$isFound = false;
-	foreach ($sandhi2 as $key => $sandhi) {
-		# code...
-		$len = $sandhi["len"];
-		$end = mb_substr($firstWord, 0 - $len, null, "UTF-8");
-		if ($end == $sandhi["c"]) {
-			$word1 = mb_substr($firstWord, 0, mb_strlen($firstWord, "UTF-8") - $len, "UTF-8") .$sandhi["a"];
-			$word2 = $sandhi["b"];
-			$newWord = $word2 . "+" .$newWord;
-			$firstWord = $word1;
-			$isFound=true;
-		break;
+	$sandhi2[] = array("a" => "ṃ", "b" => "hi", "c" => "ñhi", "len" => 3, "adj_len" => 0, "advance" => false,"cf"=>1.0);
+
+	$sandhi2[] = array("a" => "a", "b" => "iti", "c" => "āti", "len" => 3, "adj_len" => 0, "advance" => false,"cf"=>0.99999);
+	$sandhi2[] = array("a" => "e", "b" => "iti", "c" => "eti", "len" => 3, "adj_len" => 0, "advance" => false,"cf"=>0.99999);
+	$sandhi2[] = array("a" => "i", "b" => "iti", "c" => "īti", "len" => 3, "adj_len" => 0, "advance" => false,"cf"=>0.99999);
+	$sandhi2[] = array("a" => "o", "b" => "iti", "c" => "oti", "len" => 3, "adj_len" => 0, "advance" => false,"cf"=>0.99999);
+	$sandhi2[] = array("a" => "u", "b" => "iti", "c" => "ūti", "len" => 3, "adj_len" => 0, "advance" => false,"cf"=>0.99999);
+	$sandhi2[] = array("a" => "ṃ", "b" => "iti", "c" => "nti", "len" => 3, "adj_len" => 0, "advance" => false,"cf"=>0.99999);
+
+	$sandhi2[] = array("a" => "ī", "b" => "eva", "c" => "iyeva", "len" => 5, "adj_len" => 0, "advance" => false,"cf"=>0.9999);
+	$sandhi2[] = array("a" => "ī", "b" => "eva", "c" => "īyeva", "len" => 5, "adj_len" => 0, "advance" => false,"cf"=>0.9999);
+	$sandhi2[] = array("a" => "u", "b" => "eva", "c" => "uyeva", "len" => 5, "adj_len" => 0, "advance" => false,"cf"=>0.9999);
+	$sandhi2[] = array("a" => "ṃ", "b" => "eva", "c" => "ṃyeva", "len" => 5, "adj_len" => 0, "advance" => false,"cf"=>0.9999);
+	$sandhi2[] = array("a" => "i", "b" => "eva", "c" => "yeva", "len" => 4, "adj_len" => 0, "advance" => false,"cf"=>0.9999);
+	$sandhi2[] = array("a" => "o", "b" => "eva", "c" => "ova", "len" => 3, "adj_len" => 0, "advance" => false,"cf"=>0.9999);
+	$sandhi2[] = array("a" => "ṃ", "b" => "eva", "c" => "meva", "len" => 4, "adj_len" => 0, "advance" => false,"cf"=>0.9999);
+	$sandhi2[] = array("a" => "u", "b" => "eva", "c" => "veva", "len" => 4, "adj_len" => 0, "advance" => false,"cf"=>0.9999);
+	$sandhi2[] = array("a" => "a", "b" => "eva", "c" => "eva", "len" => 3, "adj_len" => 0, "advance" => false,"cf"=>0.9999);
+	$sandhi2[] = array("a" => "e", "b" => "eva", "c" => "eva", "len" => 3, "adj_len" => 0, "advance" => false,"cf"=>0.9999);
+
+	$sandhi2[] = array("a" => "a", "b" => "api", "c" => "āpi", "len" => 3, "adj_len" => 0, "advance" => false,"cf"=>0.9999);
+	$sandhi2[] = array("a" => "ā", "b" => "api", "c" => "āpi", "len" => 3, "adj_len" => 0, "advance" => false,"cf"=>0.9999);
+	$sandhi2[] = array("a" => "e", "b" => "api", "c" => "epi", "len" => 3, "adj_len" => 0, "advance" => false,"cf"=>0.9999);
+	$sandhi2[] = array("a" => "i", "b" => "api", "c" => "īpi", "len" => 3, "adj_len" => 0, "advance" => false,"cf"=>0.9999);
+	$sandhi2[] = array("a" => "ī", "b" => "api", "c" => "īpi", "len" => 3, "adj_len" => 0, "advance" => false,"cf"=>0.9999);
+	$sandhi2[] = array("a" => "o", "b" => "api", "c" => "opi", "len" => 3, "adj_len" => 0, "advance" => false,"cf"=>0.9999);
+	$sandhi2[] = array("a" => "u", "b" => "api", "c" => "ūpi", "len" => 3, "adj_len" => 0, "advance" => false,"cf"=>0.9999);
+	$sandhi2[] = array("a" => "ū", "b" => "api", "c" => "ūpi", "len" => 3, "adj_len" => 0, "advance" => false,"cf"=>0.9999);
+	$sandhi2[] = array("a" => "u", "b" => "api", "c" => "upi", "len" => 3, "adj_len" => 0, "advance" => false,"cf"=>0.9999);
+	$sandhi2[] = array("a" => "ṃ", "b" => "api", "c" => "mpi", "len" => 3, "adj_len" => 0, "advance" => false,"cf"=>0.9999);
+
+	$newWord = "";
+	$firstWord=$word;
+	do {
+		$isFound = false;
+		foreach ($sandhi2 as $key => $sandhi) {
+			# code...
+			$len = $sandhi["len"];
+			$end = mb_substr($firstWord, 0 - $len, null, "UTF-8");
+			if ($end == $sandhi["c"]) {
+				$word1 = mb_substr($firstWord, 0, mb_strlen($firstWord, "UTF-8") - $len, "UTF-8") .$sandhi["a"];
+				$word2 = $sandhi["b"];
+				$newWord = $word2 . "+" .$newWord;
+				$firstWord = $word1;
+				$isFound=true;
+			break;
+			}
 		}
-	}
-} while ($isFound);
-$newWord = $firstWord . "+" .$newWord;
-return mb_substr($newWord,0,-1, "UTF-8");
+	} while ($isFound);
+	$newWord = $firstWord . "+" .$newWord;
+	return mb_substr($newWord,0,-1, "UTF-8");
 }

+ 3 - 2
public/app/pcdl/html_foot.php

@@ -19,7 +19,7 @@
 			<div>
 				<div>github</div>
 				<div>https://www.github.com/iapt-platform/mint</div>
-			</div>		
+			</div>
 		</div>
 		<div>
 			<div>您的建议是我们宝贵的财富</div>
@@ -33,6 +33,7 @@
 <script>
 	guide_init();
 </script>
+
 </body>
 
-</html>
+</html>

+ 2104 - 0
public/app/public/ending/adj.csv

@@ -0,0 +1,2104 @@
+type,end,end1,end2,grammar,endlen
+.f.,a,ābhi,bhi,.f.$.pl.$.abl.,1
+.f.,a,āhi,hi,.f.$.pl.$.abl.,1
+.f.,a,ā,ā,.f.$.pl.$.acc.,1
+.f.,a,āyo,yo,.f.$.pl.$.acc.,1
+.f.,a,ānaṃ,naṃ,.f.$.pl.$.dat.,1
+.f.,a,ānaṃ,naṃ,.f.$.pl.$.gen.,1
+.f.,a,ābhi,bhi,.f.$.pl.$.inst.,1
+.f.,a,āhi,hi,.f.$.pl.$.inst.,1
+.f.,a,āsu,su,.f.$.pl.$.loc.,1
+.f.,a,ā,ā,.f.$.pl.$.nom.,1
+.f.,a,āyo,yo,.f.$.pl.$.nom.,1
+.f.,a,ā,ā,.f.$.pl.$.voc.,1
+.f.,a,āyo,yo,.f.$.pl.$.voc.,1
+.f.,a,ato,to,.f.$.sg.$.abl.,1
+.f.,a,āya,ya,.f.$.sg.$.abl.,1
+.f.,a,aṃ,ṃ,.f.$.sg.$.acc.,1
+.f.,a,āya,ya,.f.$.sg.$.dat.,1
+.f.,a,āya,ya,.f.$.sg.$.gen.,1
+.f.,a,āya,ya,.f.$.sg.$.inst.,1
+.f.,a,āya,ya,.f.$.sg.$.loc.,1
+.f.,a,āyaṃ,yaṃ,.f.$.sg.$.loc.,1
+.f.,a,ā,a,.f.$.sg.$.nom.,1
+.f.,a,ā,a,.f.$.sg.$.voc.,1
+.f.,a,e,e,.f.$.sg.$.voc.,1
+.m.,a,ebhi,ebhi,.m.$.pl.$.abl.,1
+.m.,a,ehi,ehi,.m.$.pl.$.abl.,1
+.m.,a,e,e,.m.$.pl.$.acc.,1
+.m.,a,anaṃ,naṃ,.m.$.pl.$.dat.,1
+.m.,a,anaṃ,naṃ,.m.$.pl.$.gen.,1
+.m.,a,ebhi,ebhi,.m.$.pl.$.inst.,1
+.m.,a,ehi,ehi,.m.$.pl.$.inst.,1
+.m.,a,esu,su,.m.$.pl.$.loc.,1
+.m.,a,ā,ā,.m.$.pl.$.nom.,1
+.m.,a,āse,āse,.m.$.pl.$.nom.,1
+.m.,a,ā,ā,.m.$.pl.$.voc.,1
+.m.,a,ā,ā,.m.$.sg.$.abl.,1
+.m.,a,amhā,mhā,.m.$.sg.$.abl.,1
+.m.,a,asmā,smā,.m.$.sg.$.abl.,1
+.m.,a,ato,to,.m.$.sg.$.abl.,1
+.m.,a,aṃ,ṃ,.m.$.sg.$.acc.,1
+.m.,a,assa,ssa,.m.$.sg.$.dat.,1
+.m.,a,āya,ya,.m.$.sg.$.dat.,1
+.m.,a,assa,ssa,.m.$.sg.$.gen.,1
+.m.,a,ena,ina,.m.$.sg.$.inst.,1
+.m.,a,amhi,mhi,.m.$.sg.$.loc.,1
+.m.,a,asmiṃ,smiṃ,.m.$.sg.$.loc.,1
+.m.,a,e,e,.m.$.sg.$.loc.,1
+.m.,a,o,o,.m.$.sg.$.nom.,1
+.m.,a,a,a,.m.$.sg.$.voc.,1
+.m.,a,ā,ā,.m.$.sg.$.voc.,1
+.nt.,a,ebhi,ebhi,.nt.$.pl.$.abl.,1
+.nt.,a,ehi,ehi,.nt.$.pl.$.abl.,1
+.nt.,a,āni,ni,.nt.$.pl.$.acc.,1
+.nt.,a,e,e,.nt.$.pl.$.acc.,1
+.nt.,a,ānaṃ,naṃ,.nt.$.pl.$.dat.,1
+.nt.,a,ānaṃ,naṃ,.nt.$.pl.$.gen.,1
+.nt.,a,ebhi,ebhi,.nt.$.pl.$.inst.,1
+.nt.,a,ehi,ehi,.nt.$.pl.$.inst.,1
+.nt.,a,esu,su,.nt.$.pl.$.loc.,1
+.nt.,a,ā,a,.nt.$.pl.$.nom.,1
+.nt.,a,āni,ni,.nt.$.pl.$.nom.,1
+.nt.,a,ā,ā,.nt.$.pl.$.voc.,1
+.nt.,a,āni,ni,.nt.$.pl.$.voc.,1
+.nt.,a,ā,ā,.nt.$.sg.$.abl.,1
+.nt.,a,amhā,mhā,.nt.$.sg.$.abl.,1
+.nt.,a,asmā,smā,.nt.$.sg.$.abl.,1
+.nt.,a,ato,to,.nt.$.sg.$.abl.,1
+.nt.,a,aṃ,ṃ,.nt.$.sg.$.acc.,1
+.nt.,a,assa,ssa,.nt.$.sg.$.dat.,1
+.nt.,a,āya,āya,.nt.$.sg.$.dat.,1
+.nt.,a,assa,ssa,.nt.$.sg.$.gen.,1
+.nt.,a,ena,ina,.nt.$.sg.$.inst.,1
+.nt.,a,amhi,mhi,.nt.$.sg.$.loc.,1
+.nt.,a,asmiṃ,smiṃ,.nt.$.sg.$.loc.,1
+.nt.,a,e,i,.nt.$.sg.$.loc.,1
+.nt.,a,aṃ,ṃ,.nt.$.sg.$.nom.,1
+.nt.,a,a,a,.nt.$.sg.$.voc.,1
+.f.,ant,antībhi,ībhi,.f.$.pl.$.abl.,3
+.f.,ant,antīhi,īhi,.f.$.pl.$.abl.,3
+.f.,ant,atībhi,ībhi,.f.$.pl.$.abl.,3
+.f.,ant,atīhi,īhi,.f.$.pl.$.abl.,3
+.f.,ant,antī,ī,.f.$.pl.$.acc.,3
+.f.,ant,antiyo,iyo,.f.$.pl.$.acc.,3
+.f.,ant,atī,ī,.f.$.pl.$.acc.,3
+.f.,ant,atiyo,iyo,.f.$.pl.$.acc.,3
+.f.,ant,antīnaṃ,īnaṃ,.f.$.pl.$.dat.,3
+.f.,ant,atīnaṃ,īnaṃ,.f.$.pl.$.dat.,3
+.f.,ant,antīnaṃ,īnaṃ,.f.$.pl.$.gen.,3
+.f.,ant,atīnaṃ,īnaṃ,.f.$.pl.$.gen.,3
+.f.,ant,antībhi,ībhi,.f.$.pl.$.inst.,3
+.f.,ant,antīhi,īhi,.f.$.pl.$.inst.,3
+.f.,ant,atībhi,ībhi,.f.$.pl.$.inst.,3
+.f.,ant,atīhi,īhi,.f.$.pl.$.inst.,3
+.f.,ant,antīsu,īsu,.f.$.pl.$.loc.,3
+.f.,ant,atīsu,īsu,.f.$.pl.$.loc.,3
+.f.,ant,antī,ī,.f.$.pl.$.nom.,3
+.f.,ant,antiyo,iyo,.f.$.pl.$.nom.,3
+.f.,ant,atī,ī,.f.$.pl.$.nom.,3
+.f.,ant,atiyo,iyo,.f.$.pl.$.nom.,3
+.f.,ant,antī,ī,.f.$.pl.$.voc.,3
+.f.,ant,antiyo,iyo,.f.$.pl.$.voc.,3
+.f.,ant,atī,ī,.f.$.pl.$.voc.,3
+.f.,ant,atiyo,iyo,.f.$.pl.$.voc.,3
+.f.,ant,antiyā,iyā,.f.$.sg.$.abl.,3
+.f.,ant,atiyā,iyā,.f.$.sg.$.abl.,3
+.f.,ant,antiṃ,iṃ,.f.$.sg.$.acc.,3
+.f.,ant,atiṃ,iṃ,.f.$.sg.$.acc.,3
+.f.,ant,antiyā,iyā,.f.$.sg.$.dat.,3
+.f.,ant,atiyā,iyā,.f.$.sg.$.dat.,3
+.f.,ant,antiyā,iyā,.f.$.sg.$.gen.,3
+.f.,ant,atiyā,iyā,.f.$.sg.$.gen.,3
+.f.,ant,antiyā,iyā,.f.$.sg.$.inst.,3
+.f.,ant,atiyā,iyā,.f.$.sg.$.inst.,3
+.f.,ant,antiyā,iyā,.f.$.sg.$.loc.,3
+.f.,ant,antiyaṃ,iyaṃ,.f.$.sg.$.loc.,3
+.f.,ant,atiyā,iyā,.f.$.sg.$.loc.,3
+.f.,ant,atiyaṃ,iyaṃ,.f.$.sg.$.loc.,3
+.f.,ant,antī,ī,.f.$.sg.$.nom.,3
+.f.,ant,atī,ī,.f.$.sg.$.nom.,3
+.f.,ant,antī,ī,.f.$.sg.$.voc.,3
+.f.,ant,atī,ī,.f.$.sg.$.voc.,3
+.m.,ant,ebhi,ebhi,.m.$.pl.$.abl.,3
+.m.,ant,ehi,ehi,.m.$.pl.$.abl.,3
+.m.,ant,e,e,.m.$.pl.$.acc.,3
+.m.,ant,ānaṃ,naṃ,.m.$.pl.$.dat.,3
+.m.,ant,ānaṃ,naṃ,.m.$.pl.$.gen.,3
+.m.,ant,ebhi,ebhi,.m.$.pl.$.inst.,3
+.m.,ant,ehi,ehi,.m.$.pl.$.inst.,3
+.m.,ant,esu,su,.m.$.pl.$.loc.,3
+.m.,ant,ā,ā,.m.$.pl.$.nom.,3
+.m.,ant,ā,ā,.m.$.pl.$.voc.,3
+.m.,ant,antamhā,mhā,.m.$.sg.$.abl.,3
+.m.,ant,antasmā,smā,.m.$.sg.$.abl.,3
+.m.,ant,atā,sā,.m.$.sg.$.abl.,3
+.m.,ant,antaṃ,o,.m.$.sg.$.acc.,3
+.m.,ant,antassa,so,.m.$.sg.$.dat.,3
+.m.,ant,ato,ssa,.m.$.sg.$.dat.,3
+.m.,ant,antassa,so,.m.$.sg.$.gen.,3
+.m.,ant,ato,ssa,.m.$.sg.$.gen.,3
+.m.,ant,atā,sā,.m.$.sg.$.inst.,3
+.m.,ant,atena,na,.m.$.sg.$.inst.,3
+.m.,ant,antamhi,mhi,.m.$.sg.$.loc.,3
+.m.,ant,antasmiṃ,smiṃ,.m.$.sg.$.loc.,3
+.m.,ant,ante,e,.m.$.sg.$.loc.,3
+.m.,ant,ati,si,.m.$.sg.$.loc.,3
+.m.,ant,aṃ,ṃ,.m.$.sg.$.nom.,3
+.m.,ant,anto,o,.m.$.sg.$.nom.,3
+.m.,ant,a,ā,.m.$.sg.$.voc.,3
+.m.,ant,ā,ṃ,.m.$.sg.$.voc.,3
+.m.,ant,aṃ,o,.m.$.sg.$.voc.,3
+.nt.,ant,antebhi,ebhi,.nt.$.pl.$.abl.,3
+.nt.,ant,antehi,ehi,.nt.$.pl.$.abl.,3
+.nt.,ant,antã,ā,.nt.$.pl.$.acc.,3
+.nt.,ant,antãni,āni,.nt.$.pl.$.acc.,3
+.nt.,ant,antānaṃ,naṃ,.nt.$.pl.$.dat.,3
+.nt.,ant,ataṃ,ṃ,.nt.$.pl.$.dat.,3
+.nt.,ant,antānaṃ,naṃ,.nt.$.pl.$.gen.,3
+.nt.,ant,ataṃ,ṃ,.nt.$.pl.$.gen.,3
+.nt.,ant,antebhi,ebhi,.nt.$.pl.$.inst.,3
+.nt.,ant,antehi,ehi,.nt.$.pl.$.inst.,3
+.nt.,ant,antesu,su,.nt.$.pl.$.loc.,3
+.nt.,ant,antã,ā,.nt.$.pl.$.nom.,3
+.nt.,ant,antãni,āni,.nt.$.pl.$.nom.,3
+.nt.,ant,antã,ā,.nt.$.pl.$.voc.,3
+.nt.,ant,antãni,āni,.nt.$.pl.$.voc.,3
+.nt.,ant,antamhā,mhā,.nt.$.sg.$.abl.,3
+.nt.,ant,antasmā,smā,.nt.$.sg.$.abl.,3
+.nt.,ant,atā,sā,.nt.$.sg.$.abl.,3
+.nt.,ant,antaṃ,o,.nt.$.sg.$.acc.,3
+.nt.,ant,antassa,so,.nt.$.sg.$.dat.,3
+.nt.,ant,ato,ssa,.nt.$.sg.$.dat.,3
+.nt.,ant,antassa,so,.nt.$.sg.$.gen.,3
+.nt.,ant,ato,ssa,.nt.$.sg.$.gen.,3
+.nt.,ant,atā,sā,.nt.$.sg.$.inst.,3
+.nt.,ant,atena,na,.nt.$.sg.$.inst.,3
+.nt.,ant,antamhi,mhi,.nt.$.sg.$.loc.,3
+.nt.,ant,antasmiṃ,smiṃ,.nt.$.sg.$.loc.,3
+.nt.,ant,ante,e,.nt.$.sg.$.loc.,3
+.nt.,ant,ati,si,.nt.$.sg.$.loc.,3
+.nt.,ant,antaṃ,ṃ,.nt.$.sg.$.nom.,3
+.nt.,ant,anto,o,.nt.$.sg.$.nom.,3
+.nt.,ant,a,ā,.nt.$.sg.$.voc.,3
+.nt.,ant,ā,ṃ,.nt.$.sg.$.voc.,3
+.nt.,ant,aṃ,o,.nt.$.sg.$.voc.,3
+.f.,anta,antībhi,ībhi,.f.$.pl.$.abl.,4
+.f.,anta,antīhi,īhi,.f.$.pl.$.abl.,4
+.f.,anta,atībhi,ībhi,.f.$.pl.$.abl.,4
+.f.,anta,atīhi,īhi,.f.$.pl.$.abl.,4
+.f.,anta,antī,ī,.f.$.pl.$.acc.,4
+.f.,anta,antiyo,iyo,.f.$.pl.$.acc.,4
+.f.,anta,atī,ī,.f.$.pl.$.acc.,4
+.f.,anta,atiyo,iyo,.f.$.pl.$.acc.,4
+.f.,anta,antīnaṃ,īnaṃ,.f.$.pl.$.dat.,4
+.f.,anta,atīnaṃ,īnaṃ,.f.$.pl.$.dat.,4
+.f.,anta,antīnaṃ,īnaṃ,.f.$.pl.$.gen.,4
+.f.,anta,atīnaṃ,īnaṃ,.f.$.pl.$.gen.,4
+.f.,anta,antībhi,ībhi,.f.$.pl.$.inst.,4
+.f.,anta,antīhi,īhi,.f.$.pl.$.inst.,4
+.f.,anta,atībhi,ībhi,.f.$.pl.$.inst.,4
+.f.,anta,atīhi,īhi,.f.$.pl.$.inst.,4
+.f.,anta,antīsu,īsu,.f.$.pl.$.loc.,4
+.f.,anta,atīsu,īsu,.f.$.pl.$.loc.,4
+.f.,anta,antī,ī,.f.$.pl.$.nom.,4
+.f.,anta,antiyo,iyo,.f.$.pl.$.nom.,4
+.f.,anta,atī,ī,.f.$.pl.$.nom.,4
+.f.,anta,atiyo,iyo,.f.$.pl.$.nom.,4
+.f.,anta,antī,ī,.f.$.pl.$.voc.,4
+.f.,anta,antiyo,iyo,.f.$.pl.$.voc.,4
+.f.,anta,atī,ī,.f.$.pl.$.voc.,4
+.f.,anta,atiyo,iyo,.f.$.pl.$.voc.,4
+.f.,anta,antiyā,iyā,.f.$.sg.$.abl.,4
+.f.,anta,atiyā,iyā,.f.$.sg.$.abl.,4
+.f.,anta,antiṃ,iṃ,.f.$.sg.$.acc.,4
+.f.,anta,atiṃ,iṃ,.f.$.sg.$.acc.,4
+.f.,anta,antiyā,iyā,.f.$.sg.$.dat.,4
+.f.,anta,atiyā,iyā,.f.$.sg.$.dat.,4
+.f.,anta,antiyā,iyā,.f.$.sg.$.gen.,4
+.f.,anta,atiyā,iyā,.f.$.sg.$.gen.,4
+.f.,anta,antiyā,iyā,.f.$.sg.$.inst.,4
+.f.,anta,atiyā,iyā,.f.$.sg.$.inst.,4
+.f.,anta,antiyā,iyā,.f.$.sg.$.loc.,4
+.f.,anta,antiyaṃ,iyaṃ,.f.$.sg.$.loc.,4
+.f.,anta,atiyā,iyā,.f.$.sg.$.loc.,4
+.f.,anta,atiyaṃ,iyaṃ,.f.$.sg.$.loc.,4
+.f.,anta,antī,ī,.f.$.sg.$.nom.,4
+.f.,anta,atī,ī,.f.$.sg.$.nom.,4
+.f.,anta,antī,ī,.f.$.sg.$.voc.,4
+.f.,anta,atī,ī,.f.$.sg.$.voc.,4
+.m.,anta,ebhi,ebhi,.m.$.pl.$.abl.,4
+.m.,anta,ehi,ehi,.m.$.pl.$.abl.,4
+.m.,anta,e,e,.m.$.pl.$.acc.,4
+.m.,anta,ānaṃ,naṃ,.m.$.pl.$.dat.,4
+.m.,anta,ānaṃ,naṃ,.m.$.pl.$.gen.,4
+.m.,anta,ebhi,ebhi,.m.$.pl.$.inst.,4
+.m.,anta,ehi,ehi,.m.$.pl.$.inst.,4
+.m.,anta,esu,su,.m.$.pl.$.loc.,4
+.m.,anta,ā,ā,.m.$.pl.$.nom.,4
+.m.,anta,ā,ā,.m.$.pl.$.voc.,4
+.m.,anta,antamhā,mhā,.m.$.sg.$.abl.,4
+.m.,anta,antasmā,smā,.m.$.sg.$.abl.,4
+.m.,anta,atā,sā,.m.$.sg.$.abl.,4
+.m.,anta,antaṃ,o,.m.$.sg.$.acc.,4
+.m.,anta,antassa,so,.m.$.sg.$.dat.,4
+.m.,anta,ato,ssa,.m.$.sg.$.dat.,4
+.m.,anta,antassa,so,.m.$.sg.$.gen.,4
+.m.,anta,ato,ssa,.m.$.sg.$.gen.,4
+.m.,anta,atā,sā,.m.$.sg.$.inst.,4
+.m.,anta,atena,na,.m.$.sg.$.inst.,4
+.m.,anta,antamhi,mhi,.m.$.sg.$.loc.,4
+.m.,anta,antasmiṃ,smiṃ,.m.$.sg.$.loc.,4
+.m.,anta,ante,e,.m.$.sg.$.loc.,4
+.m.,anta,ati,si,.m.$.sg.$.loc.,4
+.m.,anta,aṃ,ṃ,.m.$.sg.$.nom.,4
+.m.,anta,anto,o,.m.$.sg.$.nom.,4
+.m.,anta,a,ā,.m.$.sg.$.voc.,4
+.m.,anta,ā,ṃ,.m.$.sg.$.voc.,4
+.m.,anta,aṃ,o,.m.$.sg.$.voc.,4
+.nt.,anta,antebhi,ebhi,.nt.$.pl.$.abl.,4
+.nt.,anta,antehi,ehi,.nt.$.pl.$.abl.,4
+.nt.,anta,antã,ā,.nt.$.pl.$.acc.,4
+.nt.,anta,antãni,āni,.nt.$.pl.$.acc.,4
+.nt.,anta,antānaṃ,naṃ,.nt.$.pl.$.dat.,4
+.nt.,anta,ataṃ,ṃ,.nt.$.pl.$.dat.,4
+.nt.,anta,antānaṃ,naṃ,.nt.$.pl.$.gen.,4
+.nt.,anta,ataṃ,ṃ,.nt.$.pl.$.gen.,4
+.nt.,anta,antebhi,ebhi,.nt.$.pl.$.inst.,4
+.nt.,anta,antehi,ehi,.nt.$.pl.$.inst.,4
+.nt.,anta,antesu,su,.nt.$.pl.$.loc.,4
+.nt.,anta,antã,ā,.nt.$.pl.$.nom.,4
+.nt.,anta,antãni,āni,.nt.$.pl.$.nom.,4
+.nt.,anta,antã,ā,.nt.$.pl.$.voc.,4
+.nt.,anta,antãni,āni,.nt.$.pl.$.voc.,4
+.nt.,anta,antamhā,mhā,.nt.$.sg.$.abl.,4
+.nt.,anta,antasmā,smā,.nt.$.sg.$.abl.,4
+.nt.,anta,atā,sā,.nt.$.sg.$.abl.,4
+.nt.,anta,antaṃ,o,.nt.$.sg.$.acc.,4
+.nt.,anta,antassa,so,.nt.$.sg.$.dat.,4
+.nt.,anta,ato,ssa,.nt.$.sg.$.dat.,4
+.nt.,anta,antassa,so,.nt.$.sg.$.gen.,4
+.nt.,anta,ato,ssa,.nt.$.sg.$.gen.,4
+.nt.,anta,atā,sā,.nt.$.sg.$.inst.,4
+.nt.,anta,atena,na,.nt.$.sg.$.inst.,4
+.nt.,anta,antamhi,mhi,.nt.$.sg.$.loc.,4
+.nt.,anta,antasmiṃ,smiṃ,.nt.$.sg.$.loc.,4
+.nt.,anta,ante,e,.nt.$.sg.$.loc.,4
+.nt.,anta,ati,si,.nt.$.sg.$.loc.,4
+.nt.,anta,antaṃ,ṃ,.nt.$.sg.$.nom.,4
+.nt.,anta,anto,o,.nt.$.sg.$.nom.,4
+.nt.,anta,a,ā,.nt.$.sg.$.voc.,4
+.nt.,anta,ā,ṃ,.nt.$.sg.$.voc.,4
+.nt.,anta,aṃ,o,.nt.$.sg.$.voc.,4
+.f.,at,antībhi,ībhi,.f.$.pl.$.abl.,2
+.f.,at,antīhi,īhi,.f.$.pl.$.abl.,2
+.f.,at,atībhi,ībhi,.f.$.pl.$.abl.,2
+.f.,at,atīhi,īhi,.f.$.pl.$.abl.,2
+.f.,at,antī,ī,.f.$.pl.$.acc.,2
+.f.,at,antiyo,iyo,.f.$.pl.$.acc.,2
+.f.,at,atī,ī,.f.$.pl.$.acc.,2
+.f.,at,atiyo,iyo,.f.$.pl.$.acc.,2
+.f.,at,antīnaṃ,īnaṃ,.f.$.pl.$.dat.,2
+.f.,at,atīnaṃ,īnaṃ,.f.$.pl.$.dat.,2
+.f.,at,antīnaṃ,īnaṃ,.f.$.pl.$.gen.,2
+.f.,at,atīnaṃ,īnaṃ,.f.$.pl.$.gen.,2
+.f.,at,antībhi,ībhi,.f.$.pl.$.inst.,2
+.f.,at,antīhi,īhi,.f.$.pl.$.inst.,2
+.f.,at,atībhi,ībhi,.f.$.pl.$.inst.,2
+.f.,at,atīhi,īhi,.f.$.pl.$.inst.,2
+.f.,at,antīsu,īsu,.f.$.pl.$.loc.,2
+.f.,at,atīsu,īsu,.f.$.pl.$.loc.,2
+.f.,at,antī,ī,.f.$.pl.$.nom.,2
+.f.,at,antiyo,iyo,.f.$.pl.$.nom.,2
+.f.,at,atī,ī,.f.$.pl.$.nom.,2
+.f.,at,atiyo,iyo,.f.$.pl.$.nom.,2
+.f.,at,antī,ī,.f.$.pl.$.voc.,2
+.f.,at,antiyo,iyo,.f.$.pl.$.voc.,2
+.f.,at,atī,ī,.f.$.pl.$.voc.,2
+.f.,at,atiyo,iyo,.f.$.pl.$.voc.,2
+.f.,at,antiyā,iyā,.f.$.sg.$.abl.,2
+.f.,at,atiyā,iyā,.f.$.sg.$.abl.,2
+.f.,at,antiṃ,iṃ,.f.$.sg.$.acc.,2
+.f.,at,atiṃ,iṃ,.f.$.sg.$.acc.,2
+.f.,at,antiyā,iyā,.f.$.sg.$.dat.,2
+.f.,at,atiyā,iyā,.f.$.sg.$.dat.,2
+.f.,at,antiyā,iyā,.f.$.sg.$.gen.,2
+.f.,at,atiyā,iyā,.f.$.sg.$.gen.,2
+.f.,at,antiyā,iyā,.f.$.sg.$.inst.,2
+.f.,at,atiyā,iyā,.f.$.sg.$.inst.,2
+.f.,at,antiyā,iyā,.f.$.sg.$.loc.,2
+.f.,at,antiyaṃ,iyaṃ,.f.$.sg.$.loc.,2
+.f.,at,atiyā,iyā,.f.$.sg.$.loc.,2
+.f.,at,atiyaṃ,iyaṃ,.f.$.sg.$.loc.,2
+.f.,at,antī,ī,.f.$.sg.$.nom.,2
+.f.,at,atī,ī,.f.$.sg.$.nom.,2
+.f.,at,antī,ī,.f.$.sg.$.voc.,2
+.f.,at,atī,ī,.f.$.sg.$.voc.,2
+.m.,at,ebhi,ebhi,.m.$.pl.$.abl.,2
+.m.,at,ehi,ehi,.m.$.pl.$.abl.,2
+.m.,at,e,e,.m.$.pl.$.acc.,2
+.m.,at,ānaṃ,naṃ,.m.$.pl.$.dat.,2
+.m.,at,ānaṃ,naṃ,.m.$.pl.$.gen.,2
+.m.,at,ebhi,ebhi,.m.$.pl.$.inst.,2
+.m.,at,ehi,ehi,.m.$.pl.$.inst.,2
+.m.,at,esu,su,.m.$.pl.$.loc.,2
+.m.,at,ā,ā,.m.$.pl.$.nom.,2
+.m.,at,ā,ā,.m.$.pl.$.voc.,2
+.m.,at,antamhā,mhā,.m.$.sg.$.abl.,2
+.m.,at,antasmā,smā,.m.$.sg.$.abl.,2
+.m.,at,atā,sā,.m.$.sg.$.abl.,2
+.m.,at,antaṃ,o,.m.$.sg.$.acc.,2
+.m.,at,antassa,so,.m.$.sg.$.dat.,2
+.m.,at,ato,ssa,.m.$.sg.$.dat.,2
+.m.,at,antassa,so,.m.$.sg.$.gen.,2
+.m.,at,ato,ssa,.m.$.sg.$.gen.,2
+.m.,at,atā,sā,.m.$.sg.$.inst.,2
+.m.,at,atena,na,.m.$.sg.$.inst.,2
+.m.,at,antamhi,mhi,.m.$.sg.$.loc.,2
+.m.,at,antasmiṃ,smiṃ,.m.$.sg.$.loc.,2
+.m.,at,ante,e,.m.$.sg.$.loc.,2
+.m.,at,ati,si,.m.$.sg.$.loc.,2
+.m.,at,aṃ,ṃ,.m.$.sg.$.nom.,2
+.m.,at,anto,o,.m.$.sg.$.nom.,2
+.m.,at,a,ā,.m.$.sg.$.voc.,2
+.m.,at,ā,ṃ,.m.$.sg.$.voc.,2
+.m.,at,aṃ,o,.m.$.sg.$.voc.,2
+.nt.,at,antebhi,ebhi,.nt.$.pl.$.abl.,2
+.nt.,at,antehi,ehi,.nt.$.pl.$.abl.,2
+.nt.,at,antã,ā,.nt.$.pl.$.acc.,2
+.nt.,at,antãni,āni,.nt.$.pl.$.acc.,2
+.nt.,at,antānaṃ,naṃ,.nt.$.pl.$.dat.,2
+.nt.,at,ataṃ,ṃ,.nt.$.pl.$.dat.,2
+.nt.,at,antānaṃ,naṃ,.nt.$.pl.$.gen.,2
+.nt.,at,ataṃ,ṃ,.nt.$.pl.$.gen.,2
+.nt.,at,antebhi,ebhi,.nt.$.pl.$.inst.,2
+.nt.,at,antehi,ehi,.nt.$.pl.$.inst.,2
+.nt.,at,antesu,su,.nt.$.pl.$.loc.,2
+.nt.,at,antã,ā,.nt.$.pl.$.nom.,2
+.nt.,at,antãni,āni,.nt.$.pl.$.nom.,2
+.nt.,at,antã,ā,.nt.$.pl.$.voc.,2
+.nt.,at,antãni,āni,.nt.$.pl.$.voc.,2
+.nt.,at,antamhā,mhā,.nt.$.sg.$.abl.,2
+.nt.,at,antasmā,smā,.nt.$.sg.$.abl.,2
+.nt.,at,atā,sā,.nt.$.sg.$.abl.,2
+.nt.,at,antaṃ,o,.nt.$.sg.$.acc.,2
+.nt.,at,antassa,so,.nt.$.sg.$.dat.,2
+.nt.,at,ato,ssa,.nt.$.sg.$.dat.,2
+.nt.,at,antassa,so,.nt.$.sg.$.gen.,2
+.nt.,at,ato,ssa,.nt.$.sg.$.gen.,2
+.nt.,at,atā,sā,.nt.$.sg.$.inst.,2
+.nt.,at,atena,na,.nt.$.sg.$.inst.,2
+.nt.,at,antamhi,mhi,.nt.$.sg.$.loc.,2
+.nt.,at,antasmiṃ,smiṃ,.nt.$.sg.$.loc.,2
+.nt.,at,ante,e,.nt.$.sg.$.loc.,2
+.nt.,at,ati,si,.nt.$.sg.$.loc.,2
+.nt.,at,antaṃ,ṃ,.nt.$.sg.$.nom.,2
+.nt.,at,anto,o,.nt.$.sg.$.nom.,2
+.nt.,at,a,ā,.nt.$.sg.$.voc.,2
+.nt.,at,ā,ṃ,.nt.$.sg.$.voc.,2
+.nt.,at,aṃ,o,.nt.$.sg.$.voc.,2
+.f.,ata,antībhi,ībhi,.f.$.pl.$.abl.,3
+.f.,ata,antīhi,īhi,.f.$.pl.$.abl.,3
+.f.,ata,atībhi,ībhi,.f.$.pl.$.abl.,3
+.f.,ata,atīhi,īhi,.f.$.pl.$.abl.,3
+.f.,ata,antī,ī,.f.$.pl.$.acc.,3
+.f.,ata,antiyo,iyo,.f.$.pl.$.acc.,3
+.f.,ata,atī,ī,.f.$.pl.$.acc.,3
+.f.,ata,atiyo,iyo,.f.$.pl.$.acc.,3
+.f.,ata,antīnaṃ,īnaṃ,.f.$.pl.$.dat.,3
+.f.,ata,atīnaṃ,īnaṃ,.f.$.pl.$.dat.,3
+.f.,ata,antīnaṃ,īnaṃ,.f.$.pl.$.gen.,3
+.f.,ata,atīnaṃ,īnaṃ,.f.$.pl.$.gen.,3
+.f.,ata,antībhi,ībhi,.f.$.pl.$.inst.,3
+.f.,ata,antīhi,īhi,.f.$.pl.$.inst.,3
+.f.,ata,atībhi,ībhi,.f.$.pl.$.inst.,3
+.f.,ata,atīhi,īhi,.f.$.pl.$.inst.,3
+.f.,ata,antīsu,īsu,.f.$.pl.$.loc.,3
+.f.,ata,atīsu,īsu,.f.$.pl.$.loc.,3
+.f.,ata,antī,ī,.f.$.pl.$.nom.,3
+.f.,ata,antiyo,iyo,.f.$.pl.$.nom.,3
+.f.,ata,atī,ī,.f.$.pl.$.nom.,3
+.f.,ata,atiyo,iyo,.f.$.pl.$.nom.,3
+.f.,ata,antī,ī,.f.$.pl.$.voc.,3
+.f.,ata,antiyo,iyo,.f.$.pl.$.voc.,3
+.f.,ata,atī,ī,.f.$.pl.$.voc.,3
+.f.,ata,atiyo,iyo,.f.$.pl.$.voc.,3
+.f.,ata,antiyā,iyā,.f.$.sg.$.abl.,3
+.f.,ata,atiyā,iyā,.f.$.sg.$.abl.,3
+.f.,ata,antiṃ,iṃ,.f.$.sg.$.acc.,3
+.f.,ata,atiṃ,iṃ,.f.$.sg.$.acc.,3
+.f.,ata,antiyā,iyā,.f.$.sg.$.dat.,3
+.f.,ata,atiyā,iyā,.f.$.sg.$.dat.,3
+.f.,ata,antiyā,iyā,.f.$.sg.$.gen.,3
+.f.,ata,atiyā,iyā,.f.$.sg.$.gen.,3
+.f.,ata,antiyā,iyā,.f.$.sg.$.inst.,3
+.f.,ata,atiyā,iyā,.f.$.sg.$.inst.,3
+.f.,ata,antiyā,iyā,.f.$.sg.$.loc.,3
+.f.,ata,antiyaṃ,iyaṃ,.f.$.sg.$.loc.,3
+.f.,ata,atiyā,iyā,.f.$.sg.$.loc.,3
+.f.,ata,atiyaṃ,iyaṃ,.f.$.sg.$.loc.,3
+.f.,ata,antī,ī,.f.$.sg.$.nom.,3
+.f.,ata,atī,ī,.f.$.sg.$.nom.,3
+.f.,ata,antī,ī,.f.$.sg.$.voc.,3
+.f.,ata,atī,ī,.f.$.sg.$.voc.,3
+.m.,ata,ebhi,ebhi,.m.$.pl.$.abl.,3
+.m.,ata,ehi,ehi,.m.$.pl.$.abl.,3
+.m.,ata,e,e,.m.$.pl.$.acc.,3
+.m.,ata,ānaṃ,naṃ,.m.$.pl.$.dat.,3
+.m.,ata,ānaṃ,naṃ,.m.$.pl.$.gen.,3
+.m.,ata,ebhi,ebhi,.m.$.pl.$.inst.,3
+.m.,ata,ehi,ehi,.m.$.pl.$.inst.,3
+.m.,ata,esu,su,.m.$.pl.$.loc.,3
+.m.,ata,ā,ā,.m.$.pl.$.nom.,3
+.m.,ata,ā,ā,.m.$.pl.$.voc.,3
+.m.,ata,antamhā,mhā,.m.$.sg.$.abl.,3
+.m.,ata,antasmā,smā,.m.$.sg.$.abl.,3
+.m.,ata,atā,sā,.m.$.sg.$.abl.,3
+.m.,ata,antaṃ,o,.m.$.sg.$.acc.,3
+.m.,ata,antassa,so,.m.$.sg.$.dat.,3
+.m.,ata,ato,ssa,.m.$.sg.$.dat.,3
+.m.,ata,antassa,so,.m.$.sg.$.gen.,3
+.m.,ata,ato,ssa,.m.$.sg.$.gen.,3
+.m.,ata,atā,sā,.m.$.sg.$.inst.,3
+.m.,ata,atena,na,.m.$.sg.$.inst.,3
+.m.,ata,antamhi,mhi,.m.$.sg.$.loc.,3
+.m.,ata,antasmiṃ,smiṃ,.m.$.sg.$.loc.,3
+.m.,ata,ante,e,.m.$.sg.$.loc.,3
+.m.,ata,ati,si,.m.$.sg.$.loc.,3
+.m.,ata,aṃ,ṃ,.m.$.sg.$.nom.,3
+.m.,ata,anto,o,.m.$.sg.$.nom.,3
+.m.,ata,a,ā,.m.$.sg.$.voc.,3
+.m.,ata,ā,ṃ,.m.$.sg.$.voc.,3
+.m.,ata,aṃ,o,.m.$.sg.$.voc.,3
+.nt.,ata,antebhi,ebhi,.nt.$.pl.$.abl.,3
+.nt.,ata,antehi,ehi,.nt.$.pl.$.abl.,3
+.nt.,ata,antã,ā,.nt.$.pl.$.acc.,3
+.nt.,ata,antãni,āni,.nt.$.pl.$.acc.,3
+.nt.,ata,antānaṃ,naṃ,.nt.$.pl.$.dat.,3
+.nt.,ata,ataṃ,ṃ,.nt.$.pl.$.dat.,3
+.nt.,ata,antānaṃ,naṃ,.nt.$.pl.$.gen.,3
+.nt.,ata,ataṃ,ṃ,.nt.$.pl.$.gen.,3
+.nt.,ata,antebhi,ebhi,.nt.$.pl.$.inst.,3
+.nt.,ata,antehi,ehi,.nt.$.pl.$.inst.,3
+.nt.,ata,antesu,su,.nt.$.pl.$.loc.,3
+.nt.,ata,antã,ā,.nt.$.pl.$.nom.,3
+.nt.,ata,antãni,āni,.nt.$.pl.$.nom.,3
+.nt.,ata,antã,ā,.nt.$.pl.$.voc.,3
+.nt.,ata,antãni,āni,.nt.$.pl.$.voc.,3
+.nt.,ata,antamhā,mhā,.nt.$.sg.$.abl.,3
+.nt.,ata,antasmā,smā,.nt.$.sg.$.abl.,3
+.nt.,ata,atā,sā,.nt.$.sg.$.abl.,3
+.nt.,ata,antaṃ,o,.nt.$.sg.$.acc.,3
+.nt.,ata,antassa,so,.nt.$.sg.$.dat.,3
+.nt.,ata,ato,ssa,.nt.$.sg.$.dat.,3
+.nt.,ata,antassa,so,.nt.$.sg.$.gen.,3
+.nt.,ata,ato,ssa,.nt.$.sg.$.gen.,3
+.nt.,ata,atā,sā,.nt.$.sg.$.inst.,3
+.nt.,ata,atena,na,.nt.$.sg.$.inst.,3
+.nt.,ata,antamhi,mhi,.nt.$.sg.$.loc.,3
+.nt.,ata,antasmiṃ,smiṃ,.nt.$.sg.$.loc.,3
+.nt.,ata,ante,e,.nt.$.sg.$.loc.,3
+.nt.,ata,ati,si,.nt.$.sg.$.loc.,3
+.nt.,ata,antaṃ,ṃ,.nt.$.sg.$.nom.,3
+.nt.,ata,anto,o,.nt.$.sg.$.nom.,3
+.nt.,ata,a,ā,.nt.$.sg.$.voc.,3
+.nt.,ata,ā,ṃ,.nt.$.sg.$.voc.,3
+.nt.,ata,aṃ,o,.nt.$.sg.$.voc.,3
+.f.,i,ībhi,bhi,.f.$.pl.$.abl.,1
+.f.,i,īhi,hi,.f.$.pl.$.abl.,1
+.f.,i,ī,ī,.f.$.pl.$.acc.,1
+.f.,i,iyo,yo,.f.$.pl.$.acc.,1
+.f.,i,yo,o,.f.$.pl.$.acc.,1
+.f.,i,īnaṃ,naṃ,.f.$.pl.$.dat.,1
+.f.,i,īnaṃ,naṃ,.f.$.pl.$.gen.,1
+.f.,i,ībhi,bhi,.f.$.pl.$.inst.,1
+.f.,i,īhi,hi,.f.$.pl.$.inst.,1
+.f.,i,īsu,su,.f.$.pl.$.loc.,1
+.f.,i,inī,ī,.f.$.pl.$.nom.,1
+.f.,i,iniyo,niyo,.f.$.pl.$.nom.,1
+.f.,i,inyo,nyo,.f.$.pl.$.nom.,1
+.f.,i,ī,ī,.f.$.pl.$.voc.,1
+.f.,i,iyo,yo,.f.$.pl.$.voc.,1
+.f.,i,yo,o,.f.$.pl.$.voc.,1
+.f.,i,iniyā,niyā,.f.$.sg.$.abl.,1
+.f.,i,inyā,nyā,.f.$.sg.$.abl.,1
+.f.,i,iniṃ,niṃ,.f.$.sg.$.acc.,1
+.f.,i,iniyā,niyā,.f.$.sg.$.dat.,1
+.f.,i,inyā,nyā,.f.$.sg.$.dat.,1
+.f.,i,iniyā,niyā,.f.$.sg.$.gen.,1
+.f.,i,inyā,nyā,.f.$.sg.$.gen.,1
+.f.,i,iniyā,niyā,.f.$.sg.$.inst.,1
+.f.,i,inyā,nyā,.f.$.sg.$.inst.,1
+.f.,i,iniyā,niyā,.f.$.sg.$.loc.,1
+.f.,i,iniyaṃ,niyaṃ,.f.$.sg.$.loc.,1
+.f.,i,inyā,nyā,.f.$.sg.$.loc.,1
+.f.,i,inyaṃ,nyaṃ,.f.$.sg.$.loc.,1
+.f.,i,inī,nī,.f.$.sg.$.nom.,1
+.f.,i,inī,nī,.f.$.sg.$.voc.,1
+.m.,i,ībhi,bhi,.m.$.pl.$.abl.,1
+.m.,i,īhi,hi,.m.$.pl.$.abl.,1
+.m.,i,āyo,yo,.m.$.pl.$.acc.,1
+.m.,i,ī,ī,.m.$.pl.$.acc.,1
+.m.,i,īnaṃ,naṃ,.m.$.pl.$.dat.,1
+.m.,i,īnaṃ,naṃ,.m.$.pl.$.gen.,1
+.m.,i,ībhi,bhi,.m.$.pl.$.inst.,1
+.m.,i,īhi,hi,.m.$.pl.$.inst.,1
+.m.,i,īsu,su,.m.$.pl.$.loc.,1
+.m.,i,āyo,yo,.m.$.pl.$.nom.,1
+.m.,i,ī,ī,.m.$.pl.$.nom.,1
+.m.,i,āyo,yo,.m.$.pl.$.voc.,1
+.m.,i,ī,ī,.m.$.pl.$.voc.,1
+.m.,i,imhā,mhā,.m.$.sg.$.abl.,1
+.m.,i,inā,nā,.m.$.sg.$.abl.,1
+.m.,i,ismā,smā,.m.$.sg.$.abl.,1
+.m.,i,iṃ,ṃ,.m.$.sg.$.acc.,1
+.m.,i,ino,no,.m.$.sg.$.dat.,1
+.m.,i,issa,ssa,.m.$.sg.$.dat.,1
+.m.,i,ino,no,.m.$.sg.$.gen.,1
+.m.,i,issa,ssa,.m.$.sg.$.gen.,1
+.m.,i,inā,nā,.m.$.sg.$.inst.,1
+.m.,i,imhi,mhi,.m.$.sg.$.loc.,1
+.m.,i,ismiṃ,smiṃ,.m.$.sg.$.loc.,1
+.m.,i,i,i,.m.$.sg.$.nom.,1
+.m.,i,i,i,.m.$.sg.$.voc.,1
+.nt.,i,ībhi,bhi,.nt.$.pl.$.abl.,1
+.nt.,i,īhi,hi,.nt.$.pl.$.abl.,1
+.nt.,i,ī,ī,.nt.$.pl.$.acc.,1
+.nt.,i,īni,ni,.nt.$.pl.$.acc.,1
+.nt.,i,īnaṃ,naṃ,.nt.$.pl.$.dat.,1
+.nt.,i,īnaṃ,naṃ,.nt.$.pl.$.gen.,1
+.nt.,i,ībhi,bhi,.nt.$.pl.$.inst.,1
+.nt.,i,īhi,hi,.nt.$.pl.$.inst.,1
+.nt.,i,īsu,su,.nt.$.pl.$.loc.,1
+.nt.,i,ī,ī,.nt.$.pl.$.nom.,1
+.nt.,i,īni,ni,.nt.$.pl.$.nom.,1
+.nt.,i,ī,ī,.nt.$.pl.$.voc.,1
+.nt.,i,īni,ni,.nt.$.pl.$.voc.,1
+.nt.,i,imhā,mhā,.nt.$.sg.$.abl.,1
+.nt.,i,inā,nā,.nt.$.sg.$.abl.,1
+.nt.,i,ismā,smā,.nt.$.sg.$.abl.,1
+.nt.,i,iṃ,ṃ,.nt.$.sg.$.acc.,1
+.nt.,i,assa,ssa,.nt.$.sg.$.dat.,1
+.nt.,i,ino,no,.nt.$.sg.$.dat.,1
+.nt.,i,assa,ssa,.nt.$.sg.$.gen.,1
+.nt.,i,ino,no,.nt.$.sg.$.gen.,1
+.nt.,i,inā,nā,.nt.$.sg.$.inst.,1
+.nt.,i,imhi,mhi,.nt.$.sg.$.loc.,1
+.nt.,i,ismiṃ,smiṃ,.nt.$.sg.$.loc.,1
+.nt.,i,i,i,.nt.$.sg.$.nom.,1
+.nt.,i,i,i,.nt.$.sg.$.voc.,1
+.f.,ī,inībhi,nībhi,.f.$.pl.$.abl.,1
+.f.,ī,inīhi,nīhi,.f.$.pl.$.abl.,1
+.f.,ī,inī,ni,.f.$.pl.$.acc.,1
+.f.,ī,iniyo,niyo,.f.$.pl.$.acc.,1
+.f.,ī,inīnaṃ,nīnaṃ,.f.$.pl.$.dat.,1
+.f.,ī,inīnaṃ,nīnaṃ,.f.$.pl.$.gen.,1
+.f.,ī,inībhi,nībhi,.f.$.pl.$.inst.,1
+.f.,ī,inīhi,nīhi,.f.$.pl.$.inst.,1
+.f.,ī,inīsu,nīsu,.f.$.pl.$.loc.,1
+.f.,ī,inī,nī,.f.$.pl.$.nom.,1
+.f.,ī,iniyo,niyo,.f.$.pl.$.nom.,1
+.f.,ī,inī,ni,.f.$.pl.$.voc.,1
+.f.,ī,iniyā,niyā,.f.$.sg.$.abl.,1
+.f.,ī,inyā,niyā,.f.$.sg.$.abl.,1
+.f.,ī,iniṃ,ṃ,.f.$.sg.$.acc.,1
+.f.,ī,iniyā,niyā,.f.$.sg.$.dat.,1
+.f.,ī,inyā,niyā,.f.$.sg.$.dat.,1
+.f.,ī,iniyā,niyā,.f.$.sg.$.gen.,1
+.f.,ī,inyā,niyā,.f.$.sg.$.gen.,1
+.f.,ī,iniyā,niyā,.f.$.sg.$.inst.,1
+.f.,ī,inyā,niyā,.f.$.sg.$.inst.,1
+.f.,ī,iniyā,niyā,.f.$.sg.$.loc.,1
+.f.,ī,iniyaṃ,niyaṃ,.f.$.sg.$.loc.,1
+.f.,ī,inyā,nyā,.f.$.sg.$.loc.,1
+.f.,ī,inyaṃ,nyaṃ,.f.$.sg.$.loc.,1
+.f.,ī,inī,nī,.f.$.sg.$.nom.,1
+.f.,ī,iniyo,niyo,.f.$.sg.$.nom.,1
+.f.,ī,inyo,nyo,.f.$.sg.$.nom.,1
+.f.,ī,inī,ī,.f.$.sg.$.voc.,1
+.m.,ī,ībhi,bhi,.m.$.pl.$.abl.,1
+.m.,ī,īhi,hi,.m.$.pl.$.abl.,1
+.m.,ī,ī,ī,.m.$.pl.$.acc.,1
+.m.,ī,ino,o,.m.$.pl.$.acc.,1
+.m.,ī,inaṃ,naṃ,.m.$.pl.$.dat.,1
+.m.,ī,inaṃ,naṃ,.m.$.pl.$.gen.,1
+.m.,ī,ībhi,bhi,.m.$.pl.$.inst.,1
+.m.,ī,īhi,hi,.m.$.pl.$.inst.,1
+.m.,ī,īsu,su,.m.$.pl.$.loc.,1
+.m.,ī,ī,ī,.m.$.pl.$.nom.,1
+.m.,ī,ino,o,.m.$.pl.$.nom.,1
+.m.,ī,ī,ī,.m.$.pl.$.voc.,1
+.m.,ī,ino,o,.m.$.pl.$.voc.,1
+.m.,ī,imhā,mhā,.m.$.sg.$.abl.,1
+.m.,ī,inā,nā,.m.$.sg.$.abl.,1
+.m.,ī,ismā,smā,.m.$.sg.$.abl.,1
+.m.,ī,iṃ,ṃ,.m.$.sg.$.acc.,1
+.m.,ī,inaṃ,naṃ,.m.$.sg.$.acc.,1
+.m.,ī,ino,o,.m.$.sg.$.dat.,1
+.m.,ī,issa,ssa,.m.$.sg.$.dat.,1
+.m.,ī,ino,o,.m.$.sg.$.gen.,1
+.m.,ī,issa,ssa,.m.$.sg.$.gen.,1
+.m.,ī,inā,nā,.m.$.sg.$.inst.,1
+.m.,ī,imhi,mhi,.m.$.sg.$.loc.,1
+.m.,ī,ini,ni,.m.$.sg.$.loc.,1
+.m.,ī,ismiṃ,smiṃ,.m.$.sg.$.loc.,1
+.m.,ī,ī,ī,.m.$.sg.$.nom.,1
+.m.,ī,i,ī,.m.$.sg.$.voc.,1
+.nt.,ī,ībhi,bhi,.nt.$.pl.$.abl.,1
+.nt.,ī,īhi,hi,.nt.$.pl.$.abl.,1
+.nt.,ī,i,ī,.nt.$.pl.$.acc.,1
+.nt.,ī,īni,ni,.nt.$.pl.$.acc.,1
+.nt.,ī,īnaṃ,naṃ,.nt.$.pl.$.dat.,1
+.nt.,ī,īnaṃ,naṃ,.nt.$.pl.$.gen.,1
+.nt.,ī,ībhi,bhi,.nt.$.pl.$.inst.,1
+.nt.,ī,īhi,hi,.nt.$.pl.$.inst.,1
+.nt.,ī,īsu,su,.nt.$.pl.$.loc.,1
+.nt.,ī,ī,ī,.nt.$.pl.$.nom.,1
+.nt.,ī,īni,ni,.nt.$.pl.$.nom.,1
+.nt.,ī,ī,ī,.nt.$.pl.$.voc.,1
+.nt.,ī,imhā,mhā,.nt.$.sg.$.abl.,1
+.nt.,ī,inā,nā,.nt.$.sg.$.abl.,1
+.nt.,ī,ismā,smā,.nt.$.sg.$.abl.,1
+.nt.,ī,iṃ,ṃ,.nt.$.sg.$.acc.,1
+.nt.,ī,inaṃ,naṃ,.nt.$.sg.$.acc.,1
+.nt.,ī,ino,no,.nt.$.sg.$.dat.,1
+.nt.,ī,issa,ssa,.nt.$.sg.$.dat.,1
+.nt.,ī,ino,no,.nt.$.sg.$.gen.,1
+.nt.,ī,issa,ssa,.nt.$.sg.$.gen.,1
+.nt.,ī,inā,nā,.nt.$.sg.$.inst.,1
+.nt.,ī,imhi,mhi,.nt.$.sg.$.loc.,1
+.nt.,ī,ismiṃ,smiṃ,.nt.$.sg.$.loc.,1
+.nt.,ī,i,i,.nt.$.sg.$.nom.,1
+.nt.,ī,i,i,.nt.$.sg.$.voc.,1
+.f.,in,inībhi,nībhi,.f.$.pl.$.abl.,2
+.f.,in,inīhi,nīhi,.f.$.pl.$.abl.,2
+.f.,in,inī,ni,.f.$.pl.$.acc.,2
+.f.,in,iniyo,niyo,.f.$.pl.$.acc.,2
+.f.,in,inīnaṃ,nīnaṃ,.f.$.pl.$.dat.,2
+.f.,in,inīnaṃ,nīnaṃ,.f.$.pl.$.gen.,2
+.f.,in,inībhi,nībhi,.f.$.pl.$.inst.,2
+.f.,in,inīhi,nīhi,.f.$.pl.$.inst.,2
+.f.,in,inīsu,nīsu,.f.$.pl.$.loc.,2
+.f.,in,inī,nī,.f.$.pl.$.nom.,2
+.f.,in,iniyo,niyo,.f.$.pl.$.nom.,2
+.f.,in,inī,ni,.f.$.pl.$.voc.,2
+.f.,in,iniyā,niyā,.f.$.sg.$.abl.,2
+.f.,in,inyā,niyā,.f.$.sg.$.abl.,2
+.f.,in,iniṃ,ṃ,.f.$.sg.$.acc.,2
+.f.,in,iniyā,niyā,.f.$.sg.$.dat.,2
+.f.,in,inyā,niyā,.f.$.sg.$.dat.,2
+.f.,in,iniyā,niyā,.f.$.sg.$.gen.,2
+.f.,in,inyā,niyā,.f.$.sg.$.gen.,2
+.f.,in,iniyā,niyā,.f.$.sg.$.inst.,2
+.f.,in,inyā,niyā,.f.$.sg.$.inst.,2
+.f.,in,iniyā,niyā,.f.$.sg.$.loc.,2
+.f.,in,iniyaṃ,niyaṃ,.f.$.sg.$.loc.,2
+.f.,in,inyā,nyā,.f.$.sg.$.loc.,2
+.f.,in,inyaṃ,nyaṃ,.f.$.sg.$.loc.,2
+.f.,in,inī,nī,.f.$.sg.$.nom.,2
+.f.,in,iniyo,niyo,.f.$.sg.$.nom.,2
+.f.,in,inyo,nyo,.f.$.sg.$.nom.,2
+.f.,in,inī,ī,.f.$.sg.$.voc.,2
+.m.,in,ībhi,bhi,.m.$.pl.$.abl.,2
+.m.,in,īhi,hi,.m.$.pl.$.abl.,2
+.m.,in,ī,ī,.m.$.pl.$.acc.,2
+.m.,in,ino,o,.m.$.pl.$.acc.,2
+.m.,in,inaṃ,naṃ,.m.$.pl.$.dat.,2
+.m.,in,inaṃ,naṃ,.m.$.pl.$.gen.,2
+.m.,in,ībhi,bhi,.m.$.pl.$.inst.,2
+.m.,in,īhi,hi,.m.$.pl.$.inst.,2
+.m.,in,īsu,su,.m.$.pl.$.loc.,2
+.m.,in,ī,ī,.m.$.pl.$.nom.,2
+.m.,in,ino,o,.m.$.pl.$.nom.,2
+.m.,in,ī,ī,.m.$.pl.$.voc.,2
+.m.,in,ino,o,.m.$.pl.$.voc.,2
+.m.,in,imhā,mhā,.m.$.sg.$.abl.,2
+.m.,in,inā,nā,.m.$.sg.$.abl.,2
+.m.,in,ismā,smā,.m.$.sg.$.abl.,2
+.m.,in,iṃ,ṃ,.m.$.sg.$.acc.,2
+.m.,in,inaṃ,naṃ,.m.$.sg.$.acc.,2
+.m.,in,ino,o,.m.$.sg.$.dat.,2
+.m.,in,issa,ssa,.m.$.sg.$.dat.,2
+.m.,in,ino,o,.m.$.sg.$.gen.,2
+.m.,in,issa,ssa,.m.$.sg.$.gen.,2
+.m.,in,inā,nā,.m.$.sg.$.inst.,2
+.m.,in,imhi,mhi,.m.$.sg.$.loc.,2
+.m.,in,ini,ni,.m.$.sg.$.loc.,2
+.m.,in,ismiṃ,smiṃ,.m.$.sg.$.loc.,2
+.m.,in,ī,ī,.m.$.sg.$.nom.,2
+.m.,in,i,ī,.m.$.sg.$.voc.,2
+.nt.,in,ībhi,bhi,.nt.$.pl.$.abl.,2
+.nt.,in,īhi,hi,.nt.$.pl.$.abl.,2
+.nt.,in,i,ī,.nt.$.pl.$.acc.,2
+.nt.,in,īni,ni,.nt.$.pl.$.acc.,2
+.nt.,in,īnaṃ,naṃ,.nt.$.pl.$.dat.,2
+.nt.,in,īnaṃ,naṃ,.nt.$.pl.$.gen.,2
+.nt.,in,ībhi,bhi,.nt.$.pl.$.inst.,2
+.nt.,in,īhi,hi,.nt.$.pl.$.inst.,2
+.nt.,in,īsu,su,.nt.$.pl.$.loc.,2
+.nt.,in,ī,ī,.nt.$.pl.$.nom.,2
+.nt.,in,īni,ni,.nt.$.pl.$.nom.,2
+.nt.,in,ī,ī,.nt.$.pl.$.voc.,2
+.nt.,in,imhā,mhā,.nt.$.sg.$.abl.,2
+.nt.,in,inā,nā,.nt.$.sg.$.abl.,2
+.nt.,in,ismā,smā,.nt.$.sg.$.abl.,2
+.nt.,in,iṃ,ṃ,.nt.$.sg.$.acc.,2
+.nt.,in,inaṃ,naṃ,.nt.$.sg.$.acc.,2
+.nt.,in,ino,no,.nt.$.sg.$.dat.,2
+.nt.,in,issa,ssa,.nt.$.sg.$.dat.,2
+.nt.,in,ino,no,.nt.$.sg.$.gen.,2
+.nt.,in,issa,ssa,.nt.$.sg.$.gen.,2
+.nt.,in,inā,nā,.nt.$.sg.$.inst.,2
+.nt.,in,imhi,mhi,.nt.$.sg.$.loc.,2
+.nt.,in,ismiṃ,smiṃ,.nt.$.sg.$.loc.,2
+.nt.,in,i,i,.nt.$.sg.$.nom.,2
+.nt.,in,i,i,.nt.$.sg.$.voc.,2
+.f.,mā,mantībhi,ībhi,.f.$.pl.$.abl.,2
+.f.,mā,mantīhi,īhi,.f.$.pl.$.abl.,2
+.f.,mā,matībhi,ībhi,.f.$.pl.$.abl.,2
+.f.,mā,matīhi,īhi,.f.$.pl.$.abl.,2
+.f.,mā,mantī,ī,.f.$.pl.$.acc.,2
+.f.,mā,mantiyo,iyo,.f.$.pl.$.acc.,2
+.f.,mā,matī,ī,.f.$.pl.$.acc.,2
+.f.,mā,matiyo,iyo,.f.$.pl.$.acc.,2
+.f.,mā,mantīnaṃ,īnaṃ,.f.$.pl.$.dat.,2
+.f.,mā,matīnaṃ,īnaṃ,.f.$.pl.$.dat.,2
+.f.,mā,mantīnaṃ,īnaṃ,.f.$.pl.$.gen.,2
+.f.,mā,matīnaṃ,īnaṃ,.f.$.pl.$.gen.,2
+.f.,mā,mantībhi,ībhi,.f.$.pl.$.inst.,2
+.f.,mā,mantīhi,īhi,.f.$.pl.$.inst.,2
+.f.,mā,matībhi,ībhi,.f.$.pl.$.inst.,2
+.f.,mā,matīhi,īhi,.f.$.pl.$.inst.,2
+.f.,mā,mantīsu,īsu,.f.$.pl.$.loc.,2
+.f.,mā,matīsu,īsu,.f.$.pl.$.loc.,2
+.f.,mā,mantī,ī,.f.$.pl.$.nom.,2
+.f.,mā,mantiyo,iyo,.f.$.pl.$.nom.,2
+.f.,mā,matī,ī,.f.$.pl.$.nom.,2
+.f.,mā,matiyo,iyo,.f.$.pl.$.nom.,2
+.f.,mā,mantī,ī,.f.$.pl.$.voc.,2
+.f.,mā,mantiyo,iyo,.f.$.pl.$.voc.,2
+.f.,mā,matī,ī,.f.$.pl.$.voc.,2
+.f.,mā,matiyo,iyo,.f.$.pl.$.voc.,2
+.f.,mā,mantiyā,iyā,.f.$.sg.$.abl.,2
+.f.,mā,matiyā,iyā,.f.$.sg.$.abl.,2
+.f.,mā,mantiṃ,iṃ,.f.$.sg.$.acc.,2
+.f.,mā,matiṃ,iṃ,.f.$.sg.$.acc.,2
+.f.,mā,mantiyā,iyā,.f.$.sg.$.dat.,2
+.f.,mā,matiyā,iyā,.f.$.sg.$.dat.,2
+.f.,mā,mantiyā,iyā,.f.$.sg.$.gen.,2
+.f.,mā,matiyā,iyā,.f.$.sg.$.gen.,2
+.f.,mā,mantiyā,iyā,.f.$.sg.$.inst.,2
+.f.,mā,matiyā,iyā,.f.$.sg.$.inst.,2
+.f.,mā,mantiyā,iyā,.f.$.sg.$.loc.,2
+.f.,mā,mantiyaṃ,iyaṃ,.f.$.sg.$.loc.,2
+.f.,mā,matiyā,iyā,.f.$.sg.$.loc.,2
+.f.,mā,matiyaṃ,iyaṃ,.f.$.sg.$.loc.,2
+.f.,mā,mantī,ī,.f.$.sg.$.nom.,2
+.f.,mā,matī,ī,.f.$.sg.$.nom.,2
+.f.,mā,mantī,ī,.f.$.sg.$.voc.,2
+.f.,mā,matī,ī,.f.$.sg.$.voc.,2
+.m.,mā,mantebhi,ebhi,.m.$.pl.$.abl.,2
+.m.,mā,mantehi,ehi,.m.$.pl.$.abl.,2
+.m.,mā,mante,e,.m.$.pl.$.acc.,2
+.m.,mā,mantānaṃ,ānaṃ,.m.$.pl.$.dat.,2
+.m.,mā,mataṃ,aṃ,.m.$.pl.$.dat.,2
+.m.,mā,mantānaṃ,ānaṃ,.m.$.pl.$.gen.,2
+.m.,mā,mataṃ,aṃ,.m.$.pl.$.gen.,2
+.m.,mā,mantebhi,ebhi,.m.$.pl.$.inst.,2
+.m.,mā,mantehi,ehi,.m.$.pl.$.inst.,2
+.m.,mā,mantesu,esu,.m.$.pl.$.loc.,2
+.m.,mā,mā,mā,.m.$.pl.$.nom.,2
+.m.,mā,mantā,ā,.m.$.pl.$.nom.,2
+.m.,mā,manto,o,.m.$.pl.$.nom.,2
+.m.,mā,mā,mā,.m.$.pl.$.voc.,2
+.m.,mā,mantā,ā,.m.$.pl.$.voc.,2
+.m.,mā,manto,o,.m.$.pl.$.voc.,2
+.m.,mā,mantā,ā,.m.$.sg.$.abl.,2
+.m.,mā,mantamhā,amhā,.m.$.sg.$.abl.,2
+.m.,mā,mantasmā,asmā,.m.$.sg.$.abl.,2
+.m.,mā,matā,ā,.m.$.sg.$.abl.,2
+.m.,mā,maṃ,maṃ,.m.$.sg.$.acc.,2
+.m.,mā,mantaṃ,aṃ,.m.$.sg.$.acc.,2
+.m.,mā,mantassa,assa,.m.$.sg.$.dat.,2
+.m.,mā,mato,o,.m.$.sg.$.dat.,2
+.m.,mā,mantassa,assa,.m.$.sg.$.gen.,2
+.m.,mā,mato,o,.m.$.sg.$.gen.,2
+.m.,mā,matā,ā,.m.$.sg.$.inst.,2
+.m.,mā,matena,ena,.m.$.sg.$.inst.,2
+.m.,mā,mantamhi,amhi,.m.$.sg.$.loc.,2
+.m.,mā,mantasmiṃ,asmiṃ,.m.$.sg.$.loc.,2
+.m.,mā,mante,e,.m.$.sg.$.loc.,2
+.m.,mā,mati,i,.m.$.sg.$.loc.,2
+.m.,mā,mā,mā,.m.$.sg.$.nom.,2
+.m.,mā,manto,o,.m.$.sg.$.nom.,2
+.m.,mā,ma,a,.m.$.sg.$.voc.,2
+.m.,mā,mā,ā,.m.$.sg.$.voc.,2
+.m.,mā,maṃ,ṃ,.m.$.sg.$.voc.,2
+.m.,mā,manta,a,.m.$.sg.$.voc.,2
+.m.,mā,mantā,ā,.m.$.sg.$.voc.,2
+.nt.,mā,mantebhi,ebhi,.nt.$.pl.$.abl.,2
+.nt.,mā,mantehi,ehi,.nt.$.pl.$.abl.,2
+.nt.,mā,mante,e,.nt.$.pl.$.acc.,2
+.nt.,mā,mantānaṃ,ānaṃ,.nt.$.pl.$.dat.,2
+.nt.,mā,mataṃ,aṃ,.nt.$.pl.$.dat.,2
+.nt.,mā,mantānaṃ,ānaṃ,.nt.$.pl.$.gen.,2
+.nt.,mā,mataṃ,aṃ,.nt.$.pl.$.gen.,2
+.nt.,mā,mantebhi,ebhi,.nt.$.pl.$.inst.,2
+.nt.,mā,mantehi,ehi,.nt.$.pl.$.inst.,2
+.nt.,mā,mantesu,esu,.nt.$.pl.$.loc.,2
+.nt.,mā,mā,mā,.nt.$.pl.$.nom.,2
+.nt.,mā,mantā,ā,.nt.$.pl.$.nom.,2
+.nt.,mā,manto,o,.nt.$.pl.$.nom.,2
+.nt.,mā,mā,mā,.nt.$.pl.$.voc.,2
+.nt.,mā,mantā,ā,.nt.$.pl.$.voc.,2
+.nt.,mā,manto,o,.nt.$.pl.$.voc.,2
+.nt.,mā,mantā,ā,.nt.$.sg.$.abl.,2
+.nt.,mā,mantamhā,amhā,.nt.$.sg.$.abl.,2
+.nt.,mā,mantasmā,asmā,.nt.$.sg.$.abl.,2
+.nt.,mā,matā,ā,.nt.$.sg.$.abl.,2
+.nt.,mā,maṃ,maṃ,.nt.$.sg.$.acc.,2
+.nt.,mā,mantaṃ,aṃ,.nt.$.sg.$.acc.,2
+.nt.,mā,mantassa,assa,.nt.$.sg.$.dat.,2
+.nt.,mā,mato,o,.nt.$.sg.$.dat.,2
+.nt.,mā,mantassa,assa,.nt.$.sg.$.gen.,2
+.nt.,mā,mato,o,.nt.$.sg.$.gen.,2
+.nt.,mā,matā,ā,.nt.$.sg.$.inst.,2
+.nt.,mā,matena,ena,.nt.$.sg.$.inst.,2
+.nt.,mā,mantamhi,amhi,.nt.$.sg.$.loc.,2
+.nt.,mā,mantasmiṃ,asmiṃ,.nt.$.sg.$.loc.,2
+.nt.,mā,mante,e,.nt.$.sg.$.loc.,2
+.nt.,mā,mati,i,.nt.$.sg.$.loc.,2
+.nt.,mā,maṃ,maṃ,.nt.$.sg.$.nom.,2
+.nt.,mā,mantaṃ,aṃ,.nt.$.sg.$.nom.,2
+.nt.,mā,ma,a,.nt.$.sg.$.voc.,2
+.nt.,mā,mā,ā,.nt.$.sg.$.voc.,2
+.nt.,mā,maṃ,ṃ,.nt.$.sg.$.voc.,2
+.nt.,mā,manta,a,.nt.$.sg.$.voc.,2
+.nt.,mā,mantā,ā,.nt.$.sg.$.voc.,2
+.f.,mant,mantībhi,ībhi,.f.$.pl.$.abl.,4
+.f.,mant,mantīhi,īhi,.f.$.pl.$.abl.,4
+.f.,mant,matībhi,ībhi,.f.$.pl.$.abl.,4
+.f.,mant,matīhi,īhi,.f.$.pl.$.abl.,4
+.f.,mant,mantī,ī,.f.$.pl.$.acc.,4
+.f.,mant,mantiyo,iyo,.f.$.pl.$.acc.,4
+.f.,mant,matī,ī,.f.$.pl.$.acc.,4
+.f.,mant,matiyo,iyo,.f.$.pl.$.acc.,4
+.f.,mant,mantīnaṃ,īnaṃ,.f.$.pl.$.dat.,4
+.f.,mant,matīnaṃ,īnaṃ,.f.$.pl.$.dat.,4
+.f.,mant,mantīnaṃ,īnaṃ,.f.$.pl.$.gen.,4
+.f.,mant,matīnaṃ,īnaṃ,.f.$.pl.$.gen.,4
+.f.,mant,mantībhi,ībhi,.f.$.pl.$.inst.,4
+.f.,mant,mantīhi,īhi,.f.$.pl.$.inst.,4
+.f.,mant,matībhi,ībhi,.f.$.pl.$.inst.,4
+.f.,mant,matīhi,īhi,.f.$.pl.$.inst.,4
+.f.,mant,mantīsu,īsu,.f.$.pl.$.loc.,4
+.f.,mant,matīsu,īsu,.f.$.pl.$.loc.,4
+.f.,mant,mantī,ī,.f.$.pl.$.nom.,4
+.f.,mant,mantiyo,iyo,.f.$.pl.$.nom.,4
+.f.,mant,matī,ī,.f.$.pl.$.nom.,4
+.f.,mant,matiyo,iyo,.f.$.pl.$.nom.,4
+.f.,mant,mantī,ī,.f.$.pl.$.voc.,4
+.f.,mant,mantiyo,iyo,.f.$.pl.$.voc.,4
+.f.,mant,matī,ī,.f.$.pl.$.voc.,4
+.f.,mant,matiyo,iyo,.f.$.pl.$.voc.,4
+.f.,mant,mantiyā,iyā,.f.$.sg.$.abl.,4
+.f.,mant,matiyā,iyā,.f.$.sg.$.abl.,4
+.f.,mant,mantiṃ,iṃ,.f.$.sg.$.acc.,4
+.f.,mant,matiṃ,iṃ,.f.$.sg.$.acc.,4
+.f.,mant,mantiyā,iyā,.f.$.sg.$.dat.,4
+.f.,mant,matiyā,iyā,.f.$.sg.$.dat.,4
+.f.,mant,mantiyā,iyā,.f.$.sg.$.gen.,4
+.f.,mant,matiyā,iyā,.f.$.sg.$.gen.,4
+.f.,mant,mantiyā,iyā,.f.$.sg.$.inst.,4
+.f.,mant,matiyā,iyā,.f.$.sg.$.inst.,4
+.f.,mant,mantiyā,iyā,.f.$.sg.$.loc.,4
+.f.,mant,mantiyaṃ,iyaṃ,.f.$.sg.$.loc.,4
+.f.,mant,matiyā,iyā,.f.$.sg.$.loc.,4
+.f.,mant,matiyaṃ,iyaṃ,.f.$.sg.$.loc.,4
+.f.,mant,mantī,ī,.f.$.sg.$.nom.,4
+.f.,mant,matī,ī,.f.$.sg.$.nom.,4
+.f.,mant,mantī,ī,.f.$.sg.$.voc.,4
+.f.,mant,matī,ī,.f.$.sg.$.voc.,4
+.m.,mant,mantebhi,ebhi,.m.$.pl.$.abl.,4
+.m.,mant,mantehi,ehi,.m.$.pl.$.abl.,4
+.m.,mant,mante,e,.m.$.pl.$.acc.,4
+.m.,mant,mantānaṃ,ānaṃ,.m.$.pl.$.dat.,4
+.m.,mant,mataṃ,aṃ,.m.$.pl.$.dat.,4
+.m.,mant,mantānaṃ,ānaṃ,.m.$.pl.$.gen.,4
+.m.,mant,mataṃ,aṃ,.m.$.pl.$.gen.,4
+.m.,mant,mantebhi,ebhi,.m.$.pl.$.inst.,4
+.m.,mant,mantehi,ehi,.m.$.pl.$.inst.,4
+.m.,mant,mantesu,esu,.m.$.pl.$.loc.,4
+.m.,mant,mā,mā,.m.$.pl.$.nom.,4
+.m.,mant,mantā,ā,.m.$.pl.$.nom.,4
+.m.,mant,manto,o,.m.$.pl.$.nom.,4
+.m.,mant,mā,mā,.m.$.pl.$.voc.,4
+.m.,mant,mantā,ā,.m.$.pl.$.voc.,4
+.m.,mant,manto,o,.m.$.pl.$.voc.,4
+.m.,mant,mantā,ā,.m.$.sg.$.abl.,4
+.m.,mant,mantamhā,amhā,.m.$.sg.$.abl.,4
+.m.,mant,mantasmā,asmā,.m.$.sg.$.abl.,4
+.m.,mant,matā,ā,.m.$.sg.$.abl.,4
+.m.,mant,maṃ,maṃ,.m.$.sg.$.acc.,4
+.m.,mant,mantaṃ,aṃ,.m.$.sg.$.acc.,4
+.m.,mant,mantassa,assa,.m.$.sg.$.dat.,4
+.m.,mant,mato,o,.m.$.sg.$.dat.,4
+.m.,mant,mantassa,assa,.m.$.sg.$.gen.,4
+.m.,mant,mato,o,.m.$.sg.$.gen.,4
+.m.,mant,matā,ā,.m.$.sg.$.inst.,4
+.m.,mant,matena,ena,.m.$.sg.$.inst.,4
+.m.,mant,mantamhi,amhi,.m.$.sg.$.loc.,4
+.m.,mant,mantasmiṃ,asmiṃ,.m.$.sg.$.loc.,4
+.m.,mant,mante,e,.m.$.sg.$.loc.,4
+.m.,mant,mati,i,.m.$.sg.$.loc.,4
+.m.,mant,mā,mā,.m.$.sg.$.nom.,4
+.m.,mant,manto,o,.m.$.sg.$.nom.,4
+.m.,mant,ma,a,.m.$.sg.$.voc.,4
+.m.,mant,mā,ā,.m.$.sg.$.voc.,4
+.m.,mant,maṃ,ṃ,.m.$.sg.$.voc.,4
+.m.,mant,manta,a,.m.$.sg.$.voc.,4
+.m.,mant,mantā,ā,.m.$.sg.$.voc.,4
+.nt.,mant,mantebhi,ebhi,.nt.$.pl.$.abl.,4
+.nt.,mant,mantehi,ehi,.nt.$.pl.$.abl.,4
+.nt.,mant,mante,e,.nt.$.pl.$.acc.,4
+.nt.,mant,mantānaṃ,ānaṃ,.nt.$.pl.$.dat.,4
+.nt.,mant,mataṃ,aṃ,.nt.$.pl.$.dat.,4
+.nt.,mant,mantānaṃ,ānaṃ,.nt.$.pl.$.gen.,4
+.nt.,mant,mataṃ,aṃ,.nt.$.pl.$.gen.,4
+.nt.,mant,mantebhi,ebhi,.nt.$.pl.$.inst.,4
+.nt.,mant,mantehi,ehi,.nt.$.pl.$.inst.,4
+.nt.,mant,mantesu,esu,.nt.$.pl.$.loc.,4
+.nt.,mant,mā,mā,.nt.$.pl.$.nom.,4
+.nt.,mant,mantā,ā,.nt.$.pl.$.nom.,4
+.nt.,mant,manto,o,.nt.$.pl.$.nom.,4
+.nt.,mant,mā,mā,.nt.$.pl.$.voc.,4
+.nt.,mant,mantā,ā,.nt.$.pl.$.voc.,4
+.nt.,mant,manto,o,.nt.$.pl.$.voc.,4
+.nt.,mant,mantā,ā,.nt.$.sg.$.abl.,4
+.nt.,mant,mantamhā,amhā,.nt.$.sg.$.abl.,4
+.nt.,mant,mantasmā,asmā,.nt.$.sg.$.abl.,4
+.nt.,mant,matā,ā,.nt.$.sg.$.abl.,4
+.nt.,mant,maṃ,maṃ,.nt.$.sg.$.acc.,4
+.nt.,mant,mantaṃ,aṃ,.nt.$.sg.$.acc.,4
+.nt.,mant,mantassa,assa,.nt.$.sg.$.dat.,4
+.nt.,mant,mato,o,.nt.$.sg.$.dat.,4
+.nt.,mant,mantassa,assa,.nt.$.sg.$.gen.,4
+.nt.,mant,mato,o,.nt.$.sg.$.gen.,4
+.nt.,mant,matā,ā,.nt.$.sg.$.inst.,4
+.nt.,mant,matena,ena,.nt.$.sg.$.inst.,4
+.nt.,mant,mantamhi,amhi,.nt.$.sg.$.loc.,4
+.nt.,mant,mantasmiṃ,asmiṃ,.nt.$.sg.$.loc.,4
+.nt.,mant,mante,e,.nt.$.sg.$.loc.,4
+.nt.,mant,mati,i,.nt.$.sg.$.loc.,4
+.nt.,mant,maṃ,maṃ,.nt.$.sg.$.nom.,4
+.nt.,mant,mantaṃ,aṃ,.nt.$.sg.$.nom.,4
+.nt.,mant,ma,a,.nt.$.sg.$.voc.,4
+.nt.,mant,mā,ā,.nt.$.sg.$.voc.,4
+.nt.,mant,maṃ,ṃ,.nt.$.sg.$.voc.,4
+.nt.,mant,manta,a,.nt.$.sg.$.voc.,4
+.nt.,mant,mantā,ā,.nt.$.sg.$.voc.,4
+.f.,manta,mantībhi,ībhi,.f.$.pl.$.abl.,5
+.f.,manta,mantīhi,īhi,.f.$.pl.$.abl.,5
+.f.,manta,matībhi,ībhi,.f.$.pl.$.abl.,5
+.f.,manta,matīhi,īhi,.f.$.pl.$.abl.,5
+.f.,manta,mantī,ī,.f.$.pl.$.acc.,5
+.f.,manta,mantiyo,iyo,.f.$.pl.$.acc.,5
+.f.,manta,matī,ī,.f.$.pl.$.acc.,5
+.f.,manta,matiyo,iyo,.f.$.pl.$.acc.,5
+.f.,manta,mantīnaṃ,īnaṃ,.f.$.pl.$.dat.,5
+.f.,manta,matīnaṃ,īnaṃ,.f.$.pl.$.dat.,5
+.f.,manta,mantīnaṃ,īnaṃ,.f.$.pl.$.gen.,5
+.f.,manta,matīnaṃ,īnaṃ,.f.$.pl.$.gen.,5
+.f.,manta,mantībhi,ībhi,.f.$.pl.$.inst.,5
+.f.,manta,mantīhi,īhi,.f.$.pl.$.inst.,5
+.f.,manta,matībhi,ībhi,.f.$.pl.$.inst.,5
+.f.,manta,matīhi,īhi,.f.$.pl.$.inst.,5
+.f.,manta,mantīsu,īsu,.f.$.pl.$.loc.,5
+.f.,manta,matīsu,īsu,.f.$.pl.$.loc.,5
+.f.,manta,mantī,ī,.f.$.pl.$.nom.,5
+.f.,manta,mantiyo,iyo,.f.$.pl.$.nom.,5
+.f.,manta,matī,ī,.f.$.pl.$.nom.,5
+.f.,manta,matiyo,iyo,.f.$.pl.$.nom.,5
+.f.,manta,mantī,ī,.f.$.pl.$.voc.,5
+.f.,manta,mantiyo,iyo,.f.$.pl.$.voc.,5
+.f.,manta,matī,ī,.f.$.pl.$.voc.,5
+.f.,manta,matiyo,iyo,.f.$.pl.$.voc.,5
+.f.,manta,mantiyā,iyā,.f.$.sg.$.abl.,5
+.f.,manta,matiyā,iyā,.f.$.sg.$.abl.,5
+.f.,manta,mantiṃ,iṃ,.f.$.sg.$.acc.,5
+.f.,manta,matiṃ,iṃ,.f.$.sg.$.acc.,5
+.f.,manta,mantiyā,iyā,.f.$.sg.$.dat.,5
+.f.,manta,matiyā,iyā,.f.$.sg.$.dat.,5
+.f.,manta,mantiyā,iyā,.f.$.sg.$.gen.,5
+.f.,manta,matiyā,iyā,.f.$.sg.$.gen.,5
+.f.,manta,mantiyā,iyā,.f.$.sg.$.inst.,5
+.f.,manta,matiyā,iyā,.f.$.sg.$.inst.,5
+.f.,manta,mantiyā,iyā,.f.$.sg.$.loc.,5
+.f.,manta,mantiyaṃ,iyaṃ,.f.$.sg.$.loc.,5
+.f.,manta,matiyā,iyā,.f.$.sg.$.loc.,5
+.f.,manta,matiyaṃ,iyaṃ,.f.$.sg.$.loc.,5
+.f.,manta,mantī,ī,.f.$.sg.$.nom.,5
+.f.,manta,matī,ī,.f.$.sg.$.nom.,5
+.f.,manta,mantī,ī,.f.$.sg.$.voc.,5
+.f.,manta,matī,ī,.f.$.sg.$.voc.,5
+.m.,manta,mantebhi,ebhi,.m.$.pl.$.abl.,5
+.m.,manta,mantehi,ehi,.m.$.pl.$.abl.,5
+.m.,manta,mante,e,.m.$.pl.$.acc.,5
+.m.,manta,mantānaṃ,ānaṃ,.m.$.pl.$.dat.,5
+.m.,manta,mataṃ,aṃ,.m.$.pl.$.dat.,5
+.m.,manta,mantānaṃ,ānaṃ,.m.$.pl.$.gen.,5
+.m.,manta,mataṃ,aṃ,.m.$.pl.$.gen.,5
+.m.,manta,mantebhi,ebhi,.m.$.pl.$.inst.,5
+.m.,manta,mantehi,ehi,.m.$.pl.$.inst.,5
+.m.,manta,mantesu,esu,.m.$.pl.$.loc.,5
+.m.,manta,mā,mā,.m.$.pl.$.nom.,5
+.m.,manta,mantā,ā,.m.$.pl.$.nom.,5
+.m.,manta,manto,o,.m.$.pl.$.nom.,5
+.m.,manta,mā,mā,.m.$.pl.$.voc.,5
+.m.,manta,mantā,ā,.m.$.pl.$.voc.,5
+.m.,manta,manto,o,.m.$.pl.$.voc.,5
+.m.,manta,mantā,ā,.m.$.sg.$.abl.,5
+.m.,manta,mantamhā,amhā,.m.$.sg.$.abl.,5
+.m.,manta,mantasmā,asmā,.m.$.sg.$.abl.,5
+.m.,manta,matā,ā,.m.$.sg.$.abl.,5
+.m.,manta,maṃ,maṃ,.m.$.sg.$.acc.,5
+.m.,manta,mantaṃ,aṃ,.m.$.sg.$.acc.,5
+.m.,manta,mantassa,assa,.m.$.sg.$.dat.,5
+.m.,manta,mato,o,.m.$.sg.$.dat.,5
+.m.,manta,mantassa,assa,.m.$.sg.$.gen.,5
+.m.,manta,mato,o,.m.$.sg.$.gen.,5
+.m.,manta,matā,ā,.m.$.sg.$.inst.,5
+.m.,manta,matena,ena,.m.$.sg.$.inst.,5
+.m.,manta,mantamhi,amhi,.m.$.sg.$.loc.,5
+.m.,manta,mantasmiṃ,asmiṃ,.m.$.sg.$.loc.,5
+.m.,manta,mante,e,.m.$.sg.$.loc.,5
+.m.,manta,mati,i,.m.$.sg.$.loc.,5
+.m.,manta,mā,mā,.m.$.sg.$.nom.,5
+.m.,manta,manto,o,.m.$.sg.$.nom.,5
+.m.,manta,ma,a,.m.$.sg.$.voc.,5
+.m.,manta,mā,ā,.m.$.sg.$.voc.,5
+.m.,manta,maṃ,ṃ,.m.$.sg.$.voc.,5
+.m.,manta,manta,a,.m.$.sg.$.voc.,5
+.m.,manta,mantā,ā,.m.$.sg.$.voc.,5
+.nt.,manta,mantebhi,ebhi,.nt.$.pl.$.abl.,5
+.nt.,manta,mantehi,ehi,.nt.$.pl.$.abl.,5
+.nt.,manta,mante,e,.nt.$.pl.$.acc.,5
+.nt.,manta,mantānaṃ,ānaṃ,.nt.$.pl.$.dat.,5
+.nt.,manta,mataṃ,aṃ,.nt.$.pl.$.dat.,5
+.nt.,manta,mantānaṃ,ānaṃ,.nt.$.pl.$.gen.,5
+.nt.,manta,mataṃ,aṃ,.nt.$.pl.$.gen.,5
+.nt.,manta,mantebhi,ebhi,.nt.$.pl.$.inst.,5
+.nt.,manta,mantehi,ehi,.nt.$.pl.$.inst.,5
+.nt.,manta,mantesu,esu,.nt.$.pl.$.loc.,5
+.nt.,manta,mā,mā,.nt.$.pl.$.nom.,5
+.nt.,manta,mantā,ā,.nt.$.pl.$.nom.,5
+.nt.,manta,manto,o,.nt.$.pl.$.nom.,5
+.nt.,manta,mā,mā,.nt.$.pl.$.voc.,5
+.nt.,manta,mantā,ā,.nt.$.pl.$.voc.,5
+.nt.,manta,manto,o,.nt.$.pl.$.voc.,5
+.nt.,manta,mantā,ā,.nt.$.sg.$.abl.,5
+.nt.,manta,mantamhā,amhā,.nt.$.sg.$.abl.,5
+.nt.,manta,mantasmā,asmā,.nt.$.sg.$.abl.,5
+.nt.,manta,matā,ā,.nt.$.sg.$.abl.,5
+.nt.,manta,maṃ,maṃ,.nt.$.sg.$.acc.,5
+.nt.,manta,mantaṃ,aṃ,.nt.$.sg.$.acc.,5
+.nt.,manta,mantassa,assa,.nt.$.sg.$.dat.,5
+.nt.,manta,mato,o,.nt.$.sg.$.dat.,5
+.nt.,manta,mantassa,assa,.nt.$.sg.$.gen.,5
+.nt.,manta,mato,o,.nt.$.sg.$.gen.,5
+.nt.,manta,matā,ā,.nt.$.sg.$.inst.,5
+.nt.,manta,matena,ena,.nt.$.sg.$.inst.,5
+.nt.,manta,mantamhi,amhi,.nt.$.sg.$.loc.,5
+.nt.,manta,mantasmiṃ,asmiṃ,.nt.$.sg.$.loc.,5
+.nt.,manta,mante,e,.nt.$.sg.$.loc.,5
+.nt.,manta,mati,i,.nt.$.sg.$.loc.,5
+.nt.,manta,maṃ,maṃ,.nt.$.sg.$.nom.,5
+.nt.,manta,mantaṃ,aṃ,.nt.$.sg.$.nom.,5
+.nt.,manta,ma,a,.nt.$.sg.$.voc.,5
+.nt.,manta,mā,ā,.nt.$.sg.$.voc.,5
+.nt.,manta,maṃ,ṃ,.nt.$.sg.$.voc.,5
+.nt.,manta,manta,a,.nt.$.sg.$.voc.,5
+.nt.,manta,mantā,ā,.nt.$.sg.$.voc.,5
+.f.,mat,mantībhi,ībhi,.f.$.pl.$.abl.,3
+.f.,mat,mantīhi,īhi,.f.$.pl.$.abl.,3
+.f.,mat,matībhi,ībhi,.f.$.pl.$.abl.,3
+.f.,mat,matīhi,īhi,.f.$.pl.$.abl.,3
+.f.,mat,mantī,ī,.f.$.pl.$.acc.,3
+.f.,mat,mantiyo,iyo,.f.$.pl.$.acc.,3
+.f.,mat,matī,ī,.f.$.pl.$.acc.,3
+.f.,mat,matiyo,iyo,.f.$.pl.$.acc.,3
+.f.,mat,mantīnaṃ,īnaṃ,.f.$.pl.$.dat.,3
+.f.,mat,matīnaṃ,īnaṃ,.f.$.pl.$.dat.,3
+.f.,mat,mantīnaṃ,īnaṃ,.f.$.pl.$.gen.,3
+.f.,mat,matīnaṃ,īnaṃ,.f.$.pl.$.gen.,3
+.f.,mat,mantībhi,ībhi,.f.$.pl.$.inst.,3
+.f.,mat,mantīhi,īhi,.f.$.pl.$.inst.,3
+.f.,mat,matībhi,ībhi,.f.$.pl.$.inst.,3
+.f.,mat,matīhi,īhi,.f.$.pl.$.inst.,3
+.f.,mat,mantīsu,īsu,.f.$.pl.$.loc.,3
+.f.,mat,matīsu,īsu,.f.$.pl.$.loc.,3
+.f.,mat,mantī,ī,.f.$.pl.$.nom.,3
+.f.,mat,mantiyo,iyo,.f.$.pl.$.nom.,3
+.f.,mat,matī,ī,.f.$.pl.$.nom.,3
+.f.,mat,matiyo,iyo,.f.$.pl.$.nom.,3
+.f.,mat,mantī,ī,.f.$.pl.$.voc.,3
+.f.,mat,mantiyo,iyo,.f.$.pl.$.voc.,3
+.f.,mat,matī,ī,.f.$.pl.$.voc.,3
+.f.,mat,matiyo,iyo,.f.$.pl.$.voc.,3
+.f.,mat,mantiyā,iyā,.f.$.sg.$.abl.,3
+.f.,mat,matiyā,iyā,.f.$.sg.$.abl.,3
+.f.,mat,mantiṃ,iṃ,.f.$.sg.$.acc.,3
+.f.,mat,matiṃ,iṃ,.f.$.sg.$.acc.,3
+.f.,mat,mantiyā,iyā,.f.$.sg.$.dat.,3
+.f.,mat,matiyā,iyā,.f.$.sg.$.dat.,3
+.f.,mat,mantiyā,iyā,.f.$.sg.$.gen.,3
+.f.,mat,matiyā,iyā,.f.$.sg.$.gen.,3
+.f.,mat,mantiyā,iyā,.f.$.sg.$.inst.,3
+.f.,mat,matiyā,iyā,.f.$.sg.$.inst.,3
+.f.,mat,mantiyā,iyā,.f.$.sg.$.loc.,3
+.f.,mat,mantiyaṃ,iyaṃ,.f.$.sg.$.loc.,3
+.f.,mat,matiyā,iyā,.f.$.sg.$.loc.,3
+.f.,mat,matiyaṃ,iyaṃ,.f.$.sg.$.loc.,3
+.f.,mat,mantī,ī,.f.$.sg.$.nom.,3
+.f.,mat,matī,ī,.f.$.sg.$.nom.,3
+.f.,mat,mantī,ī,.f.$.sg.$.voc.,3
+.f.,mat,matī,ī,.f.$.sg.$.voc.,3
+.m.,mat,mantebhi,ebhi,.m.$.pl.$.abl.,3
+.m.,mat,mantehi,ehi,.m.$.pl.$.abl.,3
+.m.,mat,mante,e,.m.$.pl.$.acc.,3
+.m.,mat,mantānaṃ,ānaṃ,.m.$.pl.$.dat.,3
+.m.,mat,mataṃ,aṃ,.m.$.pl.$.dat.,3
+.m.,mat,mantānaṃ,ānaṃ,.m.$.pl.$.gen.,3
+.m.,mat,mataṃ,aṃ,.m.$.pl.$.gen.,3
+.m.,mat,mantebhi,ebhi,.m.$.pl.$.inst.,3
+.m.,mat,mantehi,ehi,.m.$.pl.$.inst.,3
+.m.,mat,mantesu,esu,.m.$.pl.$.loc.,3
+.m.,mat,mā,mā,.m.$.pl.$.nom.,3
+.m.,mat,mantā,ā,.m.$.pl.$.nom.,3
+.m.,mat,manto,o,.m.$.pl.$.nom.,3
+.m.,mat,mā,mā,.m.$.pl.$.voc.,3
+.m.,mat,mantā,ā,.m.$.pl.$.voc.,3
+.m.,mat,manto,o,.m.$.pl.$.voc.,3
+.m.,mat,mantā,ā,.m.$.sg.$.abl.,3
+.m.,mat,mantamhā,amhā,.m.$.sg.$.abl.,3
+.m.,mat,mantasmā,asmā,.m.$.sg.$.abl.,3
+.m.,mat,matā,ā,.m.$.sg.$.abl.,3
+.m.,mat,maṃ,maṃ,.m.$.sg.$.acc.,3
+.m.,mat,mantaṃ,aṃ,.m.$.sg.$.acc.,3
+.m.,mat,mantassa,assa,.m.$.sg.$.dat.,3
+.m.,mat,mato,o,.m.$.sg.$.dat.,3
+.m.,mat,mantassa,assa,.m.$.sg.$.gen.,3
+.m.,mat,mato,o,.m.$.sg.$.gen.,3
+.m.,mat,matā,ā,.m.$.sg.$.inst.,3
+.m.,mat,matena,ena,.m.$.sg.$.inst.,3
+.m.,mat,mantamhi,amhi,.m.$.sg.$.loc.,3
+.m.,mat,mantasmiṃ,asmiṃ,.m.$.sg.$.loc.,3
+.m.,mat,mante,e,.m.$.sg.$.loc.,3
+.m.,mat,mati,i,.m.$.sg.$.loc.,3
+.m.,mat,mā,mā,.m.$.sg.$.nom.,3
+.m.,mat,manto,o,.m.$.sg.$.nom.,3
+.m.,mat,ma,a,.m.$.sg.$.voc.,3
+.m.,mat,mā,ā,.m.$.sg.$.voc.,3
+.m.,mat,maṃ,ṃ,.m.$.sg.$.voc.,3
+.m.,mat,manta,a,.m.$.sg.$.voc.,3
+.m.,mat,mantā,ā,.m.$.sg.$.voc.,3
+.nt.,mat,mantebhi,ebhi,.nt.$.pl.$.abl.,3
+.nt.,mat,mantehi,ehi,.nt.$.pl.$.abl.,3
+.nt.,mat,mante,e,.nt.$.pl.$.acc.,3
+.nt.,mat,mantānaṃ,ānaṃ,.nt.$.pl.$.dat.,3
+.nt.,mat,mataṃ,aṃ,.nt.$.pl.$.dat.,3
+.nt.,mat,mantānaṃ,ānaṃ,.nt.$.pl.$.gen.,3
+.nt.,mat,mataṃ,aṃ,.nt.$.pl.$.gen.,3
+.nt.,mat,mantebhi,ebhi,.nt.$.pl.$.inst.,3
+.nt.,mat,mantehi,ehi,.nt.$.pl.$.inst.,3
+.nt.,mat,mantesu,esu,.nt.$.pl.$.loc.,3
+.nt.,mat,mā,mā,.nt.$.pl.$.nom.,3
+.nt.,mat,mantā,ā,.nt.$.pl.$.nom.,3
+.nt.,mat,manto,o,.nt.$.pl.$.nom.,3
+.nt.,mat,mā,mā,.nt.$.pl.$.voc.,3
+.nt.,mat,mantā,ā,.nt.$.pl.$.voc.,3
+.nt.,mat,manto,o,.nt.$.pl.$.voc.,3
+.nt.,mat,mantā,ā,.nt.$.sg.$.abl.,3
+.nt.,mat,mantamhā,amhā,.nt.$.sg.$.abl.,3
+.nt.,mat,mantasmā,asmā,.nt.$.sg.$.abl.,3
+.nt.,mat,matā,ā,.nt.$.sg.$.abl.,3
+.nt.,mat,maṃ,maṃ,.nt.$.sg.$.acc.,3
+.nt.,mat,mantaṃ,aṃ,.nt.$.sg.$.acc.,3
+.nt.,mat,mantassa,assa,.nt.$.sg.$.dat.,3
+.nt.,mat,mato,o,.nt.$.sg.$.dat.,3
+.nt.,mat,mantassa,assa,.nt.$.sg.$.gen.,3
+.nt.,mat,mato,o,.nt.$.sg.$.gen.,3
+.nt.,mat,matā,ā,.nt.$.sg.$.inst.,3
+.nt.,mat,matena,ena,.nt.$.sg.$.inst.,3
+.nt.,mat,mantamhi,amhi,.nt.$.sg.$.loc.,3
+.nt.,mat,mantasmiṃ,asmiṃ,.nt.$.sg.$.loc.,3
+.nt.,mat,mante,e,.nt.$.sg.$.loc.,3
+.nt.,mat,mati,i,.nt.$.sg.$.loc.,3
+.nt.,mat,maṃ,maṃ,.nt.$.sg.$.nom.,3
+.nt.,mat,mantaṃ,aṃ,.nt.$.sg.$.nom.,3
+.nt.,mat,ma,a,.nt.$.sg.$.voc.,3
+.nt.,mat,mā,ā,.nt.$.sg.$.voc.,3
+.nt.,mat,maṃ,ṃ,.nt.$.sg.$.voc.,3
+.nt.,mat,manta,a,.nt.$.sg.$.voc.,3
+.nt.,mat,mantā,ā,.nt.$.sg.$.voc.,3
+.f.,mata,mantībhi,ībhi,.f.$.pl.$.abl.,4
+.f.,mata,mantīhi,īhi,.f.$.pl.$.abl.,4
+.f.,mata,matībhi,ībhi,.f.$.pl.$.abl.,4
+.f.,mata,matīhi,īhi,.f.$.pl.$.abl.,4
+.f.,mata,mantī,ī,.f.$.pl.$.acc.,4
+.f.,mata,mantiyo,iyo,.f.$.pl.$.acc.,4
+.f.,mata,matī,ī,.f.$.pl.$.acc.,4
+.f.,mata,matiyo,iyo,.f.$.pl.$.acc.,4
+.f.,mata,mantīnaṃ,īnaṃ,.f.$.pl.$.dat.,4
+.f.,mata,matīnaṃ,īnaṃ,.f.$.pl.$.dat.,4
+.f.,mata,mantīnaṃ,īnaṃ,.f.$.pl.$.gen.,4
+.f.,mata,matīnaṃ,īnaṃ,.f.$.pl.$.gen.,4
+.f.,mata,mantībhi,ībhi,.f.$.pl.$.inst.,4
+.f.,mata,mantīhi,īhi,.f.$.pl.$.inst.,4
+.f.,mata,matībhi,ībhi,.f.$.pl.$.inst.,4
+.f.,mata,matīhi,īhi,.f.$.pl.$.inst.,4
+.f.,mata,mantīsu,īsu,.f.$.pl.$.loc.,4
+.f.,mata,matīsu,īsu,.f.$.pl.$.loc.,4
+.f.,mata,mantī,ī,.f.$.pl.$.nom.,4
+.f.,mata,mantiyo,iyo,.f.$.pl.$.nom.,4
+.f.,mata,matī,ī,.f.$.pl.$.nom.,4
+.f.,mata,matiyo,iyo,.f.$.pl.$.nom.,4
+.f.,mata,mantī,ī,.f.$.pl.$.voc.,4
+.f.,mata,mantiyo,iyo,.f.$.pl.$.voc.,4
+.f.,mata,matī,ī,.f.$.pl.$.voc.,4
+.f.,mata,matiyo,iyo,.f.$.pl.$.voc.,4
+.f.,mata,mantiyā,iyā,.f.$.sg.$.abl.,4
+.f.,mata,matiyā,iyā,.f.$.sg.$.abl.,4
+.f.,mata,mantiṃ,iṃ,.f.$.sg.$.acc.,4
+.f.,mata,matiṃ,iṃ,.f.$.sg.$.acc.,4
+.f.,mata,mantiyā,iyā,.f.$.sg.$.dat.,4
+.f.,mata,matiyā,iyā,.f.$.sg.$.dat.,4
+.f.,mata,mantiyā,iyā,.f.$.sg.$.gen.,4
+.f.,mata,matiyā,iyā,.f.$.sg.$.gen.,4
+.f.,mata,mantiyā,iyā,.f.$.sg.$.inst.,4
+.f.,mata,matiyā,iyā,.f.$.sg.$.inst.,4
+.f.,mata,mantiyā,iyā,.f.$.sg.$.loc.,4
+.f.,mata,mantiyaṃ,iyaṃ,.f.$.sg.$.loc.,4
+.f.,mata,matiyā,iyā,.f.$.sg.$.loc.,4
+.f.,mata,matiyaṃ,iyaṃ,.f.$.sg.$.loc.,4
+.f.,mata,mantī,ī,.f.$.sg.$.nom.,4
+.f.,mata,matī,ī,.f.$.sg.$.nom.,4
+.f.,mata,mantī,ī,.f.$.sg.$.voc.,4
+.f.,mata,matī,ī,.f.$.sg.$.voc.,4
+.m.,mata,mantebhi,ebhi,.m.$.pl.$.abl.,4
+.m.,mata,mantehi,ehi,.m.$.pl.$.abl.,4
+.m.,mata,mante,e,.m.$.pl.$.acc.,4
+.m.,mata,mantānaṃ,ānaṃ,.m.$.pl.$.dat.,4
+.m.,mata,mataṃ,aṃ,.m.$.pl.$.dat.,4
+.m.,mata,mantānaṃ,ānaṃ,.m.$.pl.$.gen.,4
+.m.,mata,mataṃ,aṃ,.m.$.pl.$.gen.,4
+.m.,mata,mantebhi,ebhi,.m.$.pl.$.inst.,4
+.m.,mata,mantehi,ehi,.m.$.pl.$.inst.,4
+.m.,mata,mantesu,esu,.m.$.pl.$.loc.,4
+.m.,mata,mā,mā,.m.$.pl.$.nom.,4
+.m.,mata,mantā,ā,.m.$.pl.$.nom.,4
+.m.,mata,manto,o,.m.$.pl.$.nom.,4
+.m.,mata,mā,mā,.m.$.pl.$.voc.,4
+.m.,mata,mantā,ā,.m.$.pl.$.voc.,4
+.m.,mata,manto,o,.m.$.pl.$.voc.,4
+.m.,mata,mantā,ā,.m.$.sg.$.abl.,4
+.m.,mata,mantamhā,amhā,.m.$.sg.$.abl.,4
+.m.,mata,mantasmā,asmā,.m.$.sg.$.abl.,4
+.m.,mata,matā,ā,.m.$.sg.$.abl.,4
+.m.,mata,maṃ,maṃ,.m.$.sg.$.acc.,4
+.m.,mata,mantaṃ,aṃ,.m.$.sg.$.acc.,4
+.m.,mata,mantassa,assa,.m.$.sg.$.dat.,4
+.m.,mata,mato,o,.m.$.sg.$.dat.,4
+.m.,mata,mantassa,assa,.m.$.sg.$.gen.,4
+.m.,mata,mato,o,.m.$.sg.$.gen.,4
+.m.,mata,matā,ā,.m.$.sg.$.inst.,4
+.m.,mata,matena,ena,.m.$.sg.$.inst.,4
+.m.,mata,mantamhi,amhi,.m.$.sg.$.loc.,4
+.m.,mata,mantasmiṃ,asmiṃ,.m.$.sg.$.loc.,4
+.m.,mata,mante,e,.m.$.sg.$.loc.,4
+.m.,mata,mati,i,.m.$.sg.$.loc.,4
+.m.,mata,mā,mā,.m.$.sg.$.nom.,4
+.m.,mata,manto,o,.m.$.sg.$.nom.,4
+.m.,mata,ma,a,.m.$.sg.$.voc.,4
+.m.,mata,mā,ā,.m.$.sg.$.voc.,4
+.m.,mata,maṃ,ṃ,.m.$.sg.$.voc.,4
+.m.,mata,manta,a,.m.$.sg.$.voc.,4
+.m.,mata,mantā,ā,.m.$.sg.$.voc.,4
+.nt.,mata,mantebhi,ebhi,.nt.$.pl.$.abl.,4
+.nt.,mata,mantehi,ehi,.nt.$.pl.$.abl.,4
+.nt.,mata,mante,e,.nt.$.pl.$.acc.,4
+.nt.,mata,mantānaṃ,ānaṃ,.nt.$.pl.$.dat.,4
+.nt.,mata,mataṃ,aṃ,.nt.$.pl.$.dat.,4
+.nt.,mata,mantānaṃ,ānaṃ,.nt.$.pl.$.gen.,4
+.nt.,mata,mataṃ,aṃ,.nt.$.pl.$.gen.,4
+.nt.,mata,mantebhi,ebhi,.nt.$.pl.$.inst.,4
+.nt.,mata,mantehi,ehi,.nt.$.pl.$.inst.,4
+.nt.,mata,mantesu,esu,.nt.$.pl.$.loc.,4
+.nt.,mata,mā,mā,.nt.$.pl.$.nom.,4
+.nt.,mata,mantā,ā,.nt.$.pl.$.nom.,4
+.nt.,mata,manto,o,.nt.$.pl.$.nom.,4
+.nt.,mata,mā,mā,.nt.$.pl.$.voc.,4
+.nt.,mata,mantā,ā,.nt.$.pl.$.voc.,4
+.nt.,mata,manto,o,.nt.$.pl.$.voc.,4
+.nt.,mata,mantā,ā,.nt.$.sg.$.abl.,4
+.nt.,mata,mantamhā,amhā,.nt.$.sg.$.abl.,4
+.nt.,mata,mantasmā,asmā,.nt.$.sg.$.abl.,4
+.nt.,mata,matā,ā,.nt.$.sg.$.abl.,4
+.nt.,mata,maṃ,maṃ,.nt.$.sg.$.acc.,4
+.nt.,mata,mantaṃ,aṃ,.nt.$.sg.$.acc.,4
+.nt.,mata,mantassa,assa,.nt.$.sg.$.dat.,4
+.nt.,mata,mato,o,.nt.$.sg.$.dat.,4
+.nt.,mata,mantassa,assa,.nt.$.sg.$.gen.,4
+.nt.,mata,mato,o,.nt.$.sg.$.gen.,4
+.nt.,mata,matā,ā,.nt.$.sg.$.inst.,4
+.nt.,mata,matena,ena,.nt.$.sg.$.inst.,4
+.nt.,mata,mantamhi,amhi,.nt.$.sg.$.loc.,4
+.nt.,mata,mantasmiṃ,asmiṃ,.nt.$.sg.$.loc.,4
+.nt.,mata,mante,e,.nt.$.sg.$.loc.,4
+.nt.,mata,mati,i,.nt.$.sg.$.loc.,4
+.nt.,mata,maṃ,maṃ,.nt.$.sg.$.nom.,4
+.nt.,mata,mantaṃ,aṃ,.nt.$.sg.$.nom.,4
+.nt.,mata,ma,a,.nt.$.sg.$.voc.,4
+.nt.,mata,mā,ā,.nt.$.sg.$.voc.,4
+.nt.,mata,maṃ,ṃ,.nt.$.sg.$.voc.,4
+.nt.,mata,manta,a,.nt.$.sg.$.voc.,4
+.nt.,mata,mantā,ā,.nt.$.sg.$.voc.,4
+.f.,u,unībhi,nībhi,.f.$.pl.$.abl.,1
+.f.,u,unīhi,nīhi,.f.$.pl.$.abl.,1
+.f.,u,unī,ni,.f.$.pl.$.acc.,1
+.f.,u,univo,nivo,.f.$.pl.$.acc.,1
+.f.,u,uniyo,niyo,.f.$.pl.$.acc.,1
+.f.,u,unīnaṃ,nīnaṃ,.f.$.pl.$.dat.,1
+.f.,u,unīnaṃ,nīnaṃ,.f.$.pl.$.gen.,1
+.f.,u,unībhi,nībhi,.f.$.pl.$.inst.,1
+.f.,u,unīhi,nīhi,.f.$.pl.$.inst.,1
+.f.,u,unīsu,nīsu,.f.$.pl.$.loc.,1
+.f.,u,unī,ni,.f.$.pl.$.nom.,1
+.f.,u,univo,nivo,.f.$.pl.$.nom.,1
+.f.,u,uniyo,niyo,.f.$.pl.$.nom.,1
+.f.,u,unī,ni,.f.$.pl.$.voc.,1
+.f.,u,univo,nivo,.f.$.pl.$.voc.,1
+.f.,u,uniyo,niyo,.f.$.pl.$.voc.,1
+.f.,u,unito,nito,.f.$.sg.$.abl.,1
+.f.,u,uniyā,niyā,.f.$.sg.$.abl.,1
+.f.,u,uniṃ,niṃ,.f.$.sg.$.acc.,1
+.f.,u,uniyā,niyā,.f.$.sg.$.dat.,1
+.f.,u,uniyā,niyā,.f.$.sg.$.gen.,1
+.f.,u,uniyā,niyā,.f.$.sg.$.inst.,1
+.f.,u,uniyā,niyā,.f.$.sg.$.loc.,1
+.f.,u,uniyaṃ,niyaṃ,.f.$.sg.$.loc.,1
+.f.,u,unī,nī,.f.$.sg.$.nom.,1
+.f.,u,unī,nī,.f.$.sg.$.voc.,1
+.m.,u,ūbhi,bhi,.m.$.pl.$.abl.,1
+.m.,u,ūhi,hi,.m.$.pl.$.abl.,1
+.m.,u,avo,o,.m.$.pl.$.acc.,1
+.m.,u,ū,ū,.m.$.pl.$.acc.,1
+.m.,u,ūnaṃ,naṃ,.m.$.pl.$.dat.,1
+.m.,u,ūnaṃ,naṃ,.m.$.pl.$.gen.,1
+.m.,u,ūbhi,bhi,.m.$.pl.$.inst.,1
+.m.,u,ūhi,hi,.m.$.pl.$.inst.,1
+.m.,u,ūsu,su,.m.$.pl.$.loc.,1
+.m.,u,avo,o,.m.$.pl.$.nom.,1
+.m.,u,ū,ū,.m.$.pl.$.nom.,1
+.m.,u,ave,e,.m.$.pl.$.voc.,1
+.m.,u,avo,o,.m.$.pl.$.voc.,1
+.m.,u,ū,ū,.m.$.pl.$.voc.,1
+.m.,u,umhā,mhā,.m.$.sg.$.abl.,1
+.m.,u,unā,nā,.m.$.sg.$.abl.,1
+.m.,u,usmā,smā,.m.$.sg.$.abl.,1
+.m.,u,uṃ,ṃ,.m.$.sg.$.acc.,1
+.m.,u,uno,no,.m.$.sg.$.dat.,1
+.m.,u,ussa,ssa,.m.$.sg.$.dat.,1
+.m.,u,uno,no,.m.$.sg.$.gen.,1
+.m.,u,ussa,ssa,.m.$.sg.$.gen.,1
+.m.,u,unā,nā,.m.$.sg.$.inst.,1
+.m.,u,umhi,mhi,.m.$.sg.$.loc.,1
+.m.,u,usmiṃ,smiṃ,.m.$.sg.$.loc.,1
+.m.,u,u,u,.m.$.sg.$.nom.,1
+.m.,u,u,u,.m.$.sg.$.voc.,1
+.nt.,u,ūbhi,bhi,.nt.$.pl.$.abl.,1
+.nt.,u,ūhi,hi,.nt.$.pl.$.abl.,1
+.nt.,u,ū,ū,.nt.$.pl.$.acc.,1
+.nt.,u,ūni,ni,.nt.$.pl.$.acc.,1
+.nt.,u,ūnaṃ,naṃ,.nt.$.pl.$.dat.,1
+.nt.,u,ūnaṃ,naṃ,.nt.$.pl.$.gen.,1
+.nt.,u,ūbhi,bhi,.nt.$.pl.$.inst.,1
+.nt.,u,ūhi,hi,.nt.$.pl.$.inst.,1
+.nt.,u,ūsu,su,.nt.$.pl.$.loc.,1
+.nt.,u,ū,ū,.nt.$.pl.$.nom.,1
+.nt.,u,ūni,ni,.nt.$.pl.$.nom.,1
+.nt.,u,ū,ū,.nt.$.pl.$.voc.,1
+.nt.,u,ūni,ni,.nt.$.pl.$.voc.,1
+.nt.,u,umhā,mhā,.nt.$.sg.$.abl.,1
+.nt.,u,unā,nā,.nt.$.sg.$.abl.,1
+.nt.,u,usmā,smā,.nt.$.sg.$.abl.,1
+.nt.,u,uṃ,ṃ,.nt.$.sg.$.acc.,1
+.nt.,u,uno,no,.nt.$.sg.$.dat.,1
+.nt.,u,ussa,ssa,.nt.$.sg.$.dat.,1
+.nt.,u,uno,no,.nt.$.sg.$.gen.,1
+.nt.,u,ussa,ssa,.nt.$.sg.$.gen.,1
+.nt.,u,unā,nā,.nt.$.sg.$.inst.,1
+.nt.,u,umhi,mhi,.nt.$.sg.$.loc.,1
+.nt.,u,usmiṃ,smiṃ,.nt.$.sg.$.loc.,1
+.nt.,u,u,u,.nt.$.sg.$.nom.,1
+.nt.,u,u,u,.nt.$.sg.$.voc.,1
+.f.,ū,ūnībhi,nībhi,.f.$.pl.$.abl.,1
+.f.,ū,ūnīhi,nīhi,.f.$.pl.$.abl.,1
+.f.,ū,ūnī,ni,.f.$.pl.$.acc.,1
+.f.,ū,ūniyo,niyo,.f.$.pl.$.acc.,1
+.f.,ū,ūnīnaṃ,nīnaṃ,.f.$.pl.$.dat.,1
+.f.,ū,ūnīnaṃ,nīnaṃ,.f.$.pl.$.gen.,1
+.f.,ū,ūnībhi,nībhi,.f.$.pl.$.inst.,1
+.f.,ū,ūnīhi,nīhi,.f.$.pl.$.inst.,1
+.f.,ū,ūnīsu,nīsu,.f.$.pl.$.loc.,1
+.f.,ū,ūnī,ni,.f.$.pl.$.nom.,1
+.f.,ū,ūniyo,niyo,.f.$.pl.$.nom.,1
+.f.,ū,ūnī,ni,.f.$.pl.$.voc.,1
+.f.,ū,ūniyo,niyo,.f.$.pl.$.voc.,1
+.f.,ū,uto,to,.f.$.sg.$.abl.,1
+.f.,ū,uyā,yā,.f.$.sg.$.abl.,1
+.f.,ū,uṃ,ṃ,.f.$.sg.$.acc.,1
+.f.,ū,uyā,yā,.f.$.sg.$.dat.,1
+.f.,ū,uyā,yā,.f.$.sg.$.gen.,1
+.f.,ū,uyā,yā,.f.$.sg.$.inst.,1
+.f.,ū,uyā,yā,.f.$.sg.$.loc.,1
+.f.,ū,uyaṃ,yaṃ,.f.$.sg.$.loc.,1
+.f.,ū,ū,ū,.f.$.sg.$.nom.,1
+.f.,ū,ū,ū,.f.$.sg.$.voc.,1
+.m.,ū,ūbhi,bhi,.m.$.pl.$.abl.,1
+.m.,ū,ūhi,hi,.m.$.pl.$.abl.,1
+.m.,ū,avo,o,.m.$.pl.$.acc.,1
+.m.,ū,ū,ū,.m.$.pl.$.acc.,1
+.m.,ū,ūnaṃ,naṃ,.m.$.pl.$.dat.,1
+.m.,ū,ūnaṃ,naṃ,.m.$.pl.$.gen.,1
+.m.,ū,ūbhi,bhi,.m.$.pl.$.inst.,1
+.m.,ū,ūhi,hi,.m.$.pl.$.inst.,1
+.m.,ū,ūsu,su,.m.$.pl.$.loc.,1
+.m.,ū,avo,o,.m.$.pl.$.nom.,1
+.m.,ū,ū,ū,.m.$.pl.$.nom.,1
+.m.,ū,ave,e,.m.$.pl.$.voc.,1
+.m.,ū,avo,o,.m.$.pl.$.voc.,1
+.m.,ū,ū,ū,.m.$.pl.$.voc.,1
+.m.,ū,umhā,mhā,.m.$.sg.$.abl.,1
+.m.,ū,unā,nā,.m.$.sg.$.abl.,1
+.m.,ū,usmā,smā,.m.$.sg.$.abl.,1
+.m.,ū,uṃ,ṃ,.m.$.sg.$.acc.,1
+.m.,ū,uno,no,.m.$.sg.$.dat.,1
+.m.,ū,ussa,ssa,.m.$.sg.$.dat.,1
+.m.,ū,uno,no,.m.$.sg.$.gen.,1
+.m.,ū,ussa,ssa,.m.$.sg.$.gen.,1
+.m.,ū,unā,nā,.m.$.sg.$.inst.,1
+.m.,ū,umhi,mhi,.m.$.sg.$.loc.,1
+.m.,ū,usmiṃ,smiṃ,.m.$.sg.$.loc.,1
+.m.,ū,ū,ū,.m.$.sg.$.nom.,1
+.m.,ū,ū,ū,.m.$.sg.$.voc.,1
+.f.,vā,vantībhi,ībhi,.f.$.pl.$.abl.,2
+.f.,vā,vantīhi,īhi,.f.$.pl.$.abl.,2
+.f.,vā,vatībhi,ībhi,.f.$.pl.$.abl.,2
+.f.,vā,vatīhi,īhi,.f.$.pl.$.abl.,2
+.f.,vā,vantī,ī,.f.$.pl.$.acc.,2
+.f.,vā,vantiyo,iyo,.f.$.pl.$.acc.,2
+.f.,vā,vatī,ī,.f.$.pl.$.acc.,2
+.f.,vā,vatiyo,iyo,.f.$.pl.$.acc.,2
+.f.,vā,vantīnaṃ,īnaṃ,.f.$.pl.$.dat.,2
+.f.,vā,vatīnaṃ,īnaṃ,.f.$.pl.$.dat.,2
+.f.,vā,vantīnaṃ,īnaṃ,.f.$.pl.$.gen.,2
+.f.,vā,vatīnaṃ,īnaṃ,.f.$.pl.$.gen.,2
+.f.,vā,vantībhi,ībhi,.f.$.pl.$.inst.,2
+.f.,vā,vantīhi,īhi,.f.$.pl.$.inst.,2
+.f.,vā,vatībhi,ībhi,.f.$.pl.$.inst.,2
+.f.,vā,vatīhi,īhi,.f.$.pl.$.inst.,2
+.f.,vā,vantīsu,īsu,.f.$.pl.$.loc.,2
+.f.,vā,vatīsu,īsu,.f.$.pl.$.loc.,2
+.f.,vā,vantī,ī,.f.$.pl.$.nom.,2
+.f.,vā,vantiyo,iyo,.f.$.pl.$.nom.,2
+.f.,vā,vatī,ī,.f.$.pl.$.nom.,2
+.f.,vā,vatiyo,iyo,.f.$.pl.$.nom.,2
+.f.,vā,vantī,ī,.f.$.pl.$.voc.,2
+.f.,vā,vantiyo,iyo,.f.$.pl.$.voc.,2
+.f.,vā,vatī,ī,.f.$.pl.$.voc.,2
+.f.,vā,vatiyo,iyo,.f.$.pl.$.voc.,2
+.f.,vā,vantiyā,iyā,.f.$.sg.$.abl.,2
+.f.,vā,vatiyā,iyā,.f.$.sg.$.abl.,2
+.f.,vā,vantiṃ,iṃ,.f.$.sg.$.acc.,2
+.f.,vā,vatiṃ,iṃ,.f.$.sg.$.acc.,2
+.f.,vā,vantiyā,iyā,.f.$.sg.$.dat.,2
+.f.,vā,vatiyā,iyā,.f.$.sg.$.dat.,2
+.f.,vā,vantiyā,iyā,.f.$.sg.$.gen.,2
+.f.,vā,vatiyā,iyā,.f.$.sg.$.gen.,2
+.f.,vā,vantiyā,iyā,.f.$.sg.$.inst.,2
+.f.,vā,vatiyā,iyā,.f.$.sg.$.inst.,2
+.f.,vā,vantiyā,iyā,.f.$.sg.$.loc.,2
+.f.,vā,vantiyaṃ,iyaṃ,.f.$.sg.$.loc.,2
+.f.,vā,vatiyā,iyā,.f.$.sg.$.loc.,2
+.f.,vā,vatiyaṃ,iyaṃ,.f.$.sg.$.loc.,2
+.f.,vā,vantī,ī,.f.$.sg.$.nom.,2
+.f.,vā,vatī,ī,.f.$.sg.$.nom.,2
+.f.,vā,vantī,ī,.f.$.sg.$.voc.,2
+.f.,vā,vatī,ī,.f.$.sg.$.voc.,2
+.m.,vā,vantebhi,ebhi,.m.$.pl.$.abl.,2
+.m.,vā,vantehi,ehi,.m.$.pl.$.abl.,2
+.m.,vā,vante,e,.m.$.pl.$.acc.,2
+.m.,vā,vantānaṃ,naṃ,.m.$.pl.$.dat.,2
+.m.,vā,vataṃ,ṃ,.m.$.pl.$.dat.,2
+.m.,vā,vantānaṃ,naṃ,.m.$.pl.$.gen.,2
+.m.,vā,vataṃ,ṃ,.m.$.pl.$.gen.,2
+.m.,vā,vantebhi,ebhi,.m.$.pl.$.inst.,2
+.m.,vā,vantehi,ehi,.m.$.pl.$.inst.,2
+.m.,vā,vantesu,esu,.m.$.pl.$.loc.,2
+.m.,vā,vā,ā,.m.$.pl.$.nom.,2
+.m.,vā,vantā,ā,.m.$.pl.$.nom.,2
+.m.,vā,vanto,o,.m.$.pl.$.nom.,2
+.m.,vā,vā,ā,.m.$.pl.$.voc.,2
+.m.,vā,vantā,ā,.m.$.pl.$.voc.,2
+.m.,vā,vanto,o,.m.$.pl.$.voc.,2
+.m.,vā,vantā,ā,.m.$.sg.$.abl.,2
+.m.,vā,vantamhā,mhā,.m.$.sg.$.abl.,2
+.m.,vā,vantasmā,smā,.m.$.sg.$.abl.,2
+.m.,vā,vatā,ā,.m.$.sg.$.abl.,2
+.m.,vā,vaṃ,ṃ,.m.$.sg.$.acc.,2
+.m.,vā,vantaṃ,ṃ,.m.$.sg.$.acc.,2
+.m.,vā,vantassa,ssa,.m.$.sg.$.dat.,2
+.m.,vā,vato,o,.m.$.sg.$.dat.,2
+.m.,vā,vantassa,ssa,.m.$.sg.$.gen.,2
+.m.,vā,vato,o,.m.$.sg.$.gen.,2
+.m.,vā,vatā,ā,.m.$.sg.$.inst.,2
+.m.,vā,vatena,ena,.m.$.sg.$.inst.,2
+.m.,vā,vantamhi,mhi,.m.$.sg.$.loc.,2
+.m.,vā,vantasmiṃ,smiṃ,.m.$.sg.$.loc.,2
+.m.,vā,vante,e,.m.$.sg.$.loc.,2
+.m.,vā,vati,i,.m.$.sg.$.loc.,2
+.m.,vā,vā,ā,.m.$.sg.$.nom.,2
+.m.,vā,vanto,o,.m.$.sg.$.nom.,2
+.m.,vā,va,a,.m.$.sg.$.voc.,2
+.m.,vā,vā,ā,.m.$.sg.$.voc.,2
+.m.,vā,vaṃ,ṃ,.m.$.sg.$.voc.,2
+.m.,vā,vanta,a,.m.$.sg.$.voc.,2
+.m.,vā,vantā,ā,.m.$.sg.$.voc.,2
+.nt.,vā,vantebhi,ebhi,.nt.$.pl.$.abl.,2
+.nt.,vā,vantehi,ehi,.nt.$.pl.$.abl.,2
+.nt.,vā,vante,e,.nt.$.pl.$.acc.,2
+.nt.,vā,vantānaṃ,ānaṃ,.nt.$.pl.$.dat.,2
+.nt.,vā,vataṃ,aṃ,.nt.$.pl.$.dat.,2
+.nt.,vā,vantānaṃ,ānaṃ,.nt.$.pl.$.gen.,2
+.nt.,vā,vataṃ,aṃ,.nt.$.pl.$.gen.,2
+.nt.,vā,vantebhi,ebhi,.nt.$.pl.$.inst.,2
+.nt.,vā,vantehi,ehi,.nt.$.pl.$.inst.,2
+.nt.,vā,vantesu,esu,.nt.$.pl.$.loc.,2
+.nt.,vā,vā,vā,.nt.$.pl.$.nom.,2
+.nt.,vā,vantā,ā,.nt.$.pl.$.nom.,2
+.nt.,vā,vanto,o,.nt.$.pl.$.nom.,2
+.nt.,vā,vā,vā,.nt.$.pl.$.voc.,2
+.nt.,vā,vantā,ā,.nt.$.pl.$.voc.,2
+.nt.,vā,vanto,o,.nt.$.pl.$.voc.,2
+.nt.,vā,vantā,ā,.nt.$.sg.$.abl.,2
+.nt.,vā,vantamhā,amhā,.nt.$.sg.$.abl.,2
+.nt.,vā,vantasmā,asmā,.nt.$.sg.$.abl.,2
+.nt.,vā,vatā,ā,.nt.$.sg.$.abl.,2
+.nt.,vā,vaṃ,vaṃ,.nt.$.sg.$.acc.,2
+.nt.,vā,vantaṃ,aṃ,.nt.$.sg.$.acc.,2
+.nt.,vā,vantassa,assa,.nt.$.sg.$.dat.,2
+.nt.,vā,vato,o,.nt.$.sg.$.dat.,2
+.nt.,vā,vantassa,assa,.nt.$.sg.$.gen.,2
+.nt.,vā,vato,o,.nt.$.sg.$.gen.,2
+.nt.,vā,vatā,ā,.nt.$.sg.$.inst.,2
+.nt.,vā,vatena,ena,.nt.$.sg.$.inst.,2
+.nt.,vā,vantamhi,amhi,.nt.$.sg.$.loc.,2
+.nt.,vā,vantasmiṃ,asmiṃ,.nt.$.sg.$.loc.,2
+.nt.,vā,vante,e,.nt.$.sg.$.loc.,2
+.nt.,vā,vati,i,.nt.$.sg.$.loc.,2
+.nt.,vā,vaṃ,vaṃ,.nt.$.sg.$.nom.,2
+.nt.,vā,vantaṃ,aṃ,.nt.$.sg.$.nom.,2
+.nt.,vā,va,a,.nt.$.sg.$.voc.,2
+.nt.,vā,vā,ā,.nt.$.sg.$.voc.,2
+.nt.,vā,vaṃ,ṃ,.nt.$.sg.$.voc.,2
+.nt.,vā,vanta,a,.nt.$.sg.$.voc.,2
+.nt.,vā,vantā,ā,.nt.$.sg.$.voc.,2
+.f.,vant,vantībhi,ībhi,.f.$.pl.$.abl.,4
+.f.,vant,vantīhi,īhi,.f.$.pl.$.abl.,4
+.f.,vant,vatībhi,ībhi,.f.$.pl.$.abl.,4
+.f.,vant,vatīhi,īhi,.f.$.pl.$.abl.,4
+.f.,vant,vantī,ī,.f.$.pl.$.acc.,4
+.f.,vant,vantiyo,iyo,.f.$.pl.$.acc.,4
+.f.,vant,vatī,ī,.f.$.pl.$.acc.,4
+.f.,vant,vatiyo,iyo,.f.$.pl.$.acc.,4
+.f.,vant,vantīnaṃ,īnaṃ,.f.$.pl.$.dat.,4
+.f.,vant,vatīnaṃ,īnaṃ,.f.$.pl.$.dat.,4
+.f.,vant,vantīnaṃ,īnaṃ,.f.$.pl.$.gen.,4
+.f.,vant,vatīnaṃ,īnaṃ,.f.$.pl.$.gen.,4
+.f.,vant,vantībhi,ībhi,.f.$.pl.$.inst.,4
+.f.,vant,vantīhi,īhi,.f.$.pl.$.inst.,4
+.f.,vant,vatībhi,ībhi,.f.$.pl.$.inst.,4
+.f.,vant,vatīhi,īhi,.f.$.pl.$.inst.,4
+.f.,vant,vantīsu,īsu,.f.$.pl.$.loc.,4
+.f.,vant,vatīsu,īsu,.f.$.pl.$.loc.,4
+.f.,vant,vantī,ī,.f.$.pl.$.nom.,4
+.f.,vant,vantiyo,iyo,.f.$.pl.$.nom.,4
+.f.,vant,vatī,ī,.f.$.pl.$.nom.,4
+.f.,vant,vatiyo,iyo,.f.$.pl.$.nom.,4
+.f.,vant,vantī,ī,.f.$.pl.$.voc.,4
+.f.,vant,vantiyo,iyo,.f.$.pl.$.voc.,4
+.f.,vant,vatī,ī,.f.$.pl.$.voc.,4
+.f.,vant,vatiyo,iyo,.f.$.pl.$.voc.,4
+.f.,vant,vantiyā,iyā,.f.$.sg.$.abl.,4
+.f.,vant,vatiyā,iyā,.f.$.sg.$.abl.,4
+.f.,vant,vantiṃ,iṃ,.f.$.sg.$.acc.,4
+.f.,vant,vatiṃ,iṃ,.f.$.sg.$.acc.,4
+.f.,vant,vantiyā,iyā,.f.$.sg.$.dat.,4
+.f.,vant,vatiyā,iyā,.f.$.sg.$.dat.,4
+.f.,vant,vantiyā,iyā,.f.$.sg.$.gen.,4
+.f.,vant,vatiyā,iyā,.f.$.sg.$.gen.,4
+.f.,vant,vantiyā,iyā,.f.$.sg.$.inst.,4
+.f.,vant,vatiyā,iyā,.f.$.sg.$.inst.,4
+.f.,vant,vantiyā,iyā,.f.$.sg.$.loc.,4
+.f.,vant,vantiyaṃ,iyaṃ,.f.$.sg.$.loc.,4
+.f.,vant,vatiyā,iyā,.f.$.sg.$.loc.,4
+.f.,vant,vatiyaṃ,iyaṃ,.f.$.sg.$.loc.,4
+.f.,vant,vantī,ī,.f.$.sg.$.nom.,4
+.f.,vant,vatī,ī,.f.$.sg.$.nom.,4
+.f.,vant,vantī,ī,.f.$.sg.$.voc.,4
+.f.,vant,vatī,ī,.f.$.sg.$.voc.,4
+.m.,vant,vantebhi,ebhi,.m.$.pl.$.abl.,4
+.m.,vant,vantehi,ehi,.m.$.pl.$.abl.,4
+.m.,vant,vante,e,.m.$.pl.$.acc.,4
+.m.,vant,vantānaṃ,naṃ,.m.$.pl.$.dat.,4
+.m.,vant,vataṃ,ṃ,.m.$.pl.$.dat.,4
+.m.,vant,vantānaṃ,naṃ,.m.$.pl.$.gen.,4
+.m.,vant,vataṃ,ṃ,.m.$.pl.$.gen.,4
+.m.,vant,vantebhi,ebhi,.m.$.pl.$.inst.,4
+.m.,vant,vantehi,ehi,.m.$.pl.$.inst.,4
+.m.,vant,vantesu,esu,.m.$.pl.$.loc.,4
+.m.,vant,vā,ā,.m.$.pl.$.nom.,4
+.m.,vant,vantā,ā,.m.$.pl.$.nom.,4
+.m.,vant,vanto,o,.m.$.pl.$.nom.,4
+.m.,vant,vā,ā,.m.$.pl.$.voc.,4
+.m.,vant,vantā,ā,.m.$.pl.$.voc.,4
+.m.,vant,vanto,o,.m.$.pl.$.voc.,4
+.m.,vant,vantā,ā,.m.$.sg.$.abl.,4
+.m.,vant,vantamhā,mhā,.m.$.sg.$.abl.,4
+.m.,vant,vantasmā,smā,.m.$.sg.$.abl.,4
+.m.,vant,vatā,ā,.m.$.sg.$.abl.,4
+.m.,vant,vaṃ,ṃ,.m.$.sg.$.acc.,4
+.m.,vant,vantaṃ,ṃ,.m.$.sg.$.acc.,4
+.m.,vant,vantassa,ssa,.m.$.sg.$.dat.,4
+.m.,vant,vato,o,.m.$.sg.$.dat.,4
+.m.,vant,vantassa,ssa,.m.$.sg.$.gen.,4
+.m.,vant,vato,o,.m.$.sg.$.gen.,4
+.m.,vant,vatā,ā,.m.$.sg.$.inst.,4
+.m.,vant,vatena,ena,.m.$.sg.$.inst.,4
+.m.,vant,vantamhi,mhi,.m.$.sg.$.loc.,4
+.m.,vant,vantasmiṃ,smiṃ,.m.$.sg.$.loc.,4
+.m.,vant,vante,e,.m.$.sg.$.loc.,4
+.m.,vant,vati,i,.m.$.sg.$.loc.,4
+.m.,vant,vā,ā,.m.$.sg.$.nom.,4
+.m.,vant,vanto,o,.m.$.sg.$.nom.,4
+.m.,vant,va,a,.m.$.sg.$.voc.,4
+.m.,vant,vā,ā,.m.$.sg.$.voc.,4
+.m.,vant,vaṃ,ṃ,.m.$.sg.$.voc.,4
+.m.,vant,vanta,a,.m.$.sg.$.voc.,4
+.m.,vant,vantā,ā,.m.$.sg.$.voc.,4
+.nt.,vant,vantebhi,ebhi,.nt.$.pl.$.abl.,4
+.nt.,vant,vantehi,ehi,.nt.$.pl.$.abl.,4
+.nt.,vant,vante,e,.nt.$.pl.$.acc.,4
+.nt.,vant,vantānaṃ,ānaṃ,.nt.$.pl.$.dat.,4
+.nt.,vant,vataṃ,aṃ,.nt.$.pl.$.dat.,4
+.nt.,vant,vantānaṃ,ānaṃ,.nt.$.pl.$.gen.,4
+.nt.,vant,vataṃ,aṃ,.nt.$.pl.$.gen.,4
+.nt.,vant,vantebhi,ebhi,.nt.$.pl.$.inst.,4
+.nt.,vant,vantehi,ehi,.nt.$.pl.$.inst.,4
+.nt.,vant,vantesu,esu,.nt.$.pl.$.loc.,4
+.nt.,vant,vā,vā,.nt.$.pl.$.nom.,4
+.nt.,vant,vantā,ā,.nt.$.pl.$.nom.,4
+.nt.,vant,vanto,o,.nt.$.pl.$.nom.,4
+.nt.,vant,vā,vā,.nt.$.pl.$.voc.,4
+.nt.,vant,vantā,ā,.nt.$.pl.$.voc.,4
+.nt.,vant,vanto,o,.nt.$.pl.$.voc.,4
+.nt.,vant,vantā,ā,.nt.$.sg.$.abl.,4
+.nt.,vant,vantamhā,amhā,.nt.$.sg.$.abl.,4
+.nt.,vant,vantasmā,asmā,.nt.$.sg.$.abl.,4
+.nt.,vant,vatā,ā,.nt.$.sg.$.abl.,4
+.nt.,vant,vaṃ,vaṃ,.nt.$.sg.$.acc.,4
+.nt.,vant,vantaṃ,aṃ,.nt.$.sg.$.acc.,4
+.nt.,vant,vantassa,assa,.nt.$.sg.$.dat.,4
+.nt.,vant,vato,o,.nt.$.sg.$.dat.,4
+.nt.,vant,vantassa,assa,.nt.$.sg.$.gen.,4
+.nt.,vant,vato,o,.nt.$.sg.$.gen.,4
+.nt.,vant,vatā,ā,.nt.$.sg.$.inst.,4
+.nt.,vant,vatena,ena,.nt.$.sg.$.inst.,4
+.nt.,vant,vantamhi,amhi,.nt.$.sg.$.loc.,4
+.nt.,vant,vantasmiṃ,asmiṃ,.nt.$.sg.$.loc.,4
+.nt.,vant,vante,e,.nt.$.sg.$.loc.,4
+.nt.,vant,vati,i,.nt.$.sg.$.loc.,4
+.nt.,vant,vaṃ,vaṃ,.nt.$.sg.$.nom.,4
+.nt.,vant,vantaṃ,aṃ,.nt.$.sg.$.nom.,4
+.nt.,vant,va,a,.nt.$.sg.$.voc.,4
+.nt.,vant,vā,ā,.nt.$.sg.$.voc.,4
+.nt.,vant,vaṃ,ṃ,.nt.$.sg.$.voc.,4
+.nt.,vant,vanta,a,.nt.$.sg.$.voc.,4
+.nt.,vant,vantā,ā,.nt.$.sg.$.voc.,4
+.f.,vanta,vantībhi,ībhi,.f.$.pl.$.abl.,5
+.f.,vanta,vantīhi,īhi,.f.$.pl.$.abl.,5
+.f.,vanta,vatībhi,ībhi,.f.$.pl.$.abl.,5
+.f.,vanta,vatīhi,īhi,.f.$.pl.$.abl.,5
+.f.,vanta,vantī,ī,.f.$.pl.$.acc.,5
+.f.,vanta,vantiyo,iyo,.f.$.pl.$.acc.,5
+.f.,vanta,vatī,ī,.f.$.pl.$.acc.,5
+.f.,vanta,vatiyo,iyo,.f.$.pl.$.acc.,5
+.f.,vanta,vantīnaṃ,īnaṃ,.f.$.pl.$.dat.,5
+.f.,vanta,vatīnaṃ,īnaṃ,.f.$.pl.$.dat.,5
+.f.,vanta,vantīnaṃ,īnaṃ,.f.$.pl.$.gen.,5
+.f.,vanta,vatīnaṃ,īnaṃ,.f.$.pl.$.gen.,5
+.f.,vanta,vantībhi,ībhi,.f.$.pl.$.inst.,5
+.f.,vanta,vantīhi,īhi,.f.$.pl.$.inst.,5
+.f.,vanta,vatībhi,ībhi,.f.$.pl.$.inst.,5
+.f.,vanta,vatīhi,īhi,.f.$.pl.$.inst.,5
+.f.,vanta,vantīsu,īsu,.f.$.pl.$.loc.,5
+.f.,vanta,vatīsu,īsu,.f.$.pl.$.loc.,5
+.f.,vanta,vantī,ī,.f.$.pl.$.nom.,5
+.f.,vanta,vantiyo,iyo,.f.$.pl.$.nom.,5
+.f.,vanta,vatī,ī,.f.$.pl.$.nom.,5
+.f.,vanta,vatiyo,iyo,.f.$.pl.$.nom.,5
+.f.,vanta,vantī,ī,.f.$.pl.$.voc.,5
+.f.,vanta,vantiyo,iyo,.f.$.pl.$.voc.,5
+.f.,vanta,vatī,ī,.f.$.pl.$.voc.,5
+.f.,vanta,vatiyo,iyo,.f.$.pl.$.voc.,5
+.f.,vanta,vantiyā,iyā,.f.$.sg.$.abl.,5
+.f.,vanta,vatiyā,iyā,.f.$.sg.$.abl.,5
+.f.,vanta,vantiṃ,iṃ,.f.$.sg.$.acc.,5
+.f.,vanta,vatiṃ,iṃ,.f.$.sg.$.acc.,5
+.f.,vanta,vantiyā,iyā,.f.$.sg.$.dat.,5
+.f.,vanta,vatiyā,iyā,.f.$.sg.$.dat.,5
+.f.,vanta,vantiyā,iyā,.f.$.sg.$.gen.,5
+.f.,vanta,vatiyā,iyā,.f.$.sg.$.gen.,5
+.f.,vanta,vantiyā,iyā,.f.$.sg.$.inst.,5
+.f.,vanta,vatiyā,iyā,.f.$.sg.$.inst.,5
+.f.,vanta,vantiyā,iyā,.f.$.sg.$.loc.,5
+.f.,vanta,vantiyaṃ,iyaṃ,.f.$.sg.$.loc.,5
+.f.,vanta,vatiyā,iyā,.f.$.sg.$.loc.,5
+.f.,vanta,vatiyaṃ,iyaṃ,.f.$.sg.$.loc.,5
+.f.,vanta,vantī,ī,.f.$.sg.$.nom.,5
+.f.,vanta,vatī,ī,.f.$.sg.$.nom.,5
+.f.,vanta,vantī,ī,.f.$.sg.$.voc.,5
+.f.,vanta,vatī,ī,.f.$.sg.$.voc.,5
+.m.,vanta,vantebhi,ebhi,.m.$.pl.$.abl.,5
+.m.,vanta,vantehi,ehi,.m.$.pl.$.abl.,5
+.m.,vanta,vante,e,.m.$.pl.$.acc.,5
+.m.,vanta,vantānaṃ,naṃ,.m.$.pl.$.dat.,5
+.m.,vanta,vataṃ,ṃ,.m.$.pl.$.dat.,5
+.m.,vanta,vantānaṃ,naṃ,.m.$.pl.$.gen.,5
+.m.,vanta,vataṃ,ṃ,.m.$.pl.$.gen.,5
+.m.,vanta,vantebhi,ebhi,.m.$.pl.$.inst.,5
+.m.,vanta,vantehi,ehi,.m.$.pl.$.inst.,5
+.m.,vanta,vantesu,esu,.m.$.pl.$.loc.,5
+.m.,vanta,vā,ā,.m.$.pl.$.nom.,5
+.m.,vanta,vantā,ā,.m.$.pl.$.nom.,5
+.m.,vanta,vanto,o,.m.$.pl.$.nom.,5
+.m.,vanta,vā,ā,.m.$.pl.$.voc.,5
+.m.,vanta,vantā,ā,.m.$.pl.$.voc.,5
+.m.,vanta,vanto,o,.m.$.pl.$.voc.,5
+.m.,vanta,vantā,ā,.m.$.sg.$.abl.,5
+.m.,vanta,vantamhā,mhā,.m.$.sg.$.abl.,5
+.m.,vanta,vantasmā,smā,.m.$.sg.$.abl.,5
+.m.,vanta,vatā,ā,.m.$.sg.$.abl.,5
+.m.,vanta,vaṃ,ṃ,.m.$.sg.$.acc.,5
+.m.,vanta,vantaṃ,ṃ,.m.$.sg.$.acc.,5
+.m.,vanta,vantassa,ssa,.m.$.sg.$.dat.,5
+.m.,vanta,vato,o,.m.$.sg.$.dat.,5
+.m.,vanta,vantassa,ssa,.m.$.sg.$.gen.,5
+.m.,vanta,vato,o,.m.$.sg.$.gen.,5
+.m.,vanta,vatā,ā,.m.$.sg.$.inst.,5
+.m.,vanta,vatena,ena,.m.$.sg.$.inst.,5
+.m.,vanta,vantamhi,mhi,.m.$.sg.$.loc.,5
+.m.,vanta,vantasmiṃ,smiṃ,.m.$.sg.$.loc.,5
+.m.,vanta,vante,e,.m.$.sg.$.loc.,5
+.m.,vanta,vati,i,.m.$.sg.$.loc.,5
+.m.,vanta,vā,ā,.m.$.sg.$.nom.,5
+.m.,vanta,vanto,o,.m.$.sg.$.nom.,5
+.m.,vanta,va,a,.m.$.sg.$.voc.,5
+.m.,vanta,vā,ā,.m.$.sg.$.voc.,5
+.m.,vanta,vaṃ,ṃ,.m.$.sg.$.voc.,5
+.m.,vanta,vanta,a,.m.$.sg.$.voc.,5
+.m.,vanta,vantā,ā,.m.$.sg.$.voc.,5
+.nt.,vanta,vantebhi,ebhi,.nt.$.pl.$.abl.,5
+.nt.,vanta,vantehi,ehi,.nt.$.pl.$.abl.,5
+.nt.,vanta,vante,e,.nt.$.pl.$.acc.,5
+.nt.,vanta,vantānaṃ,ānaṃ,.nt.$.pl.$.dat.,5
+.nt.,vanta,vataṃ,aṃ,.nt.$.pl.$.dat.,5
+.nt.,vanta,vantānaṃ,ānaṃ,.nt.$.pl.$.gen.,5
+.nt.,vanta,vataṃ,aṃ,.nt.$.pl.$.gen.,5
+.nt.,vanta,vantebhi,ebhi,.nt.$.pl.$.inst.,5
+.nt.,vanta,vantehi,ehi,.nt.$.pl.$.inst.,5
+.nt.,vanta,vantesu,esu,.nt.$.pl.$.loc.,5
+.nt.,vanta,vā,vā,.nt.$.pl.$.nom.,5
+.nt.,vanta,vantā,ā,.nt.$.pl.$.nom.,5
+.nt.,vanta,vanto,o,.nt.$.pl.$.nom.,5
+.nt.,vanta,vā,vā,.nt.$.pl.$.voc.,5
+.nt.,vanta,vantā,ā,.nt.$.pl.$.voc.,5
+.nt.,vanta,vanto,o,.nt.$.pl.$.voc.,5
+.nt.,vanta,vantā,ā,.nt.$.sg.$.abl.,5
+.nt.,vanta,vantamhā,amhā,.nt.$.sg.$.abl.,5
+.nt.,vanta,vantasmā,asmā,.nt.$.sg.$.abl.,5
+.nt.,vanta,vatā,ā,.nt.$.sg.$.abl.,5
+.nt.,vanta,vaṃ,vaṃ,.nt.$.sg.$.acc.,5
+.nt.,vanta,vantaṃ,aṃ,.nt.$.sg.$.acc.,5
+.nt.,vanta,vantassa,assa,.nt.$.sg.$.dat.,5
+.nt.,vanta,vato,o,.nt.$.sg.$.dat.,5
+.nt.,vanta,vantassa,assa,.nt.$.sg.$.gen.,5
+.nt.,vanta,vato,o,.nt.$.sg.$.gen.,5
+.nt.,vanta,vatā,ā,.nt.$.sg.$.inst.,5
+.nt.,vanta,vatena,ena,.nt.$.sg.$.inst.,5
+.nt.,vanta,vantamhi,amhi,.nt.$.sg.$.loc.,5
+.nt.,vanta,vantasmiṃ,asmiṃ,.nt.$.sg.$.loc.,5
+.nt.,vanta,vante,e,.nt.$.sg.$.loc.,5
+.nt.,vanta,vati,i,.nt.$.sg.$.loc.,5
+.nt.,vanta,vaṃ,vaṃ,.nt.$.sg.$.nom.,5
+.nt.,vanta,vantaṃ,aṃ,.nt.$.sg.$.nom.,5
+.nt.,vanta,va,a,.nt.$.sg.$.voc.,5
+.nt.,vanta,vā,ā,.nt.$.sg.$.voc.,5
+.nt.,vanta,vaṃ,ṃ,.nt.$.sg.$.voc.,5
+.nt.,vanta,vanta,a,.nt.$.sg.$.voc.,5
+.nt.,vanta,vantā,ā,.nt.$.sg.$.voc.,5
+.f.,vat,vantībhi,ībhi,.f.$.pl.$.abl.,3
+.f.,vat,vantīhi,īhi,.f.$.pl.$.abl.,3
+.f.,vat,vatībhi,ībhi,.f.$.pl.$.abl.,3
+.f.,vat,vatīhi,īhi,.f.$.pl.$.abl.,3
+.f.,vat,vantī,ī,.f.$.pl.$.acc.,3
+.f.,vat,vantiyo,iyo,.f.$.pl.$.acc.,3
+.f.,vat,vatī,ī,.f.$.pl.$.acc.,3
+.f.,vat,vatiyo,iyo,.f.$.pl.$.acc.,3
+.f.,vat,vantīnaṃ,īnaṃ,.f.$.pl.$.dat.,3
+.f.,vat,vatīnaṃ,īnaṃ,.f.$.pl.$.dat.,3
+.f.,vat,vantīnaṃ,īnaṃ,.f.$.pl.$.gen.,3
+.f.,vat,vatīnaṃ,īnaṃ,.f.$.pl.$.gen.,3
+.f.,vat,vantībhi,ībhi,.f.$.pl.$.inst.,3
+.f.,vat,vantīhi,īhi,.f.$.pl.$.inst.,3
+.f.,vat,vatībhi,ībhi,.f.$.pl.$.inst.,3
+.f.,vat,vatīhi,īhi,.f.$.pl.$.inst.,3
+.f.,vat,vantīsu,īsu,.f.$.pl.$.loc.,3
+.f.,vat,vatīsu,īsu,.f.$.pl.$.loc.,3
+.f.,vat,vantī,ī,.f.$.pl.$.nom.,3
+.f.,vat,vantiyo,iyo,.f.$.pl.$.nom.,3
+.f.,vat,vatī,ī,.f.$.pl.$.nom.,3
+.f.,vat,vatiyo,iyo,.f.$.pl.$.nom.,3
+.f.,vat,vantī,ī,.f.$.pl.$.voc.,3
+.f.,vat,vantiyo,iyo,.f.$.pl.$.voc.,3
+.f.,vat,vatī,ī,.f.$.pl.$.voc.,3
+.f.,vat,vatiyo,iyo,.f.$.pl.$.voc.,3
+.f.,vat,vantiyā,iyā,.f.$.sg.$.abl.,3
+.f.,vat,vatiyā,iyā,.f.$.sg.$.abl.,3
+.f.,vat,vantiṃ,iṃ,.f.$.sg.$.acc.,3
+.f.,vat,vatiṃ,iṃ,.f.$.sg.$.acc.,3
+.f.,vat,vantiyā,iyā,.f.$.sg.$.dat.,3
+.f.,vat,vatiyā,iyā,.f.$.sg.$.dat.,3
+.f.,vat,vantiyā,iyā,.f.$.sg.$.gen.,3
+.f.,vat,vatiyā,iyā,.f.$.sg.$.gen.,3
+.f.,vat,vantiyā,iyā,.f.$.sg.$.inst.,3
+.f.,vat,vatiyā,iyā,.f.$.sg.$.inst.,3
+.f.,vat,vantiyā,iyā,.f.$.sg.$.loc.,3
+.f.,vat,vantiyaṃ,iyaṃ,.f.$.sg.$.loc.,3
+.f.,vat,vatiyā,iyā,.f.$.sg.$.loc.,3
+.f.,vat,vatiyaṃ,iyaṃ,.f.$.sg.$.loc.,3
+.f.,vat,vantī,ī,.f.$.sg.$.nom.,3
+.f.,vat,vatī,ī,.f.$.sg.$.nom.,3
+.f.,vat,vantī,ī,.f.$.sg.$.voc.,3
+.f.,vat,vatī,ī,.f.$.sg.$.voc.,3
+.m.,vat,vantebhi,ebhi,.m.$.pl.$.abl.,3
+.m.,vat,vantehi,ehi,.m.$.pl.$.abl.,3
+.m.,vat,vante,e,.m.$.pl.$.acc.,3
+.m.,vat,vantānaṃ,naṃ,.m.$.pl.$.dat.,3
+.m.,vat,vataṃ,ṃ,.m.$.pl.$.dat.,3
+.m.,vat,vantānaṃ,naṃ,.m.$.pl.$.gen.,3
+.m.,vat,vataṃ,ṃ,.m.$.pl.$.gen.,3
+.m.,vat,vantebhi,ebhi,.m.$.pl.$.inst.,3
+.m.,vat,vantehi,ehi,.m.$.pl.$.inst.,3
+.m.,vat,vantesu,esu,.m.$.pl.$.loc.,3
+.m.,vat,vā,ā,.m.$.pl.$.nom.,3
+.m.,vat,vantā,ā,.m.$.pl.$.nom.,3
+.m.,vat,vanto,o,.m.$.pl.$.nom.,3
+.m.,vat,vā,ā,.m.$.pl.$.voc.,3
+.m.,vat,vantā,ā,.m.$.pl.$.voc.,3
+.m.,vat,vanto,o,.m.$.pl.$.voc.,3
+.m.,vat,vantā,ā,.m.$.sg.$.abl.,3
+.m.,vat,vantamhā,mhā,.m.$.sg.$.abl.,3
+.m.,vat,vantasmā,smā,.m.$.sg.$.abl.,3
+.m.,vat,vatā,ā,.m.$.sg.$.abl.,3
+.m.,vat,vaṃ,ṃ,.m.$.sg.$.acc.,3
+.m.,vat,vantaṃ,ṃ,.m.$.sg.$.acc.,3
+.m.,vat,vantassa,ssa,.m.$.sg.$.dat.,3
+.m.,vat,vato,o,.m.$.sg.$.dat.,3
+.m.,vat,vantassa,ssa,.m.$.sg.$.gen.,3
+.m.,vat,vato,o,.m.$.sg.$.gen.,3
+.m.,vat,vatā,ā,.m.$.sg.$.inst.,3
+.m.,vat,vatena,ena,.m.$.sg.$.inst.,3
+.m.,vat,vantamhi,mhi,.m.$.sg.$.loc.,3
+.m.,vat,vantasmiṃ,smiṃ,.m.$.sg.$.loc.,3
+.m.,vat,vante,e,.m.$.sg.$.loc.,3
+.m.,vat,vati,i,.m.$.sg.$.loc.,3
+.m.,vat,vā,ā,.m.$.sg.$.nom.,3
+.m.,vat,vanto,o,.m.$.sg.$.nom.,3
+.m.,vat,va,a,.m.$.sg.$.voc.,3
+.m.,vat,vā,ā,.m.$.sg.$.voc.,3
+.m.,vat,vaṃ,ṃ,.m.$.sg.$.voc.,3
+.m.,vat,vanta,a,.m.$.sg.$.voc.,3
+.m.,vat,vantā,ā,.m.$.sg.$.voc.,3
+.nt.,vat,vantebhi,ebhi,.nt.$.pl.$.abl.,3
+.nt.,vat,vantehi,ehi,.nt.$.pl.$.abl.,3
+.nt.,vat,vante,e,.nt.$.pl.$.acc.,3
+.nt.,vat,vantānaṃ,ānaṃ,.nt.$.pl.$.dat.,3
+.nt.,vat,vataṃ,aṃ,.nt.$.pl.$.dat.,3
+.nt.,vat,vantānaṃ,ānaṃ,.nt.$.pl.$.gen.,3
+.nt.,vat,vataṃ,aṃ,.nt.$.pl.$.gen.,3
+.nt.,vat,vantebhi,ebhi,.nt.$.pl.$.inst.,3
+.nt.,vat,vantehi,ehi,.nt.$.pl.$.inst.,3
+.nt.,vat,vantesu,esu,.nt.$.pl.$.loc.,3
+.nt.,vat,vā,vā,.nt.$.pl.$.nom.,3
+.nt.,vat,vantā,ā,.nt.$.pl.$.nom.,3
+.nt.,vat,vanto,o,.nt.$.pl.$.nom.,3
+.nt.,vat,vā,vā,.nt.$.pl.$.voc.,3
+.nt.,vat,vantā,ā,.nt.$.pl.$.voc.,3
+.nt.,vat,vanto,o,.nt.$.pl.$.voc.,3
+.nt.,vat,vantā,ā,.nt.$.sg.$.abl.,3
+.nt.,vat,vantamhā,amhā,.nt.$.sg.$.abl.,3
+.nt.,vat,vantasmā,asmā,.nt.$.sg.$.abl.,3
+.nt.,vat,vatā,ā,.nt.$.sg.$.abl.,3
+.nt.,vat,vaṃ,vaṃ,.nt.$.sg.$.acc.,3
+.nt.,vat,vantaṃ,aṃ,.nt.$.sg.$.acc.,3
+.nt.,vat,vantassa,assa,.nt.$.sg.$.dat.,3
+.nt.,vat,vato,o,.nt.$.sg.$.dat.,3
+.nt.,vat,vantassa,assa,.nt.$.sg.$.gen.,3
+.nt.,vat,vato,o,.nt.$.sg.$.gen.,3
+.nt.,vat,vatā,ā,.nt.$.sg.$.inst.,3
+.nt.,vat,vatena,ena,.nt.$.sg.$.inst.,3
+.nt.,vat,vantamhi,amhi,.nt.$.sg.$.loc.,3
+.nt.,vat,vantasmiṃ,asmiṃ,.nt.$.sg.$.loc.,3
+.nt.,vat,vante,e,.nt.$.sg.$.loc.,3
+.nt.,vat,vati,i,.nt.$.sg.$.loc.,3
+.nt.,vat,vaṃ,vaṃ,.nt.$.sg.$.nom.,3
+.nt.,vat,vantaṃ,aṃ,.nt.$.sg.$.nom.,3
+.nt.,vat,va,a,.nt.$.sg.$.voc.,3
+.nt.,vat,vā,ā,.nt.$.sg.$.voc.,3
+.nt.,vat,vaṃ,ṃ,.nt.$.sg.$.voc.,3
+.nt.,vat,vanta,a,.nt.$.sg.$.voc.,3
+.nt.,vat,vantā,ā,.nt.$.sg.$.voc.,3
+.f.,vata,vantībhi,ībhi,.f.$.pl.$.abl.,4
+.f.,vata,vantīhi,īhi,.f.$.pl.$.abl.,4
+.f.,vata,vatībhi,ībhi,.f.$.pl.$.abl.,4
+.f.,vata,vatīhi,īhi,.f.$.pl.$.abl.,4
+.f.,vata,vantī,ī,.f.$.pl.$.acc.,4
+.f.,vata,vantiyo,iyo,.f.$.pl.$.acc.,4
+.f.,vata,vatī,ī,.f.$.pl.$.acc.,4
+.f.,vata,vatiyo,iyo,.f.$.pl.$.acc.,4
+.f.,vata,vantīnaṃ,īnaṃ,.f.$.pl.$.dat.,4
+.f.,vata,vatīnaṃ,īnaṃ,.f.$.pl.$.dat.,4
+.f.,vata,vantīnaṃ,īnaṃ,.f.$.pl.$.gen.,4
+.f.,vata,vatīnaṃ,īnaṃ,.f.$.pl.$.gen.,4
+.f.,vata,vantībhi,ībhi,.f.$.pl.$.inst.,4
+.f.,vata,vantīhi,īhi,.f.$.pl.$.inst.,4
+.f.,vata,vatībhi,ībhi,.f.$.pl.$.inst.,4
+.f.,vata,vatīhi,īhi,.f.$.pl.$.inst.,4
+.f.,vata,vantīsu,īsu,.f.$.pl.$.loc.,4
+.f.,vata,vatīsu,īsu,.f.$.pl.$.loc.,4
+.f.,vata,vantī,ī,.f.$.pl.$.nom.,4
+.f.,vata,vantiyo,iyo,.f.$.pl.$.nom.,4
+.f.,vata,vatī,ī,.f.$.pl.$.nom.,4
+.f.,vata,vatiyo,iyo,.f.$.pl.$.nom.,4
+.f.,vata,vantī,ī,.f.$.pl.$.voc.,4
+.f.,vata,vantiyo,iyo,.f.$.pl.$.voc.,4
+.f.,vata,vatī,ī,.f.$.pl.$.voc.,4
+.f.,vata,vatiyo,iyo,.f.$.pl.$.voc.,4
+.f.,vata,vantiyā,iyā,.f.$.sg.$.abl.,4
+.f.,vata,vatiyā,iyā,.f.$.sg.$.abl.,4
+.f.,vata,vantiṃ,iṃ,.f.$.sg.$.acc.,4
+.f.,vata,vatiṃ,iṃ,.f.$.sg.$.acc.,4
+.f.,vata,vantiyā,iyā,.f.$.sg.$.dat.,4
+.f.,vata,vatiyā,iyā,.f.$.sg.$.dat.,4
+.f.,vata,vantiyā,iyā,.f.$.sg.$.gen.,4
+.f.,vata,vatiyā,iyā,.f.$.sg.$.gen.,4
+.f.,vata,vantiyā,iyā,.f.$.sg.$.inst.,4
+.f.,vata,vatiyā,iyā,.f.$.sg.$.inst.,4
+.f.,vata,vantiyā,iyā,.f.$.sg.$.loc.,4
+.f.,vata,vantiyaṃ,iyaṃ,.f.$.sg.$.loc.,4
+.f.,vata,vatiyā,iyā,.f.$.sg.$.loc.,4
+.f.,vata,vatiyaṃ,iyaṃ,.f.$.sg.$.loc.,4
+.f.,vata,vantī,ī,.f.$.sg.$.nom.,4
+.f.,vata,vatī,ī,.f.$.sg.$.nom.,4
+.f.,vata,vantī,ī,.f.$.sg.$.voc.,4
+.f.,vata,vatī,ī,.f.$.sg.$.voc.,4
+.m.,vata,vantebhi,ebhi,.m.$.pl.$.abl.,4
+.m.,vata,vantehi,ehi,.m.$.pl.$.abl.,4
+.m.,vata,vante,e,.m.$.pl.$.acc.,4
+.m.,vata,vantānaṃ,naṃ,.m.$.pl.$.dat.,4
+.m.,vata,vataṃ,ṃ,.m.$.pl.$.dat.,4
+.m.,vata,vantānaṃ,naṃ,.m.$.pl.$.gen.,4
+.m.,vata,vataṃ,ṃ,.m.$.pl.$.gen.,4
+.m.,vata,vantebhi,ebhi,.m.$.pl.$.inst.,4
+.m.,vata,vantehi,ehi,.m.$.pl.$.inst.,4
+.m.,vata,vantesu,esu,.m.$.pl.$.loc.,4
+.m.,vata,vā,ā,.m.$.pl.$.nom.,4
+.m.,vata,vantā,ā,.m.$.pl.$.nom.,4
+.m.,vata,vanto,o,.m.$.pl.$.nom.,4
+.m.,vata,vā,ā,.m.$.pl.$.voc.,4
+.m.,vata,vantā,ā,.m.$.pl.$.voc.,4
+.m.,vata,vanto,o,.m.$.pl.$.voc.,4
+.m.,vata,vantā,ā,.m.$.sg.$.abl.,4
+.m.,vata,vantamhā,mhā,.m.$.sg.$.abl.,4
+.m.,vata,vantasmā,smā,.m.$.sg.$.abl.,4
+.m.,vata,vatā,ā,.m.$.sg.$.abl.,4
+.m.,vata,vaṃ,ṃ,.m.$.sg.$.acc.,4
+.m.,vata,vantaṃ,ṃ,.m.$.sg.$.acc.,4
+.m.,vata,vantassa,ssa,.m.$.sg.$.dat.,4
+.m.,vata,vato,o,.m.$.sg.$.dat.,4
+.m.,vata,vantassa,ssa,.m.$.sg.$.gen.,4
+.m.,vata,vato,o,.m.$.sg.$.gen.,4
+.m.,vata,vatā,ā,.m.$.sg.$.inst.,4
+.m.,vata,vatena,ena,.m.$.sg.$.inst.,4
+.m.,vata,vantamhi,mhi,.m.$.sg.$.loc.,4
+.m.,vata,vantasmiṃ,smiṃ,.m.$.sg.$.loc.,4
+.m.,vata,vante,e,.m.$.sg.$.loc.,4
+.m.,vata,vati,i,.m.$.sg.$.loc.,4
+.m.,vata,vā,ā,.m.$.sg.$.nom.,4
+.m.,vata,vanto,o,.m.$.sg.$.nom.,4
+.m.,vata,va,a,.m.$.sg.$.voc.,4
+.m.,vata,vā,ā,.m.$.sg.$.voc.,4
+.m.,vata,vaṃ,ṃ,.m.$.sg.$.voc.,4
+.m.,vata,vanta,a,.m.$.sg.$.voc.,4
+.m.,vata,vantā,ā,.m.$.sg.$.voc.,4
+.nt.,vata,vantebhi,ebhi,.nt.$.pl.$.abl.,4
+.nt.,vata,vantehi,ehi,.nt.$.pl.$.abl.,4
+.nt.,vata,vante,e,.nt.$.pl.$.acc.,4
+.nt.,vata,vantānaṃ,ānaṃ,.nt.$.pl.$.dat.,4
+.nt.,vata,vataṃ,aṃ,.nt.$.pl.$.dat.,4
+.nt.,vata,vantānaṃ,ānaṃ,.nt.$.pl.$.gen.,4
+.nt.,vata,vataṃ,aṃ,.nt.$.pl.$.gen.,4
+.nt.,vata,vantebhi,ebhi,.nt.$.pl.$.inst.,4
+.nt.,vata,vantehi,ehi,.nt.$.pl.$.inst.,4
+.nt.,vata,vantesu,esu,.nt.$.pl.$.loc.,4
+.nt.,vata,vā,vā,.nt.$.pl.$.nom.,4
+.nt.,vata,vantā,ā,.nt.$.pl.$.nom.,4
+.nt.,vata,vanto,o,.nt.$.pl.$.nom.,4
+.nt.,vata,vā,vā,.nt.$.pl.$.voc.,4
+.nt.,vata,vantā,ā,.nt.$.pl.$.voc.,4
+.nt.,vata,vanto,o,.nt.$.pl.$.voc.,4
+.nt.,vata,vantā,ā,.nt.$.sg.$.abl.,4
+.nt.,vata,vantamhā,amhā,.nt.$.sg.$.abl.,4
+.nt.,vata,vantasmā,asmā,.nt.$.sg.$.abl.,4
+.nt.,vata,vatā,ā,.nt.$.sg.$.abl.,4
+.nt.,vata,vaṃ,vaṃ,.nt.$.sg.$.acc.,4
+.nt.,vata,vantaṃ,aṃ,.nt.$.sg.$.acc.,4
+.nt.,vata,vantassa,assa,.nt.$.sg.$.dat.,4
+.nt.,vata,vato,o,.nt.$.sg.$.dat.,4
+.nt.,vata,vantassa,assa,.nt.$.sg.$.gen.,4
+.nt.,vata,vato,o,.nt.$.sg.$.gen.,4
+.nt.,vata,vatā,ā,.nt.$.sg.$.inst.,4
+.nt.,vata,vatena,ena,.nt.$.sg.$.inst.,4
+.nt.,vata,vantamhi,amhi,.nt.$.sg.$.loc.,4
+.nt.,vata,vantasmiṃ,asmiṃ,.nt.$.sg.$.loc.,4
+.nt.,vata,vante,e,.nt.$.sg.$.loc.,4
+.nt.,vata,vati,i,.nt.$.sg.$.loc.,4
+.nt.,vata,vaṃ,vaṃ,.nt.$.sg.$.nom.,4
+.nt.,vata,vantaṃ,aṃ,.nt.$.sg.$.nom.,4
+.nt.,vata,va,a,.nt.$.sg.$.voc.,4
+.nt.,vata,vā,ā,.nt.$.sg.$.voc.,4
+.nt.,vata,vaṃ,ṃ,.nt.$.sg.$.voc.,4
+.nt.,vata,vanta,a,.nt.$.sg.$.voc.,4
+.nt.,vata,vantā,ā,.nt.$.sg.$.voc.,4

+ 1060 - 0
public/app/public/ending/noun.csv

@@ -0,0 +1,1060 @@
+type,end,end1,end2,grammar,endlen
+.m.,a,o,o,.m.$.sg.$.nom.,1
+.m.,a,a,a,.m.$.sg.$.voc.,1
+.m.,a,ā,ā,.m.$.sg.$.voc.,1
+.m.,a,aṃ,ṃ,.m.$.sg.$.acc.,1
+.m.,a,assa,sa,.m.$.sg.$.gen.,1
+.m.,a,assa,sa,.m.$.sg.$.dat.,1
+.m.,a,āya,āya,.m.$.sg.$.dat.,1
+.m.,a,ena,na,.m.$.sg.$.inst.,1
+.m.,a,ā,ā,.m.$.sg.$.abl.,1
+.m.,a,asmā,smā,.m.$.sg.$.abl.,1
+.m.,a,amhā,mhā,.m.$.sg.$.abl.,1
+.m.,a,ato,to,.m.$.sg.$.abl.,1
+.m.,a,e,i,.m.$.sg.$.loc.,1
+.m.,a,asmiṃ,smiṃ,.m.$.sg.$.loc.,1
+.m.,a,amhi,mhi,.m.$.sg.$.loc.,1
+.m.,a,ā,a,.m.$.pl.$.nom.,1
+.m.,a,āse,āse,.m.$.pl.$.nom.,1
+.m.,a,ā,a,.m.$.pl.$.voc.,1
+.m.,a,e,e,.m.$.pl.$.acc.,1
+.m.,a,ānaṃ,naṃ,.m.$.pl.$.gen.,1
+.m.,a,ānaṃ,naṃ,.m.$.pl.$.dat.,1
+.m.,a,ehi,hi,.m.$.pl.$.inst.,1
+.m.,a,ebhi,bhi,.m.$.pl.$.inst.,1
+.m.,a,ehi,hi,.m.$.pl.$.abl.,1
+.m.,a,ebhi,bhi,.m.$.pl.$.abl.,1
+.m.,a,esu,su,.m.$.pl.$.loc.,1
+.nt.,a,aṃ,ṃ,.nt.$.sg.$.nom.,1
+.nt.,a,a,a,.nt.$.sg.$.voc.,1
+.nt.,a,aṃ,ṃ,.nt.$.sg.$.acc.,1
+.nt.,a,assa,sa,.nt.$.sg.$.gen.,1
+.nt.,a,assa,sa,.nt.$.sg.$.dat.,1
+.nt.,a,āya,āya,.nt.$.sg.$.dat.,1
+.nt.,a,ena,na,.nt.$.sg.$.inst.,1
+.nt.,a,ā,ā,.nt.$.sg.$.abl.,1
+.nt.,a,asmā,smā,.nt.$.sg.$.abl.,1
+.nt.,a,amhā,mhā,.nt.$.sg.$.abl.,1
+.nt.,a,ato,to,.nt.$.sg.$.abl.,1
+.nt.,a,e,i,.nt.$.sg.$.loc.,1
+.nt.,a,asmiṃ,smiṃ,.nt.$.sg.$.loc.,1
+.nt.,a,amhi,mhi,.nt.$.sg.$.loc.,1
+.nt.,a,āni,ni,.nt.$.pl.$.nom.,1
+.nt.,a,ā,a,.nt.$.pl.$.nom.,1
+.nt.,a,āni,ni,.nt.$.pl.$.voc.,1
+.nt.,a,ā,ā,.nt.$.pl.$.voc.,1
+.nt.,a,āni,ni,.nt.$.pl.$.acc.,1
+.nt.,a,e,e,.nt.$.pl.$.acc.,1
+.nt.,a,ānaṃ,naṃ,.nt.$.pl.$.gen.,1
+.nt.,a,ānaṃ,naṃ,.nt.$.pl.$.dat.,1
+.nt.,a,ehi,hi,.nt.$.pl.$.inst.,1
+.nt.,a,ebhi,bhi,.nt.$.pl.$.inst.,1
+.nt.,a,ehi,hi,.nt.$.pl.$.abl.,1
+.nt.,a,ebhi,bhi,.nt.$.pl.$.abl.,1
+.nt.,a,esu,su,.nt.$.pl.$.loc.,1
+.f.,ā,ā,ā,.f.$.sg.$.nom.,1
+.f.,ā,ā,ā,.f.$.sg.$.voc.,1
+.f.,ā,e,e,.f.$.sg.$.voc.,1
+.f.,ā,aṃ,ṃ,.f.$.sg.$.acc.,1
+.f.,ā,āya,ya,.f.$.sg.$.gen.,1
+.f.,ā,āya,ya,.f.$.sg.$.dat.,1
+.f.,ā,āya,ya,.f.$.sg.$.inst.,1
+.f.,ā,āya,ya,.f.$.sg.$.abl.,1
+.f.,ā,ato,to,.f.$.sg.$.abl.,1
+.f.,ā,āya,ya,.f.$.sg.$.loc.,1
+.f.,ā,āyaṃ,yaṃ,.f.$.sg.$.loc.,1
+.f.,ā,ā,ā,.f.$.pl.$.nom.,1
+.f.,ā,āyo,yo,.f.$.pl.$.nom.,1
+.f.,ā,ā,ā,.f.$.pl.$.voc.,1
+.f.,ā,āyo,yo,.f.$.pl.$.voc.,1
+.f.,ā,ā,ā,.f.$.pl.$.acc.,1
+.f.,ā,āyo,yo,.f.$.pl.$.acc.,1
+.f.,ā,ānaṃ,naṃ,.f.$.pl.$.gen.,1
+.f.,ā,ānaṃ,naṃ,.f.$.pl.$.dat.,1
+.f.,ā,āhi,hi,.f.$.pl.$.inst.,1
+.f.,ā,ābhi,bhi,.f.$.pl.$.inst.,1
+.f.,ā,āhi,hi,.f.$.pl.$.abl.,1
+.f.,ā,ābhi,bhi,.f.$.pl.$.abl.,1
+.f.,ā,āsu,su,.f.$.pl.$.loc.,1
+.m.,i,i,i,.m.$.sg.$.nom.,1
+.m.,i,i,i,.m.$.sg.$.voc.,1
+.m.,i,iṃ,ṃ,.m.$.sg.$.acc.,1
+.m.,i,issa,sa,.m.$.sg.$.gen.,1
+.m.,i,ino,no,.m.$.sg.$.gen.,1
+.m.,i,issa,sa,.m.$.sg.$.dat.,1
+.m.,i,ino,no,.m.$.sg.$.dat.,1
+.m.,i,inā,nā,.m.$.sg.$.inst.,1
+.m.,i,inā,nā,.m.$.sg.$.abl.,1
+.m.,i,ismā,smā,.m.$.sg.$.abl.,1
+.m.,i,imhā,mhā,.m.$.sg.$.abl.,1
+.m.,i,ismiṃ,smiṃ,.m.$.sg.$.loc.,1
+.m.,i,imhi,mhi,.m.$.sg.$.loc.,1
+.m.,i,ī,ī,.m.$.pl.$.nom.,1
+.m.,i,ayo,yo,.m.$.pl.$.nom.,1
+.m.,i,ī,ī,.m.$.pl.$.voc.,1
+.m.,i,ayo,yo,.m.$.pl.$.voc.,1
+.m.,i,ī,ī,.m.$.pl.$.acc.,1
+.m.,i,ayo,yo,.m.$.pl.$.acc.,1
+.m.,i,īnaṃ,naṃ,.m.$.pl.$.gen.,1
+.m.,i,īnaṃ,naṃ,.m.$.pl.$.dat.,1
+.m.,i,īhi,hi,.m.$.pl.$.inst.,1
+.m.,i,ībhi,bhi,.m.$.pl.$.inst.,1
+.m.,i,īhi,hi,.m.$.pl.$.abl.,1
+.m.,i,ībhi,bhi,.m.$.pl.$.abl.,1
+.m.,i,īsu,su,.m.$.pl.$.loc.,1
+.nt.,i,i,i,.nt.$.sg.$.nom.,1
+.nt.,i,i,i,.nt.$.sg.$.voc.,1
+.nt.,i,iṃ,ṃ,.nt.$.sg.$.acc.,1
+.nt.,i,assa,sa,.nt.$.sg.$.gen.,1
+.nt.,i,ino,no,.nt.$.sg.$.gen.,1
+.nt.,i,assa,sa,.nt.$.sg.$.dat.,1
+.nt.,i,ino,no,.nt.$.sg.$.dat.,1
+.nt.,i,inā,nā,.nt.$.sg.$.inst.,1
+.nt.,i,inā,nā,.nt.$.sg.$.abl.,1
+.nt.,i,ismā,smā,.nt.$.sg.$.abl.,1
+.nt.,i,imhā,mhā,.nt.$.sg.$.abl.,1
+.nt.,i,ismiṃ,smiṃ,.nt.$.sg.$.loc.,1
+.nt.,i,imhi,mhi,.nt.$.sg.$.loc.,1
+.nt.,i,īni,ni,.nt.$.pl.$.nom.,1
+.nt.,i,ī,ī,.nt.$.pl.$.nom.,1
+.nt.,i,īni,ni,.nt.$.pl.$.voc.,1
+.nt.,i,ī,ī,.nt.$.pl.$.voc.,1
+.nt.,i,īni,ni,.nt.$.pl.$.acc.,1
+.nt.,i,ī,ī,.nt.$.pl.$.acc.,1
+.nt.,i,īnaṃ,naṃ,.nt.$.pl.$.gen.,1
+.nt.,i,īnaṃ,naṃ,.nt.$.pl.$.dat.,1
+.nt.,i,īhi,hi,.nt.$.pl.$.inst.,1
+.nt.,i,ībhi,bhi,.nt.$.pl.$.inst.,1
+.nt.,i,īhi,hi,.nt.$.pl.$.abl.,1
+.nt.,i,ībhi,bhi,.nt.$.pl.$.abl.,1
+.nt.,i,īsu,su,.nt.$.pl.$.loc.,1
+.f.,i,i,i,.f.$.sg.$.nom.,1
+.f.,i,i,i,.f.$.sg.$.voc.,1
+.f.,i,iṃ,ṃ,.f.$.sg.$.acc.,1
+.f.,i,iyā,ā,.f.$.sg.$.gen.,1
+.f.,i,yā,ā,.f.$.sg.$.gen.,1
+.f.,i,iyā,ā,.f.$.sg.$.dat.,1
+.f.,i,yā,ā,.f.$.sg.$.dat.,1
+.f.,i,iyā,ā,.f.$.sg.$.inst.,1
+.f.,i,yā,ā,.f.$.sg.$.inst.,1
+.f.,i,iyā,ā,.f.$.sg.$.abl.,1
+.f.,i,yā,ā,.f.$.sg.$.abl.,1
+.f.,i,iyā,ā,.f.$.sg.$.loc.,1
+.f.,i,yā,ā,.f.$.sg.$.loc.,1
+.f.,i,iyaṃ,ṃ,.f.$.sg.$.loc.,1
+.f.,i,yaṃ,ṃ,.f.$.sg.$.loc.,1
+.f.,i,ī,ī,.f.$.pl.$.nom.,1
+.f.,i,iyo,yo,.f.$.pl.$.nom.,1
+.f.,i,yo,yo,.f.$.pl.$.nom.,1
+.f.,i,ī,ī,.f.$.pl.$.voc.,1
+.f.,i,iyo,yo,.f.$.pl.$.voc.,1
+.f.,i,yo,yo,.f.$.pl.$.voc.,1
+.f.,i,ī,ī,.f.$.pl.$.acc.,1
+.f.,i,iyo,yo,.f.$.pl.$.acc.,1
+.f.,i,yo,yo,.f.$.pl.$.acc.,1
+.f.,i,īnaṃ,naṃ,.f.$.pl.$.gen.,1
+.f.,i,īnaṃ,naṃ,.f.$.pl.$.dat.,1
+.f.,i,īhi,hi,.f.$.pl.$.inst.,1
+.f.,i,ībhi,bhi,.f.$.pl.$.inst.,1
+.f.,i,īhi,hi,.f.$.pl.$.abl.,1
+.f.,i,ībhi,bhi,.f.$.pl.$.abl.,1
+.f.,i,īsu,su,.f.$.pl.$.loc.,1
+.m.,ī,ī,ī,.m.$.sg.$.nom.,1
+.m.,in,ī,ī,.m.$.sg.$.nom.,2
+.m.,ī,ī,ī,.m.$.sg.$.voc.,1
+.m.,ī,inī,nī,.m.$.sg.$.voc.,1
+.m.,in,ī,ī,.m.$.sg.$.voc.,2
+.m.,in,inī,nī,.m.$.sg.$.voc.,2
+.m.,ī,iṃ,ṃ,.m.$.sg.$.acc.,1
+.m.,ī,inaṃ,naṃ,.m.$.sg.$.acc.,1
+.m.,in,iṃ,ṃ,.m.$.sg.$.acc.,2
+.m.,in,inaṃ,naṃ,.m.$.sg.$.acc.,2
+.m.,ī,issa,sa,.m.$.sg.$.gen.,1
+.m.,ī,ino,no,.m.$.sg.$.gen.,1
+.m.,in,issa,sa,.m.$.sg.$.gen.,2
+.m.,in,ino,no,.m.$.sg.$.gen.,2
+.m.,ī,issa,sa,.m.$.sg.$.dat.,1
+.m.,ī,ino,no,.m.$.sg.$.dat.,1
+.m.,in,issa,sa,.m.$.sg.$.dat.,2
+.m.,in,ino,no,.m.$.sg.$.dat.,2
+.m.,ī,inā,nā,.m.$.sg.$.inst.,1
+.m.,in,inā,nā,.m.$.sg.$.inst.,2
+.m.,ī,inā,nā,.m.$.sg.$.abl.,1
+.m.,ī,ismā,smā,.m.$.sg.$.abl.,1
+.m.,ī,imhā,mhā,.m.$.sg.$.abl.,1
+.m.,in,inā,nā,.m.$.sg.$.abl.,2
+.m.,in,ismā,smā,.m.$.sg.$.abl.,2
+.m.,in,imhā,mhā,.m.$.sg.$.abl.,2
+.m.,ī,ismiṃ,smiṃ,.m.$.sg.$.loc.,1
+.m.,ī,imhi,mhi,.m.$.sg.$.loc.,1
+.m.,in,ismiṃ,smiṃ,.m.$.sg.$.loc.,2
+.m.,in,imhi,mhi,.m.$.sg.$.loc.,2
+.m.,ī,ī,ī,.m.$.pl.$.nom.,1
+.m.,ī,ino,no,.m.$.pl.$.nom.,1
+.m.,in,ī,ī,.m.$.pl.$.nom.,2
+.m.,in,ino,no,.m.$.pl.$.nom.,2
+.m.,ī,ī,ī,.m.$.pl.$.voc.,1
+.m.,ī,ino,no,.m.$.pl.$.voc.,1
+.m.,in,ī,ī,.m.$.pl.$.voc.,2
+.m.,in,ino,no,.m.$.pl.$.voc.,2
+.m.,ī,ī,ī,.m.$.pl.$.acc.,1
+.m.,ī,ino,no,.m.$.pl.$.acc.,1
+.m.,in,ī,ī,.m.$.pl.$.acc.,2
+.m.,in,ino,no,.m.$.pl.$.acc.,2
+.m.,ī,inaṃ,naṃ,.m.$.pl.$.gen.,1
+.m.,in,inaṃ,naṃ,.m.$.pl.$.gen.,2
+.m.,ī,inaṃ,naṃ,.m.$.pl.$.dat.,1
+.m.,in,inaṃ,naṃ,.m.$.pl.$.dat.,2
+.m.,ī,īhi,hi,.m.$.pl.$.inst.,1
+.m.,ī,ībhi,bhi,.m.$.pl.$.inst.,1
+.m.,in,īhi,hi,.m.$.pl.$.inst.,2
+.m.,in,ībhi,bhi,.m.$.pl.$.inst.,2
+.m.,ī,īhi,hi,.m.$.pl.$.abl.,1
+.m.,ī,ībhi,bhi,.m.$.pl.$.abl.,1
+.m.,in,īhi,hi,.m.$.pl.$.abl.,2
+.m.,in,ībhi,bhi,.m.$.pl.$.abl.,2
+.m.,ī,īsu,su,.m.$.pl.$.loc.,1
+.m.,in,īsu,su,.m.$.pl.$.loc.,2
+.f.,ī,ī,i,.f.$.sg.$.nom.,1
+.f.,ī,ī,ī,.f.$.sg.$.voc.,1
+.f.,ī,iṃ,ṃ,.f.$.sg.$.acc.,1
+.f.,ī,iyā,ā,.f.$.sg.$.gen.,1
+.f.,ī,ayā,ā,.f.$.sg.$.gen.,1
+.f.,ī,yā,ā,.f.$.sg.$.gen.,1
+.f.,ī,iyā,ā,.f.$.sg.$.dat.,1
+.f.,ī,ayā,ā,.f.$.sg.$.dat.,1
+.f.,ī,yā,ā,.f.$.sg.$.dat.,1
+.f.,ī,iyā,ā,.f.$.sg.$.inst.,1
+.f.,ī,ayā,ā,.f.$.sg.$.inst.,1
+.f.,ī,yā,ā,.f.$.sg.$.inst.,1
+.f.,ī,iyā,ā,.f.$.sg.$.abl.,1
+.f.,ī,ayā,ā,.f.$.sg.$.abl.,1
+.f.,ī,yā,ā,.f.$.sg.$.abl.,1
+.f.,ī,iyā,ā,.f.$.sg.$.loc.,1
+.f.,ī,ayā,ā,.f.$.sg.$.loc.,1
+.f.,ī,yā,ā,.f.$.sg.$.loc.,1
+.f.,ī,iyaṃ,yaṃ,.f.$.sg.$.loc.,1
+.f.,ī,ayaṃ,yaṃ,.f.$.sg.$.loc.,1
+.f.,ī,yaṃ,yaṃ,.f.$.sg.$.loc.,1
+.f.,ī,ī,ī,.f.$.pl.$.nom.,1
+.f.,ī,iyo,yo,.f.$.pl.$.nom.,1
+.f.,ī,yo,yo,.f.$.pl.$.nom.,1
+.f.,ī,ī,ī,.f.$.pl.$.voc.,1
+.f.,ī,iyo,yo,.f.$.pl.$.voc.,1
+.f.,ī,yo,yo,.f.$.pl.$.voc.,1
+.f.,ī,ī,ī,.f.$.pl.$.acc.,1
+.f.,ī,iyo,yo,.f.$.pl.$.acc.,1
+.f.,ī,yo,yo,.f.$.pl.$.acc.,1
+.f.,ī,īnaṃ,naṃ,.f.$.pl.$.gen.,1
+.f.,ī,īnaṃ,naṃ,.f.$.pl.$.dat.,1
+.f.,ī,īhi,hi,.f.$.pl.$.inst.,1
+.f.,ī,ībhi,bhi,.f.$.pl.$.inst.,1
+.f.,ī,īhi,hi,.f.$.pl.$.abl.,1
+.f.,ī,ībhi,bhi,.f.$.pl.$.abl.,1
+.f.,ī,īsu,su,.f.$.pl.$.loc.,1
+.m.,u,u,u,.m.$.sg.$.nom.,1
+.m.,u,u,u,.m.$.sg.$.voc.,1
+.m.,u,uṃ,ṃ,.m.$.sg.$.acc.,1
+.m.,u,ussa,sa,.m.$.sg.$.gen.,1
+.m.,u,uno,no,.m.$.sg.$.gen.,1
+.m.,u,ussa,sa,.m.$.sg.$.dat.,1
+.m.,u,uno,no,.m.$.sg.$.dat.,1
+.m.,u,unā,na,.m.$.sg.$.inst.,1
+.m.,u,unā,nā,.m.$.sg.$.abl.,1
+.m.,u,usmā,smā,.m.$.sg.$.abl.,1
+.m.,u,umhā,mhā,.m.$.sg.$.abl.,1
+.m.,u,usmiṃ,smiṃ,.m.$.sg.$.loc.,1
+.m.,u,umhi,mhi,.m.$.sg.$.loc.,1
+.m.,u,ū,ū,.m.$.pl.$.nom.,1
+.m.,u,avo,o,.m.$.pl.$.nom.,1
+.m.,u,ū,ū,.m.$.pl.$.voc.,1
+.m.,u,avo,o,.m.$.pl.$.voc.,1
+.m.,u,ave,e,.m.$.pl.$.voc.,1
+.m.,u,ū,ū,.m.$.pl.$.acc.,1
+.m.,u,avo,o,.m.$.pl.$.acc.,1
+.m.,u,ūnaṃ,naṃ,.m.$.pl.$.gen.,1
+.m.,u,ūnaṃ,naṃ,.m.$.pl.$.dat.,1
+.m.,u,ūhi,hi,.m.$.pl.$.inst.,1
+.m.,u,ūbhi,bhi,.m.$.pl.$.inst.,1
+.m.,u,ūhi,hi,.m.$.pl.$.abl.,1
+.m.,u,ūbhi,bhi,.m.$.pl.$.abl.,1
+.m.,u,ūsu,su,.m.$.pl.$.loc.,1
+.nt.,u,u,u,.nt.$.sg.$.nom.,1
+.nt.,u,u,u,.nt.$.sg.$.voc.,1
+.nt.,u,uṃ,ṃ,.nt.$.sg.$.acc.,1
+.nt.,u,ussa,sa,.nt.$.sg.$.gen.,1
+.nt.,u,uno,no,.nt.$.sg.$.gen.,1
+.nt.,u,ussa,sa,.nt.$.sg.$.dat.,1
+.nt.,u,uno,no,.nt.$.sg.$.dat.,1
+.nt.,u,unā,na,.nt.$.sg.$.inst.,1
+.nt.,u,unā,nā,.nt.$.sg.$.abl.,1
+.nt.,u,usmā,smā,.nt.$.sg.$.abl.,1
+.nt.,u,umhā,mhā,.nt.$.sg.$.abl.,1
+.nt.,u,usmiṃ,smiṃ,.nt.$.sg.$.loc.,1
+.nt.,u,umhi,mhi,.nt.$.sg.$.loc.,1
+.nt.,u,ū,ū,.nt.$.pl.$.nom.,1
+.nt.,u,ūni,ni,.nt.$.pl.$.nom.,1
+.nt.,u,ū,ū,.nt.$.pl.$.voc.,1
+.nt.,u,ūni,ni,.nt.$.pl.$.voc.,1
+.nt.,u,ū,ū,.nt.$.pl.$.acc.,1
+.nt.,u,ūni,ni,.nt.$.pl.$.acc.,1
+.nt.,u,ūnaṃ,naṃ,.nt.$.pl.$.gen.,1
+.nt.,u,ūnaṃ,naṃ,.nt.$.pl.$.dat.,1
+.nt.,u,ūhi,hi,.nt.$.pl.$.inst.,1
+.nt.,u,ūbhi,bhi,.nt.$.pl.$.inst.,1
+.nt.,u,ūhi,hi,.nt.$.pl.$.abl.,1
+.nt.,u,ūbhi,bhi,.nt.$.pl.$.abl.,1
+.nt.,u,ūsu,su,.nt.$.pl.$.loc.,1
+.f.,u,u,u,.f.$.sg.$.nom.,1
+.f.,u,u,u,.f.$.sg.$.voc.,1
+.f.,u,uṃ,ṃ,.f.$.sg.$.acc.,1
+.f.,u,uyā,yā,.f.$.sg.$.gen.,1
+.f.,u,uyā,yā,.f.$.sg.$.dat.,1
+.f.,u,uyā,yā,.f.$.sg.$.inst.,1
+.f.,u,uyā,yā,.f.$.sg.$.abl.,1
+.f.,u,uto,to,.f.$.sg.$.abl.,1
+.f.,u,uyā,yā,.f.$.sg.$.loc.,1
+.f.,u,uyaṃ,yaṃ,.f.$.sg.$.loc.,1
+.f.,u,ū,ū,.f.$.pl.$.nom.,1
+.f.,u,uyo,yo,.f.$.pl.$.nom.,1
+.f.,u,ūvo,o,.f.$.pl.$.nom.,1
+.f.,u,ū,ū,.f.$.pl.$.voc.,1
+.f.,u,uyo,yo,.f.$.pl.$.voc.,1
+.f.,u,ū,ū,.f.$.pl.$.acc.,1
+.f.,u,uyo,yo,.f.$.pl.$.acc.,1
+.f.,u,ūnaṃ,naṃ,.f.$.pl.$.gen.,1
+.f.,u,ūnaṃ,naṃ,.f.$.pl.$.dat.,1
+.f.,u,ūhi,hi,.f.$.pl.$.inst.,1
+.f.,u,ūbhi,bhi,.f.$.pl.$.inst.,1
+.f.,u,ūhi,hi,.f.$.pl.$.abl.,1
+.f.,u,ūbhi,bhi,.f.$.pl.$.abl.,1
+.f.,u,ūsu,su,.f.$.pl.$.loc.,1
+.m.,ū,ū,ū,.m.$.sg.$.nom.,1
+.m.,ū,ū,ū,.m.$.sg.$.voc.,1
+.m.,ū,uṃ,ṃ,.m.$.sg.$.acc.,1
+.m.,ū,ussa,sa,.m.$.sg.$.gen.,1
+.m.,ū,uno,no,.m.$.sg.$.gen.,1
+.m.,ū,ussa,sa,.m.$.sg.$.dat.,1
+.m.,ū,uno,no,.m.$.sg.$.dat.,1
+.m.,ū,unā,na,.m.$.sg.$.inst.,1
+.m.,ū,unā,nā,.m.$.sg.$.abl.,1
+.m.,ū,usmā,smā,.m.$.sg.$.abl.,1
+.m.,ū,umhā,mhā,.m.$.sg.$.abl.,1
+.m.,ū,usmiṃ,smiṃ,.m.$.sg.$.loc.,1
+.m.,ū,umhi,mhi,.m.$.sg.$.loc.,1
+.m.,ū,ū,ū,.m.$.pl.$.nom.,1
+.m.,ū,avo,o,.m.$.pl.$.nom.,1
+.m.,ū,ū,ū,.m.$.pl.$.voc.,1
+.m.,ū,avo,o,.m.$.pl.$.voc.,1
+.m.,ū,ave,e,.m.$.pl.$.voc.,1
+.m.,ū,ū,ū,.m.$.pl.$.acc.,1
+.m.,ū,avo,o,.m.$.pl.$.acc.,1
+.m.,ū,ūnaṃ,naṃ,.m.$.pl.$.gen.,1
+.m.,ū,ūnaṃ,naṃ,.m.$.pl.$.dat.,1
+.m.,ū,ūhi,hi,.m.$.pl.$.inst.,1
+.m.,ū,ūbhi,bhi,.m.$.pl.$.inst.,1
+.m.,ū,ūhi,hi,.m.$.pl.$.abl.,1
+.m.,ū,ūbhi,bhi,.m.$.pl.$.abl.,1
+.m.,ū,ūsu,su,.m.$.pl.$.loc.,1
+.f.,ū,ū,ū,.f.$.sg.$.nom.,1
+.f.,ū,ū,ū,.f.$.sg.$.voc.,1
+.f.,ū,uṃ,ṃ,.f.$.sg.$.acc.,1
+.f.,ū,uyā,yā,.f.$.sg.$.gen.,1
+.f.,ū,uyā,yā,.f.$.sg.$.dat.,1
+.f.,ū,uyā,yā,.f.$.sg.$.inst.,1
+.f.,ū,uyā,yā,.f.$.sg.$.abl.,1
+.f.,ū,uto,to,.f.$.sg.$.abl.,1
+.f.,ū,uyā,yā,.f.$.sg.$.loc.,1
+.f.,ū,uyaṃ,yaṃ,.f.$.sg.$.loc.,1
+.f.,ū,ū,ū,.f.$.pl.$.nom.,1
+.f.,ū,uyo,yo,.f.$.pl.$.nom.,1
+.f.,ū,ū,ū,.f.$.pl.$.voc.,1
+.f.,ū,uyo,yo,.f.$.pl.$.voc.,1
+.f.,ū,ū,ū,.f.$.pl.$.acc.,1
+.f.,ū,uyo,yo,.f.$.pl.$.acc.,1
+.f.,ū,ūnaṃ,naṃ,.f.$.pl.$.gen.,1
+.f.,ū,ūnaṃ,naṃ,.f.$.pl.$.dat.,1
+.f.,ū,ūhi,hi,.f.$.pl.$.inst.,1
+.f.,ū,ūbhi,bhi,.f.$.pl.$.inst.,1
+.f.,ū,ūhi,hi,.f.$.pl.$.abl.,1
+.f.,ū,ūbhi,bhi,.f.$.pl.$.abl.,1
+.f.,ū,ūsu,su,.f.$.pl.$.loc.,1
+.m.,as,o,o,.m.$.sg.$.nom.,2
+.m.,as,aṃ,ṃ,.m.$.sg.$.nom.,2
+.m.,o,o,o,.m.$.sg.$.nom.,1
+.m.,o,aṃ,ṃ,.m.$.sg.$.nom.,1
+.m.,as,o,o,.m.$.sg.$.voc.,2
+.m.,as,aṃ,ṃ,.m.$.sg.$.voc.,2
+.m.,as,ā,ā,.m.$.sg.$.voc.,2
+.m.,as,a,a,.m.$.sg.$.voc.,2
+.m.,o,o,o,.m.$.sg.$.voc.,1
+.m.,o,aṃ,ṃ,.m.$.sg.$.voc.,1
+.m.,o,ā,ā,.m.$.sg.$.voc.,1
+.m.,o,a,a,.m.$.sg.$.voc.,1
+.m.,as,o,o,.m.$.sg.$.acc.,2
+.m.,as,aṃ,ṃ,.m.$.sg.$.acc.,2
+.m.,o,o,o,.m.$.sg.$.acc.,1
+.m.,o,aṃ,ṃ,.m.$.sg.$.acc.,1
+.m.,as,aso,so,.m.$.sg.$.gen.,2
+.m.,as,assa,sa,.m.$.sg.$.gen.,2
+.m.,o,aso,so,.m.$.sg.$.gen.,1
+.m.,o,assa,sa,.m.$.sg.$.gen.,1
+.m.,as,aso,so,.m.$.sg.$.dat.,2
+.m.,as,assa,sa,.m.$.sg.$.dat.,2
+.m.,o,aso,so,.m.$.sg.$.dat.,1
+.m.,o,assa,sa,.m.$.sg.$.dat.,1
+.m.,as,asā,sā,.m.$.sg.$.inst.,2
+.m.,as,ena,na,.m.$.sg.$.inst.,2
+.m.,o,asā,sā,.m.$.sg.$.inst.,1
+.m.,o,ena,na,.m.$.sg.$.inst.,1
+.m.,as,asā,sā,.m.$.sg.$.abl.,2
+.m.,as,asmā,smā,.m.$.sg.$.abl.,2
+.m.,as,amhā,mhā,.m.$.sg.$.abl.,2
+.m.,as,ā,ā,.m.$.sg.$.abl.,2
+.m.,o,asā,sā,.m.$.sg.$.abl.,1
+.m.,o,asmā,smā,.m.$.sg.$.abl.,1
+.m.,o,amhā,mhā,.m.$.sg.$.abl.,1
+.m.,o,ā,ā,.m.$.sg.$.abl.,1
+.m.,as,asi,i,.m.$.sg.$.loc.,2
+.m.,as,e,i,.m.$.sg.$.loc.,2
+.m.,as,asmiṃ,smiṃ,.m.$.sg.$.loc.,2
+.m.,as,amhi,mhi,.m.$.sg.$.loc.,2
+.m.,o,asi,i,.m.$.sg.$.loc.,1
+.m.,o,e,i,.m.$.sg.$.loc.,1
+.m.,o,asmiṃ,smiṃ,.m.$.sg.$.loc.,1
+.m.,o,amhi,mhi,.m.$.sg.$.loc.,1
+.m.,as,ā,ā,.m.$.pl.$.nom.,2
+.m.,o,ā,ā,.m.$.pl.$.nom.,1
+.m.,as,ā,ā,.m.$.pl.$.voc.,2
+.m.,o,ā,ā,.m.$.pl.$.voc.,1
+.m.,as,e,e,.m.$.pl.$.acc.,2
+.m.,o,e,e,.m.$.pl.$.acc.,1
+.m.,as,ānaṃ,naṃ,.m.$.pl.$.gen.,2
+.m.,o,ānaṃ,naṃ,.m.$.pl.$.gen.,1
+.m.,as,ānaṃ,naṃ,.m.$.pl.$.dat.,2
+.m.,o,ānaṃ,naṃ,.m.$.pl.$.dat.,1
+.m.,as,ehi,hi,.m.$.pl.$.inst.,2
+.m.,as,ebhi,bhi,.m.$.pl.$.inst.,2
+.m.,o,ehi,hi,.m.$.pl.$.inst.,1
+.m.,o,ebhi,bhi,.m.$.pl.$.inst.,1
+.m.,as,ehi,hi,.m.$.pl.$.abl.,2
+.m.,as,ebhi,bhi,.m.$.pl.$.abl.,2
+.m.,o,ehi,hi,.m.$.pl.$.abl.,1
+.m.,o,ebhi,bhi,.m.$.pl.$.abl.,1
+.m.,as,esu,su,.m.$.pl.$.loc.,2
+.m.,o,esu,su,.m.$.pl.$.loc.,1
+.nt.,as,o,o,.nt.$.sg.$.nom.,2
+.nt.,as,aṃ,ṃ,.nt.$.sg.$.nom.,2
+.nt.,o,o,o,.nt.$.sg.$.nom.,1
+.nt.,o,aṃ,ṃ,.nt.$.sg.$.nom.,1
+.nt.,as,o,o,.nt.$.sg.$.voc.,2
+.nt.,as,aṃ,ṃ,.nt.$.sg.$.voc.,2
+.nt.,as,ā,ā,.nt.$.sg.$.voc.,2
+.nt.,as,a,a,.nt.$.sg.$.voc.,2
+.nt.,o,o,o,.nt.$.sg.$.voc.,1
+.nt.,o,aṃ,ṃ,.nt.$.sg.$.voc.,1
+.nt.,o,ā,ā,.nt.$.sg.$.voc.,1
+.nt.,o,a,a,.nt.$.sg.$.voc.,1
+.nt.,as,o,o,.nt.$.sg.$.acc.,2
+.nt.,as,aṃ,ṃ,.nt.$.sg.$.acc.,2
+.nt.,o,o,o,.nt.$.sg.$.acc.,1
+.nt.,o,aṃ,ṃ,.nt.$.sg.$.acc.,1
+.nt.,as,aso,so,.nt.$.sg.$.gen.,2
+.nt.,as,assa,sa,.nt.$.sg.$.gen.,2
+.nt.,o,aso,so,.nt.$.sg.$.gen.,1
+.nt.,o,assa,sa,.nt.$.sg.$.gen.,1
+.nt.,as,aso,so,.nt.$.sg.$.dat.,2
+.nt.,as,assa,sa,.nt.$.sg.$.dat.,2
+.nt.,o,aso,so,.nt.$.sg.$.dat.,1
+.nt.,o,assa,sa,.nt.$.sg.$.dat.,1
+.nt.,as,asā,sā,.nt.$.sg.$.inst.,2
+.nt.,as,ena,na,.nt.$.sg.$.inst.,2
+.nt.,o,asā,sā,.nt.$.sg.$.inst.,1
+.nt.,o,ena,na,.nt.$.sg.$.inst.,1
+.nt.,as,asā,sā,.nt.$.sg.$.abl.,2
+.nt.,as,asmā,smā,.nt.$.sg.$.abl.,2
+.nt.,as,amhā,mhā,.nt.$.sg.$.abl.,2
+.nt.,as,ā,ā,.nt.$.sg.$.abl.,2
+.nt.,o,asā,sā,.nt.$.sg.$.abl.,1
+.nt.,o,asmā,smā,.nt.$.sg.$.abl.,1
+.nt.,o,amhā,mhā,.nt.$.sg.$.abl.,1
+.nt.,o,ā,ā,.nt.$.sg.$.abl.,1
+.nt.,as,asi,i,.nt.$.sg.$.loc.,2
+.nt.,as,e,i,.nt.$.sg.$.loc.,2
+.nt.,as,asmiṃ,smiṃ,.nt.$.sg.$.loc.,2
+.nt.,as,amhi,mhi,.nt.$.sg.$.loc.,2
+.nt.,o,asi,i,.nt.$.sg.$.loc.,1
+.nt.,o,e,i,.nt.$.sg.$.loc.,1
+.nt.,o,asmiṃ,smiṃ,.nt.$.sg.$.loc.,1
+.nt.,o,amhi,mhi,.nt.$.sg.$.loc.,1
+.nt.,as,ā,ā,.nt.$.pl.$.nom.,2
+.nt.,o,ā,ā,.nt.$.pl.$.nom.,1
+.nt.,as,ā,ā,.nt.$.pl.$.voc.,2
+.nt.,o,ā,ā,.nt.$.pl.$.voc.,1
+.nt.,as,e,e,.nt.$.pl.$.acc.,2
+.nt.,o,e,e,.nt.$.pl.$.acc.,1
+.nt.,as,ānaṃ,naṃ,.nt.$.pl.$.gen.,2
+.nt.,o,ānaṃ,naṃ,.nt.$.pl.$.gen.,1
+.nt.,as,ānaṃ,naṃ,.nt.$.pl.$.dat.,2
+.nt.,o,ānaṃ,naṃ,.nt.$.pl.$.dat.,1
+.nt.,as,ehi,hi,.nt.$.pl.$.inst.,2
+.nt.,as,ebhi,bhi,.nt.$.pl.$.inst.,2
+.nt.,o,ehi,hi,.nt.$.pl.$.inst.,1
+.nt.,o,ebhi,bhi,.nt.$.pl.$.inst.,1
+.nt.,as,ehi,hi,.nt.$.pl.$.abl.,2
+.nt.,as,ebhi,bhi,.nt.$.pl.$.abl.,2
+.nt.,o,ehi,hi,.nt.$.pl.$.abl.,1
+.nt.,o,ebhi,bhi,.nt.$.pl.$.abl.,1
+.nt.,as,esu,su,.nt.$.pl.$.loc.,2
+.nt.,o,esu,su,.nt.$.pl.$.loc.,1
+.m.,an,ā,ā,.m.$.sg.$.nom.,2
+.m.,an,ā,ā,.m.$.sg.$.voc.,2
+.m.,an,a,a,.m.$.sg.$.voc.,2
+.m.,an,aṃ,ṃ,.m.$.sg.$.acc.,2
+.m.,an,ānaṃ,naṃ,.m.$.sg.$.acc.,2
+.m.,an,anaṃ,naṃ,.m.$.sg.$.acc.,2
+.m.,an,assa,sa,.m.$.sg.$.gen.,2
+.m.,an,ano,no,.m.$.sg.$.gen.,2
+.m.,an,assa,sa,.m.$.sg.$.dat.,2
+.m.,an,ano,no,.m.$.sg.$.dat.,2
+.m.,an,ena,na,.m.$.sg.$.inst.,2
+.m.,an,anā,na,.m.$.sg.$.inst.,2
+.m.,an,anā,nā,.m.$.sg.$.abl.,2
+.m.,an,asmā,smā,.m.$.sg.$.abl.,2
+.m.,an,amhā,mhā,.m.$.sg.$.abl.,2
+.m.,an,ani,i,.m.$.sg.$.loc.,2
+.m.,an,asmiṃ,smiṃ,.m.$.sg.$.loc.,2
+.m.,an,amhi,mhi,.m.$.sg.$.loc.,2
+.m.,an,ā,a,.m.$.pl.$.nom.,2
+.m.,an,āno,āno,.m.$.pl.$.nom.,2
+.m.,an,ā,ā,.m.$.pl.$.voc.,2
+.m.,an,āno,āno,.m.$.pl.$.voc.,2
+.m.,an,āno,no,.m.$.pl.$.acc.,2
+.m.,an,e,e,.m.$.pl.$.acc.,2
+.m.,an,ānaṃ,naṃ,.m.$.pl.$.gen.,2
+.m.,an,ānaṃ,naṃ,.m.$.pl.$.dat.,2
+.m.,an,anehi,hi,.m.$.pl.$.inst.,2
+.m.,an,anebhi,bhi,.m.$.pl.$.inst.,2
+.m.,an,anehi,hi,.m.$.pl.$.abl.,2
+.m.,an,anebhi,bhi,.m.$.pl.$.abl.,2
+.m.,an,anesu,su,.m.$.pl.$.loc.,2
+.nt.,an,aṃ,ṃ,.nt.$.sg.$.nom.,2
+.nt.,an,a,a,.nt.$.sg.$.voc.,2
+.nt.,an,aṃ,ṃ,.nt.$.sg.$.acc.,2
+.nt.,an,assa,sa,.nt.$.sg.$.gen.,2
+.nt.,an,assa,sa,.nt.$.sg.$.dat.,2
+.nt.,an,āya,āya,.nt.$.sg.$.dat.,2
+.nt.,an,ena,na,.nt.$.sg.$.inst.,2
+.nt.,an,ā,ā,.nt.$.sg.$.abl.,2
+.nt.,an,asmā,smā,.nt.$.sg.$.abl.,2
+.nt.,an,amhā,mhā,.nt.$.sg.$.abl.,2
+.nt.,an,ato,to,.nt.$.sg.$.abl.,2
+.nt.,an,e,i,.nt.$.sg.$.loc.,2
+.nt.,an,asmiṃ,smiṃ,.nt.$.sg.$.loc.,2
+.nt.,an,amhi,mhi,.nt.$.sg.$.loc.,2
+.nt.,an,āni,ni,.nt.$.pl.$.nom.,2
+.nt.,an,ā,a,.nt.$.pl.$.nom.,2
+.nt.,an,āni,ni,.nt.$.pl.$.voc.,2
+.nt.,an,ā,ā,.nt.$.pl.$.voc.,2
+.nt.,an,āni,ni,.nt.$.pl.$.acc.,2
+.nt.,an,e,e,.nt.$.pl.$.acc.,2
+.nt.,an,ānaṃ,naṃ,.nt.$.pl.$.gen.,2
+.nt.,an,ānaṃ,naṃ,.nt.$.pl.$.dat.,2
+.nt.,an,ehi,hi,.nt.$.pl.$.inst.,2
+.nt.,an,ebhi,bhi,.nt.$.pl.$.inst.,2
+.nt.,an,ehi,hi,.nt.$.pl.$.abl.,2
+.nt.,an,ebhi,bhi,.nt.$.pl.$.abl.,2
+.nt.,an,esu,su,.nt.$.pl.$.loc.,2
+.f.,ar,ā,ā,.f.$.sg.$.nom.,2
+.f.,ar,ā,ā,.f.$.sg.$.voc.,2
+.f.,ar,aṃ,ṃ,.f.$.sg.$.acc.,2
+.f.,ar,ānaṃ,naṃ,.f.$.sg.$.acc.,2
+.f.,ar,assa,sa,.f.$.sg.$.gen.,2
+.f.,ar,ino,no,.f.$.sg.$.gen.,2
+.f.,ar,assa,sa,.f.$.sg.$.dat.,2
+.f.,ar,ino,no,.f.$.sg.$.dat.,2
+.f.,ar,ena,na,.f.$.sg.$.inst.,2
+.f.,ar,inā,na,.f.$.sg.$.inst.,2
+.f.,ar,asmā,smā,.f.$.sg.$.abl.,2
+.f.,ar,amhā,mhā,.f.$.sg.$.abl.,2
+.f.,ar,ini,i,.f.$.sg.$.loc.,2
+.f.,ar,asmiṃ,smiṃ,.f.$.sg.$.loc.,2
+.f.,ar,amhi,mhi,.f.$.sg.$.loc.,2
+.f.,ar,ā,a,.f.$.pl.$.nom.,2
+.f.,ar,āno,āno,.f.$.pl.$.nom.,2
+.f.,ar,ā,a,.f.$.pl.$.voc.,2
+.f.,ar,āno,āno,.f.$.pl.$.voc.,2
+.f.,ar,ā,a,.f.$.pl.$.acc.,2
+.f.,ar,āno,āno,.f.$.pl.$.acc.,2
+.f.,ar,ānaṃ,naṃ,.f.$.pl.$.gen.,2
+.f.,ar,ānaṃ,naṃ,.f.$.pl.$.dat.,2
+.f.,ar,ehi,hi,.f.$.pl.$.inst.,2
+.f.,ar,āhi,bhi,.f.$.pl.$.inst.,2
+.f.,ar,ehi,hi,.f.$.pl.$.abl.,2
+.f.,ar,āhi,bhi,.f.$.pl.$.abl.,2
+.f.,ar,esu,su,.f.$.pl.$.loc.,2
+.f.,ar,āsu,su,.f.$.pl.$.loc.,2
+.nt.,ar,ā,ā,.nt.$.sg.$.nom.,2
+.nt.,ar,ā,ā,.nt.$.sg.$.voc.,2
+.nt.,ar,aṃ,ṃ,.nt.$.sg.$.acc.,2
+.nt.,ar,ānaṃ,naṃ,.nt.$.sg.$.acc.,2
+.nt.,ar,assa,sa,.nt.$.sg.$.gen.,2
+.nt.,ar,ino,no,.nt.$.sg.$.gen.,2
+.nt.,ar,assa,sa,.nt.$.sg.$.dat.,2
+.nt.,ar,ino,no,.nt.$.sg.$.dat.,2
+.nt.,ar,ena,na,.nt.$.sg.$.inst.,2
+.nt.,ar,inā,na,.nt.$.sg.$.inst.,2
+.nt.,ar,asmā,smā,.nt.$.sg.$.abl.,2
+.nt.,ar,amhā,mhā,.nt.$.sg.$.abl.,2
+.nt.,ar,ini,i,.nt.$.sg.$.loc.,2
+.nt.,ar,asmiṃ,smiṃ,.nt.$.sg.$.loc.,2
+.nt.,ar,amhi,mhi,.nt.$.sg.$.loc.,2
+.nt.,ar,ā,a,.nt.$.pl.$.nom.,2
+.nt.,ar,āno,āno,.nt.$.pl.$.nom.,2
+.nt.,ar,ā,a,.nt.$.pl.$.voc.,2
+.nt.,ar,āno,āno,.nt.$.pl.$.voc.,2
+.nt.,ar,ā,a,.nt.$.pl.$.acc.,2
+.nt.,ar,āno,āno,.nt.$.pl.$.acc.,2
+.nt.,ar,ānaṃ,naṃ,.nt.$.pl.$.gen.,2
+.nt.,ar,ānaṃ,naṃ,.nt.$.pl.$.dat.,2
+.nt.,ar,ehi,hi,.nt.$.pl.$.inst.,2
+.nt.,ar,āhi,bhi,.nt.$.pl.$.inst.,2
+.nt.,ar,ehi,hi,.nt.$.pl.$.abl.,2
+.nt.,ar,āhi,bhi,.nt.$.pl.$.abl.,2
+.nt.,ar,esu,su,.nt.$.pl.$.loc.,2
+.nt.,ar,āsu,su,.nt.$.pl.$.loc.,2
+.m.,a,e,e,.m.$.sg.$.nom.,1
+.m.,a,ā,a,.m.$.sg.$.inst.,1
+.m.,a,asā,sā,.m.$.sg.$.inst.,1
+.m.,a,ā,a,.m.$.sg.$.dat.,1
+.m.,a,āya,ya,.m.$.sg.$.gen.,1
+.m.,a,ā,a,.m.$.sg.$.gen.,1
+.m.,a,asi,i,.m.$.sg.$.loc.,1
+.m.,a,e,e,.m.$.sg.$.voc.,1
+.m.,a,o,o,.m.$.sg.$.voc.,1
+.m.,a,āse,se,.m.$.pl.$.nom.,1
+.m.,a,o,o,.m.$.pl.$.nom.,1
+.m.,a,ān,n,.m.$.pl.$.acc.,1
+.m.,a,e,e,.m.$.pl.$.inst.,1
+.m.,a,ato,to,.m.$.pl.$.abl.,1
+.nt.,a,e,e,.nt.$.sg.$.nom.,1
+.nt.,a,ā,ā,.nt.$.sg.$.inst.,1
+.nt.,a,asā,sā,.nt.$.sg.$.inst.,1
+.nt.,a,ā,ā,.nt.$.sg.$.dat.,1
+.nt.,a,asi,i,.nt.$.sg.$.loc.,1
+.nt.,a,ā,ā,.nt.$.sg.$.voc.,1
+.nt.,a,aṃ,ṃ,.nt.$.sg.$.voc.,1
+.nt.,a,āya,ya,.nt.$.sg.$.gen.,1
+.nt.,a,ā,ā,.nt.$.sg.$.gen.,1
+.nt.,a,o,o,.nt.$.pl.$.acc.,1
+.nt.,a,ato,to,.nt.$.pl.$.abl.,1
+.f.,ā,ā,ā,.f.$.sg.$.inst.,1
+.f.,ā,āto,to,.f.$.sg.$.abl.,1
+.f.,ā,a,a,.f.$.sg.$.voc.,1
+.f.,ā,iyo,yo,.f.$.pl.$.voc.,1
+.m.,i,e,e,.m.$.sg.$.dat.,1
+.m.,i,ito,to,.m.$.sg.$.abl.,1
+.m.,i,e,e,.m.$.sg.$.gen.,1
+.m.,i,ini,i,.m.$.sg.$.loc.,1
+.m.,i,e,i,.m.$.sg.$.loc.,1
+.m.,i,o,o,.m.$.sg.$.loc.,1
+.m.,i,iyo,yo,.m.$.pl.$.nom.,1
+.m.,i,ino,no,.m.$.pl.$.nom.,1
+.m.,i,iyo,yo,.m.$.pl.$.acc.,1
+.m.,i,ihi,hi,.m.$.pl.$.inst.,1
+.m.,i,ibhi,bhi,.m.$.pl.$.inst.,1
+.m.,i,inaṃ,naṃ,.m.$.pl.$.dat.,1
+.m.,i,ihi,hi,.m.$.pl.$.abl.,1
+.m.,i,ibhi,bhi,.m.$.pl.$.abl.,1
+.m.,i,inaṃ,naṃ,.m.$.pl.$.gen.,1
+.m.,i,isu,su,.m.$.pl.$.loc.,1
+.m.,i,iyo,yo,.m.$.pl.$.voc.,1
+.nt.,i,ihi,hi,.nt.$.pl.$.inst.,1
+.nt.,i,ibhi,bhi,.nt.$.pl.$.inst.,1
+.nt.,i,ihi,hi,.nt.$.pl.$.abl.,1
+.nt.,i,ibhi,bhi,.nt.$.pl.$.abl.,1
+.nt.,i,inaṃ,naṃ,.nt.$.pl.$.gen.,1
+.nt.,i,inaṃ,naṃ,.nt.$.pl.$.dat.,1
+.nt.,i,isu,su,.nt.$.pl.$.loc.,1
+.nt.,i,iṃ,ṃ,.nt.$.sg.$.nom.,1
+.nt.,i,i,i,.nt.$.sg.$.acc.,1
+.nt.,i,e,e,.nt.$.sg.$.dat.,1
+.nt.,i,ito,to,.nt.$.sg.$.abl.,1
+.nt.,i,e,e,.nt.$.sg.$.gen.,1
+.nt.,i,ini,i,.nt.$.sg.$.loc.,1
+.nt.,i,e,i,.nt.$.sg.$.loc.,1
+.nt.,i,o,o,.nt.$.sg.$.loc.,1
+.nt.,i,iṃ,ṃ,.nt.$.sg.$.voc.,1
+.f.,i,ī,ī,.f.$.sg.$.nom.,1
+.f.,i,ito,to,.f.$.sg.$.abl.,1
+.f.,i,myā,ā,.f.$.sg.$.gen.,1
+.f.,i,o,o,.f.$.sg.$.loc.,1
+.f.,i,āyaṃ,ṃ,.f.$.sg.$.loc.,1
+.f.,i,u,u,.f.$.sg.$.loc.,1
+.f.,i,ī,ī,.f.$.sg.$.voc.,1
+.m.,ī,ini,i,.m.$.sg.$.loc.,1
+.m.,ī,īnaṃ,naṃ,.m.$.pl.$.gen.,1
+.m.,ī,īnaṃ,naṃ,.m.$.pl.$.dat.,1
+.m.,ī,īsu,su,.m.$.pl.$.loc.,1
+.m.,ī,i,i,.m.$.sg.$.nom.,1
+.m.,ī,iyo,yo,.m.$.pl.$.nom.,1
+.m.,ī,iye,e,.m.$.pl.$.acc.,1
+.m.,ī,iyaṃ,ṃ,.m.$.sg.$.acc.,1
+.m.,ī,ito,to,.m.$.sg.$.abl.,1
+.f.,ī,i,i,.f.$.sg.$.nom.,1
+.f.,ī,iyaṃ,ṃ,.f.$.sg.$.acc.,1
+.f.,ī,ito,to,.f.$.sg.$.abl.,1
+.f.,ī,īto,to,.f.$.sg.$.abl.,1
+.f.,ī,āyo,yo,.f.$.pl.$.nom.,1
+.f.,ī,āyo,yo,.f.$.pl.$.nom.,1
+.f.,ī,āyo,yo,.f.$.pl.$.nom.,1
+.f.,ī,inaṃ,naṃ,.f.$.pl.$.gen.,1
+.f.,ī,inaṃ,naṃ,.f.$.pl.$.dat.,1
+.f.,ī,īyanaṃ,naṃ,.f.$.pl.$.gen.,1
+.f.,ī,īyanaṃ,naṃ,.f.$.pl.$.dat.,1
+.f.,ī,iyanaṃ,naṃ,.f.$.pl.$.gen.,1
+.f.,ī,iyanaṃ,naṃ,.f.$.pl.$.dat.,1
+.f.,ī,isu,su,.f.$.pl.$.loc.,1
+.m.,ar,ā,a,.m.$.sg.$.nom.,2
+.m.,ar,ā,a,.m.$.sg.$.voc.,2
+.m.,ar,a,a,.m.$.sg.$.voc.,2
+.m.,ar,araṃ,ṃ,.m.$.sg.$.acc.,2
+.m.,ar,ãraṃ,ṃ,.m.$.sg.$.acc.,2
+.m.,ar,u,u,.m.$.sg.$.dat.,2
+.m.,ar,ussa,sa,.m.$.sg.$.dat.,2
+.m.,ar,uno,to,.m.$.sg.$.dat.,2
+.m.,ar,u,u,.m.$.sg.$.gen.,2
+.m.,ar,ussa,sa,.m.$.sg.$.gen.,2
+.m.,ar,uno,to,.m.$.sg.$.gen.,2
+.m.,ar,arã,ā,.m.$.sg.$.inst.,2
+.m.,ar,ãrã,ā,.m.$.sg.$.inst.,2
+.m.,ar,unā,nā,.m.$.sg.$.inst.,2
+.m.,ar,arã,ā,.m.$.sg.$.abl.,2
+.m.,ar,ãrã,ā,.m.$.sg.$.abl.,2
+.m.,ar,unā,nā,.m.$.sg.$.abl.,2
+.m.,ar,ari,i,.m.$.sg.$.loc.,2
+.m.,ar,āro,o,.m.$.pl.$.nom.,2
+.m.,ar,ā,ā,.m.$.pl.$.nom.,2
+.m.,ar,āro,o,.m.$.pl.$.voc.,2
+.m.,ar,ā,ā,.m.$.pl.$.voc.,2
+.m.,ar,āro,o,.m.$.pl.$.acc.,2
+.m.,ar,āre,e,.m.$.pl.$.acc.,2
+.m.,ar,ānaṃ,naṃ,.m.$.pl.$.dat.,2
+.m.,ar,ārānaṃ,naṃ,.m.$.pl.$.dat.,2
+.m.,ar,ūnaṃ,naṃ,.m.$.pl.$.dat.,2
+.m.,ar,ānaṃ,naṃ,.m.$.pl.$.gen.,2
+.m.,ar,ārānaṃ,naṃ,.m.$.pl.$.gen.,2
+.m.,ar,ūnaṃ,naṃ,.m.$.pl.$.gen.,2
+.m.,ar,ārehi,hi,.m.$.pl.$.inst.,2
+.m.,ar,ārebhi,bhi,.m.$.pl.$.inst.,2
+.m.,ar,ārehi,hi,.m.$.pl.$.abl.,2
+.m.,ar,ārebhi,bhi,.m.$.pl.$.abl.,2
+.m.,ar,āresu,su,.m.$.pl.$.loc.,2
+.m.,ar,ūsu,su,.m.$.pl.$.loc.,2
+.m.,ar,āyo,o,.m.$.sg.$.voc.,2
+.m.,ar,iyo,o,.m.$.sg.$.voc.,2
+.m.,an,ane,i,.m.$.sg.$.loc.,2
+.m.,an,ā,ā,.m.$.pl.$.voc.,2
+.m.,an,ubhi,bhi,.m.$.pl.$.inst.,2
+.m.,an,ūbhi,bhi,.m.$.pl.$.inst.,2
+.m.,an,uhi,hi,.m.$.pl.$.inst.,2
+.m.,an,ūhi,hi,.m.$.pl.$.inst.,2
+.m.,an,ūnaṃ,naṃ,.m.$.pl.$.gen.,2
+.m.,an,ūnaṃ,naṃ,.m.$.pl.$.gen.,2
+.m.,an,esu,su,.m.$.pl.$.loc.,2
+.m.,an,ūsu,su,.m.$.pl.$.loc.,2
+.m.,an,usu,su,.m.$.pl.$.loc.,2
+.nt.,an,a,a,.nt.$.sg.$.nom.,2
+.nt.,an,a,a,.nt.$.sg.$.acc.,2
+.nt.,an,anā,na,.nt.$.sg.$.inst.,2
+.nt.,an,unā,na,.nt.$.sg.$.inst.,2
+.nt.,an,no,no,.nt.$.sg.$.dat.,2
+.nt.,an,unā,na,.nt.$.sg.$.abl.,2
+.nt.,an,no,no,.nt.$.sg.$.dat.,2
+.nt.,an,ani,i,.nt.$.sg.$.loc.,2
+.nt.,an,ā,ā,.nt.$.pl.$.voc.,2
+.m.,as,āni,ni,.m.$.pl.$.nom.,2
+.m.,as,ā,ā,.m.$.pl.$.acc.,2
+.m.,as,āni,ni,.m.$.pl.$.acc.,2
+.m.,as,āni,ni,.m.$.pl.$.voc.,2
+.nt.,as,āni,ni,.m.$.pl.$.nom.,2
+.nt.,as,ā,ā,.m.$.pl.$.acc.,2
+.nt.,as,āni,ni,.m.$.pl.$.acc.,2
+.nt.,as,āni,ni,.m.$.pl.$.voc.,2
+.m.,as,āni,ni,.m.$.pl.$.nom.,2
+.m.,as,ā,ā,.m.$.pl.$.acc.,2
+.m.,as,āni,ni,.m.$.pl.$.acc.,2
+.m.,as,āni,ni,.m.$.pl.$.voc.,2
+.nt.,us,u,u,.m.$.sg.$.nom.,2
+.nt.,us,uṃ,ṃ,.m.$.sg.$.nom.,2
+.nt.,us,u,u,.m.$.sg.$.voc.,2
+.nt.,us,uṃ,ṃ,.m.$.sg.$.voc.,2
+.nt.,us,u,u,.m.$.sg.$.acc.,2
+.nt.,us,uṃ,ṃ,.m.$.sg.$.acc.,2
+.nt.,us,ussa,sa,.m.$.sg.$.dat.,2
+.nt.,us,uno,to,.m.$.sg.$.dat.,2
+.nt.,us,ussa,sa,.m.$.sg.$.gen.,2
+.nt.,us,uno,to,.m.$.sg.$.gen.,2
+.nt.,us,unā,ā,.m.$.sg.$.inst.,2
+.nt.,us,usā,ā,.m.$.sg.$.inst.,2
+.nt.,us,unā,ā,.m.$.sg.$.abl.,2
+.nt.,us,usā,ā,.m.$.sg.$.abl.,2
+.nt.,us,uni,i,.m.$.sg.$.loc.,2
+.nt.,us,usi,i,.m.$.sg.$.loc.,2
+.nt.,us,ū,ū,.m.$.pl.$.nom.,2
+.nt.,us,ūni,ni,.m.$.pl.$.nom.,2
+.nt.,us,ū,ū,.m.$.pl.$.voc.,2
+.nt.,us,ūni,ni,.m.$.pl.$.voc.,2
+.nt.,us,ū,ū,.m.$.pl.$.acc.,2
+.nt.,us,ūni,ni,.m.$.pl.$.acc.,2
+.nt.,us,ūnaṃ,naṃ,.m.$.pl.$.dat.,2
+.nt.,us,ūsaṃ,naṃ,.m.$.pl.$.dat.,2
+.nt.,us,ūnaṃ,naṃ,.m.$.pl.$.gen.,2
+.nt.,us,ūsaṃ,naṃ,.m.$.pl.$.gen.,2
+.nt.,us,ūhi,hi,.m.$.pl.$.inst.,2
+.nt.,us,ūbhi,bhi,.m.$.pl.$.inst.,2
+.nt.,us,ūhi,bi,.m.$.pl.$.abl.,2
+.nt.,us,ūbhi,bhi,.m.$.pl.$.abl.,2
+.nt.,us,ūsu,su,.m.$.pl.$.loc.,2
+.m.,a,assā,sa,.m.$.sg.$.gen.,1
+.m.,a,assā,sa,.m.$.sg.$.dat.,1
+.m.,a,enā,na,.m.$.sg.$.inst.,1
+.m.,a,amhī,mhi,.m.$.sg.$.loc.,1
+.m.,a,ehī,hi,.m.$.pl.$.inst.,1
+.m.,a,ebhī,bhi,.m.$.pl.$.inst.,1
+.m.,a,ehī,hi,.m.$.pl.$.abl.,1
+.m.,a,ebhī,bhi,.m.$.pl.$.abl.,1
+.m.,a,esū,su,.m.$.pl.$.loc.,1
+.nt.,a,assā,sa,.nt.$.sg.$.gen.,1
+.nt.,a,assā,sa,.nt.$.sg.$.dat.,1
+.nt.,a,enā,na,.nt.$.sg.$.inst.,1
+.nt.,a,amhī,mhi,.nt.$.sg.$.loc.,1
+.nt.,a,ānī,ni,.nt.$.pl.$.nom.,1
+.nt.,a,ānī,ni,.nt.$.pl.$.voc.,1
+.nt.,a,ānī,ni,.nt.$.pl.$.acc.,1
+.nt.,a,ehī,hi,.nt.$.pl.$.inst.,1
+.nt.,a,ebhī,bhi,.nt.$.pl.$.inst.,1
+.nt.,a,ehī,hi,.nt.$.pl.$.abl.,1
+.nt.,a,ebhī,bhi,.nt.$.pl.$.abl.,1
+.nt.,a,esū,su,.nt.$.pl.$.loc.,1
+.f.,ā,āhī,hi,.f.$.pl.$.inst.,1
+.f.,ā,ābhī,bhi,.f.$.pl.$.inst.,1
+.f.,ā,āhī,hi,.f.$.pl.$.abl.,1
+.f.,ā,ābhī,bhi,.f.$.pl.$.abl.,1
+.f.,ā,āsū,su,.f.$.pl.$.loc.,1
+.m.,i,issā,sa,.m.$.sg.$.gen.,1
+.m.,i,issā,sa,.m.$.sg.$.dat.,1
+.m.,i,imhī,mhi,.m.$.sg.$.loc.,1
+.m.,i,īhī,hi,.m.$.pl.$.inst.,1
+.m.,i,ībhī,bhi,.m.$.pl.$.inst.,1
+.m.,i,īhī,hi,.m.$.pl.$.abl.,1
+.m.,i,ībhī,bhi,.m.$.pl.$.abl.,1
+.m.,i,īsū,su,.m.$.pl.$.loc.,1
+.nt.,i,assā,sa,.nt.$.sg.$.gen.,1
+.nt.,i,assā,sa,.nt.$.sg.$.dat.,1
+.nt.,i,imhī,mhi,.nt.$.sg.$.loc.,1
+.nt.,i,īnī,ni,.nt.$.pl.$.nom.,1
+.nt.,i,īnī,ni,.nt.$.pl.$.voc.,1
+.nt.,i,īnī,ni,.nt.$.pl.$.acc.,1
+.nt.,i,īhī,hi,.nt.$.pl.$.inst.,1
+.nt.,i,ībhī,bhi,.nt.$.pl.$.inst.,1
+.nt.,i,īhī,hi,.nt.$.pl.$.abl.,1
+.nt.,i,ībhī,bhi,.nt.$.pl.$.abl.,1
+.nt.,i,īsū,su,.nt.$.pl.$.loc.,1
+.f.,i,īhī,hi,.f.$.pl.$.inst.,1
+.f.,i,ībhī,bhi,.f.$.pl.$.inst.,1
+.f.,i,īhī,hi,.f.$.pl.$.abl.,1
+.f.,i,ībhī,bhi,.f.$.pl.$.abl.,1
+.f.,i,īsū,su,.f.$.pl.$.loc.,1
+.m.,ī,issā,sa,.m.$.sg.$.gen.,1
+.m.,in,issā,sa,.m.$.sg.$.gen.,2
+.m.,ī,issā,sa,.m.$.sg.$.dat.,1
+.m.,in,issā,sa,.m.$.sg.$.dat.,2
+.m.,ī,imhī,mhi,.m.$.sg.$.loc.,1
+.m.,in,imhī,mhi,.m.$.sg.$.loc.,2
+.m.,ī,īhī,hi,.m.$.pl.$.inst.,1
+.m.,ī,ībhī,bhi,.m.$.pl.$.inst.,1
+.m.,in,īhī,hi,.m.$.pl.$.inst.,2
+.m.,in,ībhī,bhi,.m.$.pl.$.inst.,2
+.m.,ī,īhī,hi,.m.$.pl.$.abl.,1
+.m.,ī,ībhī,bhi,.m.$.pl.$.abl.,1
+.m.,in,īhī,hi,.m.$.pl.$.abl.,2
+.m.,in,ībhī,bhi,.m.$.pl.$.abl.,2
+.m.,ī,īsū,su,.m.$.pl.$.loc.,1
+.m.,in,īsū,su,.m.$.pl.$.loc.,2
+.f.,ī,īhī,hi,.f.$.pl.$.inst.,1
+.f.,ī,ībhī,bhi,.f.$.pl.$.inst.,1
+.f.,ī,īhī,hi,.f.$.pl.$.abl.,1
+.f.,ī,ībhī,bhi,.f.$.pl.$.abl.,1
+.f.,ī,īsū,su,.f.$.pl.$.loc.,1
+.m.,u,ussā,sa,.m.$.sg.$.gen.,1
+.m.,u,ussā,sa,.m.$.sg.$.dat.,1
+.m.,u,umhī,mhi,.m.$.sg.$.loc.,1
+.m.,u,ūhī,hi,.m.$.pl.$.inst.,1
+.m.,u,ūbhī,bhi,.m.$.pl.$.inst.,1
+.m.,u,ūhī,hi,.m.$.pl.$.abl.,1
+.m.,u,ūbhī,bhi,.m.$.pl.$.abl.,1
+.m.,u,ūsū,su,.m.$.pl.$.loc.,1
+.nt.,u,ussā,sa,.nt.$.sg.$.gen.,1
+.nt.,u,ussā,sa,.nt.$.sg.$.dat.,1
+.nt.,u,umhī,mhi,.nt.$.sg.$.loc.,1
+.nt.,u,ūnī,ni,.nt.$.pl.$.nom.,1
+.nt.,u,ūnī,ni,.nt.$.pl.$.voc.,1
+.nt.,u,ūnī,ni,.nt.$.pl.$.acc.,1
+.nt.,u,ūhī,hi,.nt.$.pl.$.inst.,1
+.nt.,u,ūbhī,bhi,.nt.$.pl.$.inst.,1
+.nt.,u,ūhī,hi,.nt.$.pl.$.abl.,1
+.nt.,u,ūbhī,bhi,.nt.$.pl.$.abl.,1
+.nt.,u,ūsū,su,.nt.$.pl.$.loc.,1
+.f.,u,ūhī,hi,.f.$.pl.$.inst.,1
+.f.,u,ūbhī,bhi,.f.$.pl.$.inst.,1
+.f.,u,ūhī,hi,.f.$.pl.$.abl.,1
+.f.,u,ūbhī,bhi,.f.$.pl.$.abl.,1
+.f.,u,ūsū,su,.f.$.pl.$.loc.,1
+.m.,ū,ussā,sa,.m.$.sg.$.gen.,1
+.m.,ū,ussā,sa,.m.$.sg.$.dat.,1
+.m.,ū,umhī,mhi,.m.$.sg.$.loc.,1
+.m.,ū,ūhī,hi,.m.$.pl.$.inst.,1
+.m.,ū,ūbhī,bhi,.m.$.pl.$.inst.,1
+.m.,ū,ūhī,hi,.m.$.pl.$.abl.,1
+.m.,ū,ūbhī,bhi,.m.$.pl.$.abl.,1
+.m.,ū,ūsū,su,.m.$.pl.$.loc.,1
+.f.,ū,ūhī,hi,.f.$.pl.$.inst.,1
+.f.,ū,ūbhī,bhi,.f.$.pl.$.inst.,1
+.f.,ū,ūhī,hi,.f.$.pl.$.abl.,1
+.f.,ū,ūbhī,bhi,.f.$.pl.$.abl.,1
+.f.,ū,ūsū,su,.f.$.pl.$.loc.,1
+.m.,as,assā,sa,.m.$.sg.$.gen.,2
+.m.,o,assā,sa,.m.$.sg.$.gen.,1
+.m.,as,assā,sa,.m.$.sg.$.dat.,2
+.m.,o,assā,sa,.m.$.sg.$.dat.,1
+.m.,as,enā,na,.m.$.sg.$.inst.,2
+.m.,o,enā,na,.m.$.sg.$.inst.,1
+.m.,as,asī,i,.m.$.sg.$.loc.,2
+.m.,as,amhī,mhi,.m.$.sg.$.loc.,2
+.m.,o,asī,i,.m.$.sg.$.loc.,1
+.m.,o,amhī,mhi,.m.$.sg.$.loc.,1
+.m.,as,ehī,hi,.m.$.pl.$.inst.,2
+.m.,as,ebhī,bhi,.m.$.pl.$.inst.,2
+.m.,o,ehī,hi,.m.$.pl.$.inst.,1
+.m.,o,ebhī,bhi,.m.$.pl.$.inst.,1
+.m.,as,ehī,hi,.m.$.pl.$.abl.,2
+.m.,as,ebhī,bhi,.m.$.pl.$.abl.,2
+.m.,o,ehī,hi,.m.$.pl.$.abl.,1
+.m.,o,ebhī,bhi,.m.$.pl.$.abl.,1
+.m.,as,esū,su,.m.$.pl.$.loc.,2
+.m.,o,esū,su,.m.$.pl.$.loc.,1
+.nt.,as,assā,sa,.nt.$.sg.$.gen.,2
+.nt.,o,assā,sa,.nt.$.sg.$.gen.,1
+.nt.,as,assā,sa,.nt.$.sg.$.dat.,2
+.nt.,o,assā,sa,.nt.$.sg.$.dat.,1
+.nt.,as,enā,na,.nt.$.sg.$.inst.,2
+.nt.,o,enā,na,.nt.$.sg.$.inst.,1
+.nt.,as,asī,i,.nt.$.sg.$.loc.,2
+.nt.,as,amhī,mhi,.nt.$.sg.$.loc.,2
+.nt.,o,asī,i,.nt.$.sg.$.loc.,1
+.nt.,o,amhī,mhi,.nt.$.sg.$.loc.,1
+.nt.,as,ehī,hi,.nt.$.pl.$.inst.,2
+.nt.,as,ebhī,bhi,.nt.$.pl.$.inst.,2
+.nt.,o,ehī,hi,.nt.$.pl.$.inst.,1
+.nt.,o,ebhī,bhi,.nt.$.pl.$.inst.,1
+.nt.,as,ehī,hi,.nt.$.pl.$.abl.,2
+.nt.,as,ebhī,bhi,.nt.$.pl.$.abl.,2
+.nt.,o,ehī,hi,.nt.$.pl.$.abl.,1
+.nt.,o,ebhī,bhi,.nt.$.pl.$.abl.,1
+.nt.,as,esū,su,.nt.$.pl.$.loc.,2
+.nt.,o,esū,su,.nt.$.pl.$.loc.,1
+.m.,an,assā,sa,.m.$.sg.$.gen.,2
+.m.,an,assā,sa,.m.$.sg.$.dat.,2
+.m.,an,enā,na,.m.$.sg.$.inst.,2
+.m.,an,anī,i,.m.$.sg.$.loc.,2
+.m.,an,amhī,mhi,.m.$.sg.$.loc.,2
+.m.,an,anehī,hi,.m.$.pl.$.inst.,2
+.m.,an,anebhī,bhi,.m.$.pl.$.inst.,2
+.m.,an,anehī,hi,.m.$.pl.$.abl.,2
+.m.,an,anebhī,bhi,.m.$.pl.$.abl.,2
+.m.,an,anesū,su,.m.$.pl.$.loc.,2
+.nt.,an,assā,sa,.nt.$.sg.$.gen.,2
+.nt.,an,assā,sa,.nt.$.sg.$.dat.,2
+.nt.,an,enā,na,.nt.$.sg.$.inst.,2
+.nt.,an,amhī,mhi,.nt.$.sg.$.loc.,2
+.nt.,an,ānī,ni,.nt.$.pl.$.nom.,2
+.nt.,an,ānī,ni,.nt.$.pl.$.voc.,2
+.nt.,an,ānī,ni,.nt.$.pl.$.acc.,2
+.nt.,an,ehī,hi,.nt.$.pl.$.inst.,2
+.nt.,an,ebhī,bhi,.nt.$.pl.$.inst.,2
+.nt.,an,ehī,hi,.nt.$.pl.$.abl.,2
+.nt.,an,ebhī,bhi,.nt.$.pl.$.abl.,2
+.nt.,an,esū,su,.nt.$.pl.$.loc.,2
+.f.,ar,assā,sa,.f.$.sg.$.gen.,2
+.f.,ar,assā,sa,.f.$.sg.$.dat.,2
+.f.,ar,enā,na,.f.$.sg.$.inst.,2
+.f.,ar,amhī,mhi,.f.$.sg.$.loc.,2
+.f.,ar,ehī,hi,.f.$.pl.$.inst.,2
+.f.,ar,āhī,bhi,.f.$.pl.$.inst.,2
+.f.,ar,ehī,hi,.f.$.pl.$.abl.,2
+.f.,ar,āhī,bhi,.f.$.pl.$.abl.,2
+.f.,ar,esū,su,.f.$.pl.$.loc.,2
+.f.,ar,āsū,su,.f.$.pl.$.loc.,2
+.nt.,ar,assā,sa,.nt.$.sg.$.gen.,2
+.nt.,ar,assā,sa,.nt.$.sg.$.dat.,2
+.nt.,ar,enā,na,.nt.$.sg.$.inst.,2
+.nt.,ar,amhī,mhi,.nt.$.sg.$.loc.,2
+.nt.,ar,ehī,hi,.nt.$.pl.$.inst.,2
+.nt.,ar,āhī,bhi,.nt.$.pl.$.inst.,2
+.nt.,ar,ehī,hi,.nt.$.pl.$.abl.,2
+.nt.,ar,āhī,bhi,.nt.$.pl.$.abl.,2
+.nt.,ar,esū,su,.nt.$.pl.$.loc.,2
+.nt.,ar,āsū,su,.nt.$.pl.$.loc.,2
+.m.,a,asī,i,.m.$.sg.$.loc.,1
+.nt.,a,asī,i,.nt.$.sg.$.loc.,1
+.m.,i,ihī,hi,.m.$.pl.$.inst.,1
+.m.,i,ibhī,bhi,.m.$.pl.$.inst.,1
+.m.,i,ihī,hi,.m.$.pl.$.abl.,1
+.m.,i,ibhī,bhi,.m.$.pl.$.abl.,1
+.m.,i,isū,su,.m.$.pl.$.loc.,1
+.nt.,i,ihī,hi,.nt.$.pl.$.inst.,1
+.nt.,i,ibhī,bhi,.nt.$.pl.$.inst.,1
+.nt.,i,ihī,hi,.nt.$.pl.$.abl.,1
+.nt.,i,ibhī,bhi,.nt.$.pl.$.abl.,1
+.nt.,i,isū,su,.nt.$.pl.$.loc.,1
+.m.,ī,īsū,su,.m.$.pl.$.loc.,1
+.f.,ī,isū,su,.f.$.pl.$.loc.,1
+.m.,ar,ussā,sa,.m.$.sg.$.dat.,2
+.m.,ar,ussā,sa,.m.$.sg.$.gen.,2
+.m.,ar,arī,i,.m.$.sg.$.loc.,2
+.m.,ar,ārehī,hi,.m.$.pl.$.inst.,2
+.m.,ar,ārebhī,bhi,.m.$.pl.$.inst.,2
+.m.,ar,ārehī,hi,.m.$.pl.$.abl.,2
+.m.,ar,ārebhī,bhi,.m.$.pl.$.abl.,2
+.m.,ar,āresū,su,.m.$.pl.$.loc.,2
+.m.,ar,ūsū,su,.m.$.pl.$.loc.,2
+.m.,an,ubhī,bhi,.m.$.pl.$.inst.,2
+.m.,an,ūbhī,bhi,.m.$.pl.$.inst.,2
+.m.,an,uhī,hi,.m.$.pl.$.inst.,2
+.m.,an,ūhī,hi,.m.$.pl.$.inst.,2
+.m.,an,esū,su,.m.$.pl.$.loc.,2
+.m.,an,ūsū,su,.m.$.pl.$.loc.,2
+.m.,an,usū,su,.m.$.pl.$.loc.,2
+.nt.,an,anī,i,.nt.$.sg.$.loc.,2
+.m.,as,ānī,ni,.m.$.pl.$.nom.,2
+.m.,as,ānī,ni,.m.$.pl.$.acc.,2
+.m.,as,ānī,ni,.m.$.pl.$.voc.,2
+.nt.,as,ānī,ni,.m.$.pl.$.nom.,2
+.nt.,as,ānī,ni,.m.$.pl.$.acc.,2
+.nt.,as,ānī,ni,.m.$.pl.$.voc.,2
+.m.,as,ānī,ni,.m.$.pl.$.nom.,2
+.m.,as,ānī,ni,.m.$.pl.$.acc.,2
+.m.,as,ānī,ni,.m.$.pl.$.voc.,2
+.nt.,us,ussā,sa,.m.$.sg.$.dat.,2
+.nt.,us,ussā,sa,.m.$.sg.$.gen.,2
+.nt.,us,unī,i,.m.$.sg.$.loc.,2
+.nt.,us,usī,i,.m.$.sg.$.loc.,2
+.nt.,us,ūnī,ni,.m.$.pl.$.nom.,2
+.nt.,us,ūnī,ni,.m.$.pl.$.voc.,2
+.nt.,us,ūnī,ni,.m.$.pl.$.acc.,2
+.nt.,us,ūhī,hi,.m.$.pl.$.inst.,2
+.nt.,us,ūbhī,bhi,.m.$.pl.$.inst.,2
+.nt.,us,ūhī,bi,.m.$.pl.$.abl.,2
+.nt.,us,ūbhī,bhi,.m.$.pl.$.abl.,2
+.nt.,us,ūsū,su,.m.$.pl.$.loc.,2

+ 136 - 0
public/app/public/ending/verb.csv

@@ -0,0 +1,136 @@
+strlen,end,grammar
+2,ti,.3p.$.sg.$.pres.
+2,nti,.3p.$.pl.$.pres.
+2,te,.3p.$.sg.$.pres.
+2,nte,.3p.$.pl.$.pres.
+2,re,.3p.$.pl.$.pres.
+2,ssati,.3p.$.sg.$.fut.
+2,ssanti,.3p.$.pl.$.fut.
+2,ssate,.3p.$.sg.$.fut.
+2,ssante,.3p.$.pl.$.fut.
+2,ssare,.3p.$.pl.$.fut.
+2,tu,.3p.$.sg.$.imp.
+2,ntu,.3p.$.pl.$.imp.
+2,taṃ,.3p.$.sg.$.imp.
+2,ntaṃ,.3p.$.pl.$.imp.
+3,eyya,.3p.$.sg.$.opt.
+3,eyyuṃ,.3p.$.pl.$.opt.
+3,etha,.3p.$.sg.$.opt.
+3,eraṃ,.3p.$.pl.$.opt.
+2,sā,.3p.$.sg.$.cond.
+2,ssa,.3p.$.sg.$.cond.
+2,ssati,.3p.$.sg.$.cond.
+2,ssaṃsu,.3p.$.pl.$.cond.
+2,ssatha,.3p.$.sg.$.cond.
+2,ssiṃsu,.3p.$.pl.$.cond.
+3,issati,.3p.$.sg.$.fut.
+3,issanti,.3p.$.pl.$.fut.
+3,issate,.3p.$.sg.$.fut.
+3,issante,.3p.$.pl.$.fut.
+3,issare,.3p.$.pl.$.fut.
+3,i,.3p.$.sg.$.aor.
+3,ī,.3p.$.sg.$.aor.
+3,ā,.3p.$.sg.$.aor.
+3,iṃsu,.3p.$.pl.$.aor.
+3,ṃ,.3p.$.pl.$.aor.
+3,uṃū,.3p.$.pl.$.aor.
+3,ā,.3p.$.sg.$.aor.
+3,a,.3p.$.sg.$.aor.
+3,tthuṃ,.3p.$.pl.$.aor.
+3,atthuṃ,.3p.$.pl.$.aor.
+2,si,.3p.$.sg.$.aor.
+2,sī,.3p.$.sg.$.aor.
+2,sā,.3p.$.sg.$.aor.
+2,siṃsu,.3p.$.pl.$.aor.
+2,sṃ,.3p.$.pl.$.aor.
+2,suṃū,.3p.$.pl.$.aor.
+2,sā,.3p.$.sg.$.aor.
+2,sa,.3p.$.sg.$.aor.
+2,stthuṃ,.3p.$.pl.$.aor.
+2,satthuṃ,.3p.$.pl.$.aor.
+2,mi,.1p.$.sg.$.pres.
+2,ma,.1p.$.pl.$.pres.
+2,e,.1p.$.sg.$.pres.
+2,mhe,.1p.$.pl.$.pres.
+2,mahe,.1p.$.pl.$.pres.
+2,mha,.1p.$.pl.$.pres.
+2,mase,.1p.$.pl.$.pres.
+2,mhase,.1p.$.pl.$.pres.
+2,ssāmi,.1p.$.sg.$.fut.
+2,ssāma,.1p.$.pl.$.fut.
+2,ssaṃ,.1p.$.sg.$.fut.
+2,ssāmhe,.1p.$.pl.$.fut.
+2,ssāmase,.1p.$.pl.$.fut.
+2,mi,.1p.$.sg.$.imp.
+2,ma,.1p.$.pl.$.imp.
+3,e,.1p.$.sg.$.imp.
+3,āmase,.1p.$.pl.$.imp.
+3,eyyāmi,.1p.$.sg.$.opt.
+3,eyyāma,.1p.$.pl.$.opt.
+3,eyyaṃ,.1p.$.sg.$.opt.
+3,eyyāmhe,.1p.$.pl.$.opt.
+2,ssa,.1p.$.sg.$.cond.
+2,ssamhā,.1p.$.pl.$.cond.
+2,ssaṃ,.1p.$.sg.$.cond.
+2,ssāmhase,.1p.$.pl.$.cond.
+3,issāmi,.1p.$.sg.$.fut.
+3,issāma,.1p.$.pl.$.fut.
+3,issaṃ,.1p.$.sg.$.fut.
+3,issāmhe,.1p.$.pl.$.fut.
+3,issāmase,.1p.$.pl.$.fut.
+3,iṃ,.1p.$.sg.$.aor.
+3,aṃ,.1p.$.sg.$.aor.
+3,ṃ,.1p.$.sg.$.aor.
+3,a,.1p.$.sg.$.aor.
+3,ā,.1p.$.sg.$.aor.
+3,imha,.1p.$.pl.$.aor.
+3,imhā,.1p.$.pl.$.aor.
+3,a,.1p.$.sg.$.aor.
+3,imhe,.1p.$.pl.$.aor.
+2,siṃ,.1p.$.sg.$.aor.
+2,saṃ,.1p.$.sg.$.aor.
+2,sṃ,.1p.$.sg.$.aor.
+2,sa,.1p.$.sg.$.aor.
+2,sā,.1p.$.sg.$.aor.
+2,simha,.1p.$.pl.$.aor.
+2,simhā,.1p.$.pl.$.aor.
+2,sa,.1p.$.sg.$.aor.
+2,simhe,.1p.$.pl.$.aor.
+2,si,.2p.$.sg.$.pres.
+2,tha,.2p.$.pl.$.pres.
+2,se,.2p.$.sg.$.pres.
+2,vhe,.2p.$.pl.$.pres.
+2,ssasi,.2p.$.sg.$.fut.
+2,ssatha,.2p.$.pl.$.fut.
+2,ssase,.2p.$.sg.$.fut.
+2,ssavhe,.2p.$.pl.$.fut.
+2,hi,.2p.$.sg.$.imp.
+2,ta,.2p.$.pl.$.imp.
+2,ssu,.2p.$.sg.$.imp.
+2,vho,.2p.$.pl.$.imp.
+3,eyyāsi,.2p.$.sg.$.opt.
+3,eyyātha,.2p.$.pl.$.opt.
+3,etho,.2p.$.sg.$.opt.
+3,eyyavho,.2p.$.pl.$.opt.
+2,se,.2p.$.sg.$.cond.
+2,ssa,.2p.$.sg.$.cond.
+2,ssasi,.2p.$.sg.$.cond.
+2,ssatha,.2p.$.pl.$.cond.
+2,ssase,.2p.$.sg.$.cond.
+2,ssavhe,.2p.$.pl.$.cond.
+3,issasi,.2p.$.sg.$.fut.
+3,issatha,.2p.$.pl.$.fut.
+3,issase,.2p.$.sg.$.fut.
+3,issavhe,.2p.$.pl.$.fut.
+3,i,.2p.$.sg.$.aor.
+3,o,.2p.$.sg.$.aor.
+3,ā,.2p.$.sg.$.aor.
+3,ttha,.2p.$.pl.$.aor.
+3,se,.2p.$.sg.$.aor.
+3,vhaṃ,.2p.$.pl.$.aor.
+2,si,.2p.$.sg.$.aor.
+2,so,.2p.$.sg.$.aor.
+2,sā,.2p.$.sg.$.aor.
+2,sttha,.2p.$.pl.$.aor.
+2,sse,.2p.$.sg.$.aor.
+2,svhaṃ,.2p.$.pl.$.aor.

+ 41 - 1
public/app/public/function.php

@@ -2,6 +2,10 @@
 require_once __DIR__ . '/casesuf.inc';
 require_once __DIR__ . '/config.php';
 require_once __DIR__ . '/../config.php';
+
+// Require Composer's autoloader.
+require_once  __DIR__ . '/../../vendor/autoload.php';
+
 $_book_index = null; //书的列表
 
 /*
@@ -98,7 +102,7 @@ function _get_para_path($book, $paragraph)
 			if ($sFirstParentTitle == "") {
 				$sFirstParentTitle = $FetParent["toc"];
 			}
-			$parent = $FetParent["parent"];			
+			$parent = $FetParent["parent"];
 		}else{
 			break;
 		}
@@ -112,6 +116,42 @@ function _get_para_path($book, $paragraph)
     return ($path);
 }
 
+use Firebase\JWT\JWT;
+use Firebase\JWT\Key;
+
+class USER
+{
+    public static function current(){
+        if(isset($_COOKIE['token'])){
+            $jwt = JWT::decode($_COOKIE['token'],new Key(APP_KEY,'HS512'));
+            if($jwt->exp < time()){
+                return [];
+            }else{
+                //有效的token
+                return ['user_uid'=>$jwt->uid,'user_id'=>$jwt->id];
+            }
+        }else if(isset($_COOKIE['user_uid'])){
+            return ['user_uid'=>$_COOKIE['user_uid'],'user_id'=>$_COOKIE['user_id']];
+        }else{
+            return [];
+        }
+    }
+    public static function isSignin(){
+        if(isset($_COOKIE['token'])){
+            $jwt = JWT::decode($_COOKIE['token'],new Key(APP_KEY,'HS512'));
+            if($jwt->exp < time()){
+                return false;
+            }else{
+                //有效的token
+                return true;
+            }
+        }else if(isset($_COOKIE['user_uid'])){
+            return true;
+        }else{
+            return false;
+        }
+    }
+}
 class UUID
 {
     public static function v3($namespace, $name)

+ 1312 - 0
public/app/studio/editor copy.php

@@ -0,0 +1,1312 @@
+<?php
+require_once 'checklogin.inc';
+require_once '../public/config.php';
+require_once '../public/load_lang.php';
+
+//load language file
+if(file_exists($dir_language.$currLanguage.".php")){
+	require $dir_language.$currLanguage.".php";
+}
+else{
+	include $dir_language."default.php";
+}
+
+
+if(isset($_GET["device"])){$currDevice=$_GET["device"];}
+else{$currDevice="computer";}
+
+//require "module/editor/language/$currLanguage.php";
+?>
+<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01//EN" "http://www.w3.org/TR/html4/strict.dtd">
+<html>
+<head>
+	<meta http-equiv="Content-Type" content="text/html; charset=UTF-8"/>
+	<meta name="viewport" content="width=device-width, initial-scale=1.0">
+
+	<title id="file_title"><?php echo $_local->gui->pcd_studio; ?></title>	
+
+	<link rel="shortcut icon" href="../favicon.icon" />
+	<link type="text/css" rel="stylesheet" href="css/style.css"/>
+	<link type="text/css" rel="stylesheet" href="css/color_day.css" id="colorchange" />
+	<link type="text/css" rel="stylesheet" href="css/style_mobile.css" media="screen and (max-width:800px)">
+	
+	<link href="https://fonts.googleapis.com/css2?family=Padauk:wght@400;700&display=swap" rel="stylesheet">
+	<link type="text/css" rel="stylesheet" href="../public/css/notify.css"/>
+	<?php
+		if(file_exists($dir_user_base.$userid.$dir_myApp."/style.css")){
+			echo "<link type=\"text/css\" rel=\"stylesheet\" href=\"".$dir_user_base.$userid.$dir_myApp."/style.css\"/>";
+		}
+	?>
+
+	<script src="../guide/guide.js"></script>
+	<link type="text/css" rel="stylesheet" href="../guide/guide.css"/>
+	<script src="../public/js/marked.js"></script>
+
+	<script src="../public/js/jquery-3.6.js"></script>
+	<script src="../public/js/jquery-ui-1.12.1/jquery-ui.js"></script>
+
+	<script language="javascript" src="config.js"></script>
+	<script language="javascript" src="../pali_sent/pali_sent_list.js"></script>
+	<script language="javascript" src="../usent/usent_ref.js"></script>
+	<script language="javascript" src="js/data.js"></script>
+	<script language="javascript" src="js/common.js"></script>
+	<script language="javascript" src="js/render.js"></script>	
+	<script language="javascript" src="js/xml.js"></script>
+	<script language="javascript" src="js/editor.js"></script>
+	<script language="javascript" src="js/wbw_dict.js"></script>
+	<script language="javascript" src="js/wizard.js"></script>
+	<script language="javascript" src="js/wordmap.js"></script>
+	<script language="javascript" src="js/dict.js"></script>
+	<script language="javascript" src="js/relation.js"></script>
+
+	<script language="javascript" src="js/relation_list.js"></script>
+	
+	<script language="javascript" src="sent/sent.js"></script>
+	<script language="javascript" src="../public/js/notify.js"></script>
+
+	<script language="javascript" src="../widget/notify.js"></script>
+	<link type="text/css" rel="stylesheet" href="../widget/notify.css"/>
+
+	<script language="javascript" src="../public/js/comm.js"></script>
+	<script language="javascript" src="../public/js/localforage.min.js"></script>
+	<script language="javascript" src="../public/script/my.js"></script>
+	<script src="../../node_modules/mermaid/dist/mermaid.min.js"></script>
+
+	
+	<script language="javascript" src="module/editor/language/default.js"></script>	
+
+
+	<script src="../term/term.js"></script>
+	<script src="../term/note.js"></script>
+	<script src="../term/term_popup.js"></script>
+	<link type="text/css" rel="stylesheet" href="../term/term.css"/>
+
+	<script src="./js/message.js"></script>
+	<script src="../uwbw/update.js"></script>
+	<script src="../usent/usent.js"></script>
+	<script src="../ucenter/setting.js"></script>
+	<script src="../fileindex/file_info.js"></script>
+
+	<script  src="../channal/channal.js"></script>
+	<script>
+		get_channel_list_callback=renderChannelList();
+		
+
+	</script>
+
+	
+	<script language="javascript">
+	<?php 
+	//加载js语言包
+	//require_once '../public/load_lang_js.php';
+	?>
+	<?php
+	//加载js语言包
+	if(file_exists(_DIR_LANGUAGE_."/".$currLanguage.".json")){
+		echo "var gLocal = ".file_get_contents(_DIR_LANGUAGE_."/".$currLanguage.".json").";";
+	}
+	else{
+		echo "var gLocal = ".file_get_contents(_DIR_LANGUAGE_."/default.json").";";
+	}
+	?>
+		var gDownloadListString="";
+		
+		var g_device="computer";
+		var strSertch = location.search;
+		var gConfigDirMydocument="<?php echo _DIR_USER_DOC_."/".$userid._DIR_MYDOCUMENT_; ?>/";
+		
+		if(strSertch.length>0){
+			strSertch = strSertch.substr(1);
+			var sertchList=strSertch.split('&');
+			for (x in sertchList){
+				var item = sertchList[x].split('=');
+				if(item[0]=="device"){
+					g_device=item[1];
+				}
+			}
+		}
+		if(g_device=="mobile"){
+			g_is_mobile=true;
+		}
+		else{
+			g_is_mobile=false;
+		}
+		
+		var gCaseTable=<?php echo file_get_contents("../public/js/case.json"); ?>
+	</script>
+	
+</head>
+<body class="mainbody" id="mbody" onLoad="editor_windowsInit()">
+	<style>
+	.term_link:hover .guide_contence {
+		display: inline-block;
+	}
+	
+	.trans_text_block{
+		border-left: 5px solid #ccd1ff;
+		border-color: #ccd1ff;
+		background-color:unset;
+		margin-bottom: 0.5em;
+		padding: 0.5em 0.5em 0.1em 0.5em;
+		padding-top:0;
+	}
+	.translate_sent_head{
+		height: 17em;
+		overflow-y: scroll;
+	}
+	.translate_sent_head_content .readonly{
+		border-color: #d1d1d1;
+		background-color: #f1f1f1;
+	}
+	.trans_text_content{
+		color: unset;
+	}
+	.trans_text_content p{
+		margin-block-start: 0.3em;
+		margin-block-end: 0;
+	}
+	.trans_text_info{
+		font-size: 80%;
+		border-top: 1px solid gray;
+		padding-top: 5px;
+		color: var(--detail-color);
+		display:flex;
+		justify-content: space-between;
+		border:none;
+	}
+
+	.trans_text_info .tag{
+		font-size: 75%;
+	}
+	.trans_text_info .tools{
+		/*visibility: hidden;*/
+	}
+	.trans_text_block:hover .trans_text_info .tools{
+		visibility: visible;
+	}
+	wnh{
+	background-color: var(--link-hover-color);
+    color: var(--btn-color);
+    border-radius: 0.8em;
+    cursor: pointer;
+    padding: 2px;
+    font-size: 80%;
+    display: inline-block;
+	min-width: 1.2em;
+	width: fit-content;
+	height: 1.2em;
+	line-height: 1.2em;
+    text-align: center;
+	}	
+	#left_tool_bar {
+		position: fixed;
+		top: 0;
+		left: 0;
+		background-color: var(--tool-bg-color);
+		color: var(--tool-color);
+		height: 100%;
+		width: 2.5em;	
+		font-size: 100%;
+		z-index: 16;
+
+		display: -webkit-flex;
+		display: -moz-flex;
+		display: flex;
+		flex-direction: column;
+		-webkit-align-items: center;
+		-moz-align-items: center;
+		align-items: center;
+		-webkit-justify-content: space-between;
+		-moz-justify-content: space-between;
+		justify-content: space-between;
+		padding: 4em 4px 1em 4px;
+		border-right: 1px solid var(--tool-bg-color3);
+	}
+	#left_tool_bar::-webkit-scrollbar {
+		display: none;
+	}
+	.border_top{
+		border-top: 1px solid var(--tool-line-color);
+		width: 1.5em;
+		margin: 10px 5px 10px 5px;
+		display: inline-block;
+	}
+	.left_panal_caption{
+		border-bottom: 1px solid var(--tool-bg-color3);
+		padding: 8px 0 8px 3.2em;
+		font-weight: 700;
+	}
+	.left_panal_content{
+		padding: 8px 0 8px 3.2em;
+	}
+	#svg_parent2{
+		width: 1em;
+		margin-left: -1em;
+	}
+	guide {
+		margin: 0 15px 0 -8px;
+	}
+	.translate_sent_head_toolbar {
+		display: none;
+	}
+	div#input_org_select{
+		position: relative;
+	}
+	div#input_org_select .case_dropbtn {
+		padding: 0 6px;
+		border-radius: 4px;
+		min-width: 1em;
+		min-height: 1.3em;
+		background: url(../../node_modules/bootstrap-icons/icons/chevron-double-down.svg);
+		background-repeat: no-repeat;
+		background-position-x: center;
+		background-position-y: bottom;
+		background-origin: content-box;
+		background-color: var(--main-color1);
+		white-space: nowrap;
+	}
+	#parent_grammar{
+		padding: 0 6px;
+		border-radius: 4px;
+		min-width: 1em;
+		min-height: 1.3em;
+		background: url(../../node_modules/bootstrap-icons/icons/chevron-double-down.svg);
+		background-repeat: no-repeat;
+		background-position-x: center;
+		background-position-y: bottom;
+		background-origin: content-box;
+		background-color: var(--main-color1);
+		white-space: nowrap;
+	}
+
+	#word_mdf_parts_dropdown  a {
+		width: 100%;
+		display: inline-block;
+		overflow: hidden;
+		white-space: nowrap;
+		text-overflow: ellipsis;
+	}
+	#merge_button{
+		position: absolute;
+		left: 7em;
+		border: unset;
+		height: 6em;
+		width: 3em;
+		padding: unset;
+		transform: scaleX(0.6);
+	}
+	#merge_button>.icon{
+		fill: var(--link-color);
+	}
+
+	#merge_button:hover{
+		background: unset;
+	}
+	#merge_button:hover>.icon{
+		fill: var(--link-hover-color);
+	}
+	#om_dropdown_area::-webkit-scrollbar {
+		width: 10px;
+		height: 10px;
+	}
+	#om_dropdown_area::-webkit-scrollbar-thumb {
+		background-color: var(--link-color);
+	}
+	#om_dropdown_area::-webkit-scrollbar-thumb:hover {
+		background-color:var(--tool-link-hover-color);
+	}
+	#om_dropdown_area::-webkit-scrollbar-button:single-button {
+		width: 10px
+		height: 10px;
+		display: block;
+		background-color: var(--link-color);
+		border-radius: 10px;
+	}
+
+	#om_dropdown_area::-webkit-scrollbar-button:single-button:hover {
+		background-color:var(--tool-link-hover-color);
+	}
+
+		</style>
+	<link type="text/css" rel="stylesheet" href="css/print.css" media="print" />
+	<style id="display_set">
+	</style>
+	<!--左侧工具栏-->
+	<div id="left_tool_bar">
+		<div>
+<?php
+$plugin_list = json_decode(file_get_contents("plugin/index.json"));
+foreach($plugin_list as $info){
+	if($info->attach=="left_top" && $info->enable=="true"){
+		echo "<button id=\"left_toc\" type=\"button\" class=\"icon_btn\" onclick=\"setNaviVisibility('{$info->id}')\" title=\"";
+		if(substr($info->tooltip,0,1)=="#"){
+			$realTipText = substr($info->tooltip,1);
+			if(isset($_local_arr[$realTipText])){
+				echo $_local_arr[$realTipText];
+			}
+			else{
+				echo $realTipText;
+			}
+		}
+		else{
+			echo $info->tooltip;
+		}
+		echo "\">";
+		echo "<svg class=\"icon\">";
+		$iconFile = "plugin/".$info->dir."/".$info->icon;
+		echo "<use xlink:href=\"{$iconFile}\"></use>";
+		echo "</svg>";
+		echo "<span class='icon_notify' id='icon_notify_{$info->id}'></span>";
+		echo "</button>";
+	}
+}
+?>
+		</div>
+		<div>
+			<div>
+<?php
+foreach($plugin_list as $info){
+	if($info->attach=="left_mid" && $info->enable=="true"){
+		echo "<button id=\"left_toc\" type=\"button\" class=\"icon_btn\" onclick=\"setNaviVisibility('{$info->id}')\" title=\"";
+		if(substr($info->tooltip,0,1)=="#"){
+			$realTipText = substr($info->tooltip,1);
+			if(isset($_local_arr[$realTipText])){
+				echo $_local_arr[$realTipText];
+			}
+			else{
+				echo $realTipText;
+			}
+		}
+		else{
+			echo $info->tooltip;
+		}
+		echo "\">";
+		echo "<svg class=\"icon\">";
+		$iconFile = "plugin/".$info->dir."/".$info->icon;
+		echo "<use xlink:href=\"{$iconFile}\"></use>";
+		echo "</svg>";
+		echo "<span class='icon_notify' id='icon_notify_{$info->id}'></span>";
+		echo "</button>";
+	}
+}
+?>	
+			</div>
+			<span class="border_top"></span>
+			<div>
+<?php
+foreach($plugin_list as $info){
+	if($info->attach=="left_bottom" && $info->enable=="true"){
+		echo "<button id=\"left_toc\" type=\"button\" class=\"icon_btn\" onclick=\"setNaviVisibility('{$info->id}')\" title=\"";
+		if(substr($info->tooltip,0,1)=="#"){
+			$realTipText = substr($info->tooltip,1);
+			if(isset($_local_arr[$realTipText])){
+				echo $_local_arr[$realTipText];
+			}
+			else{
+				echo $realTipText;
+			}
+		}
+		else{
+			echo $info->tooltip;
+		}		
+		echo "\">";
+		echo "<svg class=\"icon\">";
+		$iconFile = "plugin/".$info->dir."/".$info->icon;
+		echo "<use xlink:href=\"{$iconFile}\"></use>";
+		echo "</svg>";
+		echo "<span class='icon_notify' id='icon_notify_{$info->id}'></span>";
+		echo "</button>";
+	}
+}
+?>
+			</div>
+		</div>
+	</div>
+	
+	<!--关闭打印模式 -->
+	<div id="btn_close_printprev">
+		<a href="#" onclick="printpreview(false)">&nbsp;&nbsp; </a>
+	</div>
+	
+	<!--顶部工具栏tool bar begin-->
+	<div id='toolbar'>
+		<!--左侧的区块-->
+		<div style="display: inline-flex;flex: 4;max-width:40vw">
+
+			<svg class="icon" style="height: 2.7em; width: 12em;">
+				<use xlink:href="../public/images/svg/wikipali_banner.svg#wikipali_banner"></use>
+			</svg>
+
+			<span style="height: fit-content;margin: auto 0;">
+				<span id="net_up" style="display:none;"></span>
+				<span id="msg_tool_bar"><svg class='icon'><use xlink:href='../studio/svg/icon.svg#pause_ms'></use></svg></span>
+				<span id="net_down" style="display:none;"></span>
+			</span>
+			<span id="editor_doc_title" style="margin: auto 0;max-width: 20em;height: fit-content;position: inherit;"></span>
+		</div>
+		
+		<!--工具栏中间的区块-->
+		<div style="flex: 2;display: flex;justify-content: center;">
+			<!--手机版显示工具栏按钮-->
+			<span class="dropdown toolbtn" onmouseover="switchMenu(this,'topTools')">
+				<div>
+				<button class="icon_btn" onClick="switchMenu(this,'topTools')" id="tools_view">
+					<svg class="icon">
+						<use xlink:href="svg/icon.svg#ic_toc"></use>
+					</svg>
+				</button>
+				</div>
+			</span>
+			
+
+			<div class="toolgroup1" id="topTools">
+
+<?php
+#头部中间的插件
+foreach($plugin_list as $info){
+	if($info->attach=="top_mid" && $info->enable=="true"){
+		echo "<style>";
+		include "plugin/{$info->dir}/style.css";
+		echo "</style>";
+		echo "<script src=\"plugin/{$info->dir}/module_function.js\"></script>";
+		
+		echo "<div class='dropdown' onmouseover=\"switchMenu(this,'".$info->id."')\" onmouseout=\"hideMenu()\">";
+		echo "<button class=\"dropbtn icon_btn\">";
+		echo "<svg class=\"icon\">";
+		$iconFile = "plugin/".$info->dir."/".$info->icon;
+		echo "<use xlink:href=\"{$iconFile}\"></use>";
+		echo "</svg>";
+		echo "<span class='icon_notify' id='icon_notify_{$info->id}'></span>";
+		echo "</button>";
+		echo "<div class=\"dropdown-content\" id=\"".$info->id."\" style=\"width:auto\">";
+		require "plugin/{$info->dir}/gui.html";
+		echo "</div>";
+		echo "</div>";	
+				
+	}
+}
+?>
+
+					
+				<!--显示模式-->
+				<div class="dropdown" onmouseover="switchMenu(this,'menuUseMode')" onmouseout="hideMenu()" style="display:none;">
+						<div style="">
+							<button class="dropbtn icon_btn" onClick="switchMenu(this,'menuUseMode')" id="use_mode">	
+								<svg class="icon">
+									<use xmlns:xlink="http://www.w3.org/1999/xlink" xlink:href="svg/icon.svg#ic_reader_mode"></use>
+								</svg>
+							</button>
+						</div>
+						<div class="dropdown-content black_background" id="menuUseMode">
+							<a href="#" onclick="setUseMode('Edit')">
+								<svg class="icon">
+									<use xmlns:xlink="http://www.w3.org/1999/xlink" xlink:href="svg/icon.svg#ic_mode_edit"></use>
+								</svg>
+								编辑模式
+							</a>
+							<a href="#" onclick="setUseMode('note')">
+								<svg class="icon">
+									<use xmlns:xlink="http://www.w3.org/1999/xlink" xlink:href="svg/icon.svg#ic_reader_mode"></use>
+								</svg>
+								笔记模式
+							</a>
+							<a href="#" onclick="setUseMode('Read')">
+								<svg class="icon">
+									<use xmlns:xlink="http://www.w3.org/1999/xlink" xlink:href="svg/icon.svg#ic_reader_mode"></use>
+								</svg>
+								阅读模式
+							</a>
+						</div>
+					</div>
+
+				<!--infomation panal-->
+				<button id="info_panal" class="icon_btn" type="button" onclick="setInfoPanalVisibility()" title="<?php echo $_local->gui->info_panal;?>" style="display:none;">
+					<svg class="icon">
+						<use xlink:href="svg/icon.svg#ic_info_outline"></use>
+					</svg>
+				</button>
+
+				
+				<!--apply all-->
+				<button id="B_ApplyAuto" class="icon_btn" onclick="applyAllSysMatch()" type="button" title="apply all" style="display:none;">
+						<svg class="icon">
+							<use xlink:href="svg/icon.svg#ic_done_all"></use>
+						</svg>
+					</button> 
+				
+				<!--Save-->
+				<button id="B_Save" class="icon_btn" onclick="editor_save()" type="button" style="display:none;" title="<?php echo $_local->gui->save;?>">
+						<svg class="icon">
+							<use xlink:href="svg/icon.svg#ic_save"></use>
+						</svg>
+					</button>					
+			
+			</div>
+			
+		</div>
+		
+		<!--工具栏右侧的区块开始-->
+		<div class="tab_a1" style="flex: 4;display: flex;justify-content: flex-end;">
+<?php
+foreach($plugin_list as $info){
+	if($info->attach=="top_right" && $info->enable=="true"){
+		echo "<button id=\"tab_rb_{$info->id}\" type=\"button\" class=\"icon_btn\" onclick=\"tab_click_b('{$info->id}','tab_rb_{$info->id}',right_panal_slide_toggle,'tab_rb_{$info->id}')\"  title=\"";
+		if(substr($info->tooltip,0,1)=="#"){
+			$realTipText = substr($info->tooltip,1);
+			if(isset($_local_arr[$realTipText])){
+				echo $_local_arr[$realTipText];
+			}
+			else{
+				echo $realTipText;
+			}
+		}
+		else{
+			echo $info->tooltip;
+		}
+		echo "\">";
+		echo "<svg class=\"icon\">";
+		$iconFile = "plugin/".$info->dir."/".$info->icon;
+		echo "<use xlink:href=\"{$iconFile}\"></use>";
+		echo "</svg>";
+		echo "<span class='icon_notify' id='icon_notify_{$info->id}'></span>";
+		echo "<span class='icon_notify' id='icon_notify_{$info->id}'></span>";
+		echo "</button>";
+			
+	}
+}
+?>		
+		
+		</div>
+
+	</div>
+	<!--顶部工具栏结束-->
+	
+	<!--文档载入进度条-->
+	<div id="load_progress_div">
+		<svg id="circleProcess" xmlns="http://www.w3.org/2000/svg">
+			<circle id="circle" cx="50%" cy="50%" r="32%" ></circle>
+		</svg>
+	</div>	
+				
+	<span id="load_progress_num" ></span>
+	<!--tool bar end -->
+	
+	<!--loading -->
+	<svg viewBox="0 0 1000 4" id="loading_bar" xmlns="http://www.w3.org/2000/svg">
+			<line x1="0" y1="2" x2="1000" y2="2" id="loading" stroke-width="5px" stroke-linecap="round"/>
+	</svg>
+	<!--tool bar end -->
+	<!--文档载入进度条结束-->
+
+	
+	<style id="mycss">
+	</style>
+	
+<div class="main">
+		<!-- leftmenu begin--> 
+		<div id="leftmenuinner" class="viewswitch_off" style="z-index:13;">
+
+			<div id="menubartoolbar" style="display: none">
+				<select id="id_editor_menu_select" name="menu" onchange="menuSelected(this)">
+					<option value="menu_toc" selected><?php echo $_local->gui->content;?></option>				
+					<option value="menu_pali_cannon"><?php echo $_local->gui->pali_canon;?></option>
+					<option value="menu_bookmark"><?php echo $_local->gui->mark;?></option>
+					<option value="menu_project"><?php echo $_local->gui->project;?></option>
+					<option value="menu_dict"><?php echo $_local->gui->dict;?></option>
+					<option value="menu_layout"><?php echo $_local->gui->layout;?></option>
+					<option value="menu_plugin"><?php echo $_local->gui->plugin;?></option>
+				</select>
+			</div>
+			<div id="menubartoolbar_New" style="display:none;">
+				<ul class="common-tab">
+					<li id="menu_toc_li" class="common-tab_li_act" onclick="menuSelected_2(menu_toc,'menu_toc_li','menu' )"><?php echo $_local->gui->content;?></li>
+					<li id="menu_bookmark_li" class="common-tab_li" onclick="menuSelected_2(menu_bookmark,'menu_bookmark_li','menu' )"><?php echo $_local->gui->mark;?></li>
+					<li id="menu_project_li" class="common-tab_li" onclick="menuSelected_2(menu_project,'menu_project_li','menu' )"><?php echo $_local->gui->project;?></li>
+					<li id="menu_dict_li" class="common-tab_li" onclick="menuSelected_2(menu_dict,'menu_dict_li','menu' )"><?php echo $_local->gui->dict;?></li>
+					<li id="menu_layout_li" class="common-tab_li" onclick="menuSelected_2(menu_layout,'menu_layout_li','menu' )"><?php echo $_local->gui->layout;?></li>
+					<li id="menu_plugin_li" class="common-tab_li" onclick="menuSelected_2(menu_plugin,'menu_plugin_li','menu' )"><?php echo $_local->gui->plugin;?></li>
+				</ul>
+			</div>			
+			
+			<div class='toc' id='leftmenuinnerinner'>	
+			<!-- toc begin -->
+<?php
+foreach($plugin_list as $info){
+	if(($info->attach=="left_top" || $info->attach=="left_mid" ||$info->attach=="left_bottom") && $info->enable=="true"){
+		echo "<div id=\"{$info->id}\">";
+		echo "<style>";
+		include "plugin/{$info->dir}/style.css";
+		echo "</style>";
+		echo "<script src=\"plugin/{$info->dir}/module_function.js\"></script>";
+		echo "<div class=\"left_panal_caption\">";
+		echo $info->caption;
+		echo "</div>";
+		echo "<div class=\"left_panal_content\">";
+		require "plugin/{$info->dir}/gui.html";
+		echo "</div>";
+		echo "</div>";
+	}
+}
+?>
+
+			
+
+			
+			<!-- dictionary begin -->
+				<style>
+				<?php include 'module/editor_dictionary/style.css';?>
+				</style>
+				<?php 
+				//require 'module/editor_dictionary/language/default.php';
+				//require "module/editor_dictionary/language/$currLanguage.php";
+				require 'module/editor_dictionary/gui.html';
+				?>
+
+			<!-- dictionary end -->
+			
+				<style>
+				<?php include 'module/editor_palicannon/style.css';?>
+				</style>
+				<?php 
+				//require 'module/editor_palicannon/language/default.php';
+				//require "module/editor_palicannon/language/$currLanguage.php";
+				//require 'module/editor_palicannon/gui.html';
+				?>
+						
+			</div>
+		
+		</div>
+		<!-- leftmenu end -->	
+		<!-- leftmenu background begin--> 
+		<div id='BV' class='blackscreen' onClick='setNaviVisibility()' style="z-index:10;"></div>
+		
+		<!--main edit begin-->
+	<div class='mainview' id='body_mainview'>
+		
+		<!--  逐词解析与译文编辑区 -->
+		<div id="sutta_text">
+			<div class="sutta_top_blank"></div>
+		</div>
+			
+		<!--  infomation panal -->	
+		<div id="id_info_panal">
+			<select id="id_info_window_select" name="menu" onchange="windowsSelected(this)">
+				<option value="view_vocabulary"><?php echo $_local->gui->vocabulary;?></option>
+				<option value="view_dict_all"><?php echo $_local->gui->inline_dictionary;?></option>
+				<option value="view_dict_curr"><?php echo $_local->gui->my_dictionary;?></option>
+				<option value="view_debug"><?php echo $_local->gui->debug;?></option>
+			</select>
+			<button type="button" onclick="setInfoPanalSize('hidden')"><?php echo $_local->gui->hidden;?></button>
+			<button type="button" onclick="setInfoPanalSize('min')"><?php echo $_local->gui->min;?></button>
+			<button type="button" onclick="setInfoPanalSize('half')"><?php echo $_local->gui->half;?></button>
+			<button type="button" onclick="setInfoPanalSize('max')"><?php echo $_local->gui->max;?></button>
+		
+			<div id='id_info_panal_inner'>
+				<div id="word_table">
+					<p><br/><?php echo $_local->gui->word_list;?><input id="button_wordlist_refresh" onclick="refreshWordList()" type="button" value="<?php echo $_local->gui->refresh;?>" /> </p>
+					<div id="word_table_inner"></div>
+				</div>
+
+				<div id="id_dict_match_result">
+					<p><br/><?php echo $_local->gui->dictionary_match_result;?></p>
+					<div id="id_dict_match_result_inner"></div>
+				</div>
+				
+				<div id="id_dict_curr_word">
+					<div id="id_dict_curr_word_inner"></div>
+				</div>		
+				
+				<div class="debugMsg" id="id_debug"><!--调试信息-->
+					<div id="id_debug_output"></div>
+				</div>
+			</div>
+	
+		</div>		
+
+		<!--  infomation panal end -->				
+	</div>
+		<!-- end-->
+	<!--class="main"-->
+	<div class="debug_info"><span id="debug"></span></div>
+	
+	<!--逐词解析编辑窗口-->
+	<div id="modifyDiv">
+		<div id="modifywin" style="">
+			<div>
+				<ul id="id_select_modyfy_type" class="common-tab">
+					<li id="detail_li" class="common-tab_li_act" onclick="select_modyfy_type('modify_detaile','detail_li')"><?php echo $_local->gui->detaile;?></li>
+					<li id="mark_li" class="common-tab_li" onclick="select_modyfy_type('modify_bookmark','mark_li')"><?php echo $_local->gui->mark;?></li>
+					<li id="note_li" class="common-tab_li" onclick="select_modyfy_type('modify_note','note_li')"><?php echo $_local->gui->note;?></li>
+					<li id="spell_li" class="common-tab_li" onclick="select_modyfy_type('modify_spell','spell_li')"><?php echo "高级";//.$_local->gui->source?></li>
+					
+				</ul>
+			</div>
+			<div id="modify_detaile">
+				<!-- 意思 -->
+				<div class="edit_detail_p">
+					<guide gid="studio_general_meaning">⑤</guide>
+					<span class="edit_detail_span"><?php echo $_local->gui->meaning;?>:</span>
+					<!--<button id="merge_button" onclick="copy_part_mean_to_mean()">
+						<svg class="icon" style="transform: rotate(315deg);height: 4em;width: 6em;">
+							<use xlink="http://www.w3.org/1999/xlink" href="../../node_modules/bootstrap-icons/bootstrap-icons.svg#arrow-90deg-right">
+						</svg>
+					</button>-->
+					<input type="text" id="input_meaning" class="input_bar" value="" name="in_meaning">
+					<div class="case_dropdown">
+						<svg class="edit_icon">
+							<use xmlns:xlink="http://www.w3.org/1999/xlink" xlink:href="svg/icon.svg#ic_more"></use>
+						</svg>
+						<div id="word_mdf_mean_dropdown" class="case_dropdown-content">
+						</div>
+					</div>
+				</div>
+				<!-- 拆分 -->
+				<div class="edit_detail_p">
+					<guide gid="studio_break_down">②</guide>
+					<span class="edit_detail_span"><?php echo $_local->gui->part;?>:</span>
+					<input type="text" id="input_org" class="input_bar" value="" name="in_org" onkeydown="match_key(this)" onkeyup="unicode_key(this) " onchange="input_org_change()">
+					<div class="case_dropdown">
+						<svg class="edit_icon">
+							<use xmlns:xlink="http://www.w3.org/1999/xlink" xlink:href="svg/icon.svg#ic_more"></use>
+						</svg>
+						<div id="word_mdf_parts_dropdown" class="case_dropdown-content">
+						</div>
+					</div>				
+				</div>
+				<!-- 拆分意思 -->
+
+				<div class="edit_detail_p" >
+					<guide gid="studio_part_meaning">④</guide>
+					<span class="edit_detail_span"><?php echo $_local->gui->partmeaning;?>:</span>
+					<div id="input_org_select" class="input_bar" style="width:80%; display:inline-flex;justify-content: space-between;"></div>
+					<input type="text" id="input_om" class="input_bar" value="" name="in_om" onchange='input_om_change(this)' onblur="input_org_switch('input_om','input_org_select')">
+				</div>
+				<!-- 格位 -->
+				<div class="edit_detail_p">
+					<guide gid="grammar_abbr">③</guide>
+					<span class="edit_detail_span"><?php echo $_local->gui->gramma;?>:</span>
+					<p><input type="text" id="input_case" value="" name="in_case" onblur="input_org_switch('input_case','input_select_case')" ></p>
+					<div id="input_select_case" class="input_bar" style="width:80%; display:inline-flex;">
+						<div style="display:inline-flex;">
+							<span></span>
+							<span></span>
+							<span></span>
+							<span></span>
+						</div>
+						<button style="margin-left:auto; display:none;" onclick="input_org_switch('input_select_case','input_case')">
+							<?php echo $_local->gui->source;?>
+						</button>
+					</div>				
+					<div class="case_dropdown">
+							<svg class="edit_icon">
+								<use xmlns:xlink="http://www.w3.org/1999/xlink" xlink:href="svg/icon.svg#ic_more"></use>
+							</svg>
+							<!--下拉菜单-->
+							<div id="word_mdf_case_dropdown" class="case_dropdown-content">
+							</div>
+						</div>								
+				</div>
+				<!-- 语基 -->
+				<div class="edit_detail_p">
+					<guide gid="studio_parent">①</guide>
+				<script>
+
+				</script>
+				<span class="thin_icon_btn" onclick="edit_show_prt_prt(this)">
+					<svg id="svg_parent2" class="icon">
+						<use xmlns:xlink="http://www.w3.org/1999/xlink" xlink:href="svg/icon.svg#ic_chevron_right_24px"></use>
+					</svg>
+				</span>
+					<span class="edit_detail_span"><?php echo $_local->gui->parent;?>:</span>
+					<input type="text" id="id_text_parent" class="input_bar" onkeydown="match_key(this)" onkeyup="unicode_key(this)" />
+					<div class="case_dropdown">
+						<svg class="edit_icon">
+							<use xmlns:xlink="http://www.w3.org/1999/xlink" xlink:href="svg/icon.svg#ic_more"></use>
+						</svg>
+						<div id="word_mdf_parent_dropdown" class="case_dropdown-content">
+						</div>
+					</div>				
+				</div>
+				<!-- 词源 -->
+				<div id="edit_detail_prt_prt" class="edit_detail_p" style="display:none;">
+					<span style="display:flex;">
+						<guide gid="studio_parent2">衍生原型</guide>
+						<div class="case_dropdown" style="padding-left: 0.5em;width: 6em;display: flex;">
+							<span style="padding-right: 4px;"></span>
+							<span id="parent_grammar" style="display: inline-block;min-width: 2em;border-radius: 4px;padding: 0 4px;background-color: #8484843d;"></span>
+							<input type="hidden" id="input_parent_grammar" />
+							<div id="word_mdf_prt_prt_grammar_dropdown" style="margin-top: 22px;" class="case_dropdown-content">
+								<a onclick="edit_parent_grammar_changed('')"><?php echo $_local->gui->empty; ?></a>
+								<a onclick="edit_parent_grammar_changed('.pp.')"><?php echo $_local->gui->pp; ?></a>
+								<a onclick="edit_parent_grammar_changed('.prp.')"><?php echo $_local->gui->prp; ?></a>				
+								<a onclick="edit_parent_grammar_changed('.fpp.')"><?php echo $_local->gui->fpp; ?></a>
+								<a onclick="edit_parent_grammar_changed('.caus.')"><?php echo $_local->gui->caus; ?></a>
+								<a onclick="edit_parent_grammar_changed('.pass.')"><?php echo $_local->gui->pass; ?></a>
+							</div>
+						</div>
+						<input type="text" id="id_text_prt_prt" class="input_bar" onkeydown="match_key(this)" onkeyup="unicode_key(this)" />
+						<div class="case_dropdown">
+							<svg class="edit_icon">
+								<use xmlns:xlink="http://www.w3.org/1999/xlink" xlink:href="svg/icon.svg#ic_more"></use>
+							</svg>
+							<div id="word_mdf_prt_prt_dropdown" class="case_dropdown-content">
+							</div>
+						</div>
+					</span>
+					<div>
+						<?php echo $_local->gui->relation; ?>
+						<imput type="hidden" id="id_relation_text" value="" />
+						<button onclick="rela_add_word()">➕</button>
+						<div id="relation_div">
+						</div>
+					</div>
+				</div>
+				
+			</div>
+			
+			<div id="modify_bookmark">
+				<ul id="id_book_mark_color_select" class="bookmark-tab">
+					<li id="id_bmc0" class="bookmarkcolorblock bookmarkcolor0" onclick="setBookMarkColor(this,'bmc0')">
+						<svg class="icon">
+								<use xlink:href="svg/icon.svg#ic_clear">×</use>
+						</svg>
+					</li>
+					<li id="id_bmc1" class="bookmarkcolorblock bookmarkcolor1" onclick="setBookMarkColor(this,'bmc1')">
+						<svg class="icon">
+								<use xlink:href="svg/icon.svg#ic_bookmark_on">1</use>
+						</svg>
+					</li>
+					<li id="id_bmc2" class="bookmarkcolorblock bookmarkcolor2" onclick="setBookMarkColor(this,'bmc2')">
+						<svg class="icon">
+								<use xlink:href="svg/icon.svg#ic_bookmark_on">2</use>
+						</svg>
+					</li>
+					<li id="id_bmc3" class="bookmarkcolorblock bookmarkcolor3" onclick="setBookMarkColor(this,'bmc3')">
+						<svg class="icon">
+								<use xlink:href="svg/icon.svg#ic_bookmark_on">3</use>
+						</svg>
+					</li>
+					<li id="id_bmc4" class="bookmarkcolorblock bookmarkcolor4" onclick="setBookMarkColor(this,'bmc4')">
+						<svg class="icon">
+								<use xlink:href="svg/icon.svg#ic_bookmark_on">4</use>
+						</svg>
+					</li>
+					<li id="id_bmc5" class="bookmarkcolorblock bookmarkcolor5" onclick="setBookMarkColor(this,'bmc5')">
+						<svg class="icon">
+								<use xlink:href="svg/icon.svg#ic_bookmark_on">5</use>
+						</svg>
+					</li>
+					<li id="id_bmca" class="bookmarkcolorblock bookmarkcolora" onclick="setBookMarkColor(this,'bmca')">
+						<svg class="icon">
+								<use xlink:href="svg/icon.svg#ic_bookmark_on">A</use>
+						</svg>
+					</li>
+				</ul>
+				<textarea id="id_text_bookmark" rows="6" col="28" style="margin-left: 3px; margin-right: 3px; width: 95%;"></textarea>
+			</div>
+			
+			<div id="modify_note">
+				<textarea id="id_text_note" rows="7" col="28" style="margin-left: 3px; margin-right: 3px; width: 95%;"></textarea>
+			</div>
+			
+			<div id="modify_spell">
+				<span id="id_text_id"></span><br/>
+				<?php echo $_local->gui->show;?><br />
+				<input type="input" id="id_text_pali" onkeydown="match_key(this)" onkeyup="unicode_key(this)" /><br/>
+				<?php echo $_local->gui->spell;?><br />
+				<input type="input" id="id_text_real"  onkeydown="match_key(this)" onkeyup="unicode_key(this)" /><br/>
+				<br/>
+			</div>
+			
+			<div id="modify_apply">
+			</div>
+		</div>
+	</div>
+	<!--逐词解析编辑窗口结束-->
+	
+	<!--译文编辑窗口-->
+	<div id="id_text_edit_form">
+		<div id="id_text_edit_caption"  class="dialog-title">
+			<div><button id="id_text_edit_cancel" type="button" onclick="edit_tran_cancal()"><?php echo $_local->gui->cancel;?></button></div>
+			<div><span id="id_text_edit_caption_text">
+				<?php echo $_local->gui->translation; ?></span></div>
+			<div id="id_text_edit_bottom">
+				<button id="id_text_edit_delete" type="button" onclick="edit_tran_delete()">
+					<?php echo $_local->gui->delete;?>
+				</button>
+			</div>
+			<div><button id="id_text_edit_save" type="button" onclick="edit_tran_save()"><?php echo $_local->gui->save;?></button></div>
+		</div>
+		<div id="id_text_edit_info">
+			<select id="id_heading_edit_level" >
+					<option value="0"><?php echo $_local->gui->normal;?></option>
+					<option value="1"><?php echo $_local->gui->heading_1;?></option>
+					<option value="2"><?php echo $_local->gui->heading_2;?></option>
+					<option value="3"><?php echo $_local->gui->heading_3;?></option>
+					<option value="4"><?php echo $_local->gui->heading_4;?></option>
+					<option value="5"><?php echo $_local->gui->heading_5;?></option>
+					<option value="6"><?php echo $_local->gui->heading_6;?></option>
+					<option value="7"><?php echo $_local->gui->heading_7;?></option>
+					<option value="8"><?php echo $_local->gui->heading_8;?></option>
+			</select>
+			<select id="id_text_edit_language">
+					<option value="pali">Pali</option>
+					<option value="en">English</option>
+					<option value="zh">简体中文</option>
+					<option value="tw">正體中文</option>
+			</select>
+			<span>
+				<?php echo $_local->gui->author;?>
+				<input type="input" id="id_text_edit_author" onkeydown="match_key(this)" onkeyup="unicode_key(this)"/>
+				<?php echo $_local->gui->smart_spell;?>
+				<input id="id_text_edit_area_smart_switch" type="checkbox" checked="">
+			</span>
+		</div>
+		<textarea id="id_text_edit_area" rows="10" width="100%" onkeydown="match_key(this)" onkeyup="unicode_key(this)">
+		</textarea>
+
+	</div>
+	
+	<!--  Tool bar on right side -->
+	<div id="right_tool_bar" >
+	
+		<div id="right_tool_bar_inner">
+<?php
+#头部右侧插件
+foreach($plugin_list as $info){
+	if($info->attach=="top_right" && $info->enable=="true"){
+		echo "<div id=\"{$info->id}\" >";
+		require "plugin/{$info->dir}/gui.html";
+		echo "</div>";
+			
+	}
+}
+?>			
+
+			<!--  三藏购物车 -->
+			<div id="pc_res_loader">
+				<div id="pc_res_load_button">
+					<button  id="id_open_editor_load_stream"  onclick="pc_loadStream(0)">
+						<svg class="button_icon"><use xmlns:xlink="http://www.w3.org/1999/xlink" xlink:href="svg/icon.svg#ic_cloud_download"></use></svg>
+					</button>
+					<button  id="id_cancel_stream" onclick="pc_cancelStream()"><?php //echo $_local->gui->cancel;?>
+						<svg class="button_icon"><use xmlns:xlink="http://www.w3.org/1999/xlink" xlink:href="svg/icon.svg#ic_note_add"></use></svg>
+					</button>
+					<button  id="pc_empty_download_list" onclick="pc_empty_download_list()"><?php //echo $module_gui_str['editor']['1045'];?>
+						<svg class="button_icon"><use xmlns:xlink="http://www.w3.org/1999/xlink" xlink:href="svg/icon.svg#ic_delete"></use></svg>
+					</button>
+					<button onclick="get_pc_res_download_list_from_cookie()"><?php //echo $_local->gui->refresh;?>
+						<svg class="button_icon"><use xmlns:xlink="http://www.w3.org/1999/xlink" xlink:href="svg/icon.svg#ic_autorenew"></use></svg>
+					</button>
+				</div>
+				
+				<div id="pc_res_list_div">
+				</div>
+
+				<div id="id_book_res_load_progress"></div>
+				<canvas id="book_res_load_progress_canvas" width="300" height="30"></canvas>
+			</div>
+		
+		</div>
+	</div>
+	<!--  Tool bar on right side end -->
+	
+	<div class="pop_win_full"><div id="pop_win_inner"></div></div>
+	
+	<!--  Term pop window-->
+	<div class="pop_win_full" id="term_win">
+		<div class="pop_win_inner">
+			<div class="win_title">
+				<div>
+					<button onclick="win_close('term_win')">
+						<svg class="button_icon" style="fill: var(--btn-hover-bg-color);">
+							<use xmlns:xlink="http://www.w3.org/1999/xlink" xlink:href="svg/icon.svg#ic_clear">
+							</use>
+						</svg>
+					</button>
+				</div>
+				<div>
+					<span>
+						<?php echo $_local->gui->relational_map; ?>
+					</span>
+				</div>
+				<div>
+					<button onclick="term_save()">
+					<svg class="button_icon" style="fill: var(--btn-hover-bg-color);">
+							<use xmlns:xlink="http://www.w3.org/1999/xlink" xlink:href="svg/icon.svg#ic_save">
+							</use>
+						</svg>
+					</button>
+				</div>
+			</div>
+			<div class="win_body" id="term_body_parent">
+				<div class="win_body_inner" id="term_body">
+				</div>
+			</div>
+		</div>
+	</div>
+
+	<!-- 逐词解析下拉菜单-->
+	<div class="display_off">
+		<div id="word_mean" style="max-width:22em;"></div>
+		<div id="word_parts" style="max-width:22em;"></div>
+		<div id="word_partmean" style="max-width:22em;"></div>
+		<div id="word_gramma" style="max-width:22em;"></div>
+	</div>
+
+	<!-- 逐词解析 词头工具栏-->
+	<div id="word_tool_bar_div">
+		<div id="word_tool_bar" class="word_head_bar"style="font-size: 70%">
+			<button  onclick="rela_link_click()">
+				<?php echo $_local->gui->link; ?>
+			</button>
+			<button  onclick="rela_link_click(false)">
+				<?php echo $_local->gui->cancel; ?>
+			</button>
+		</div>
+	</div>
+	
+	<div id="end_of_page" class="borderT textS textAc">
+	<?php echo $_local->gui->page_end; ?><br>
+	——wikipāḷi <?php echo $_local->gui->studio; ?>——
+	</div>
+	
+	<style>
+	#word_note_pop{
+	border-radius: 6px;
+    width: 95%;
+	max-height: calc(30vh);
+    position: fixed;
+    bottom: 10px;
+    left: 3em;
+	background-color: var(--drop-bg-color);
+	overflow-y: auto;
+	display:none;
+
+}
+
+
+	</style>
+	<script>
+	function close_word_note_pop(){
+		$("#word_note_pop").hide("500");
+	}
+	</script>
+	<div id="word_note_pop">
+		<div id="word_note_pop_title" style="background-color: var(--border-shadow);">
+			<span onclick="close_word_note_pop()" style="display: flex;">
+				<svg style="fill: var(--main-color);margin: 5px;height: 15px;width: 15px;"  t="1597905254064" class="icon" viewBox="0 0 1024 1024" version="1.1" xmlns="http://www.w3.org/2000/svg" p-id="2185" ><path d="M573.207 527.834l404.184-404.22a52.811 52.811 0 0 0 0-74.401l-2.217-2.217a52.836 52.836 0 0 0-74.413 0l-404.209 404.73-404.22-404.9a52.823 52.823 0 0 0-74.401 0l-2.217 2.217a51.915 51.915 0 0 0 0 74.414l404.22 404.377-404.22 404.22a52.823 52.823 0 0 0 0 74.402l2.217 2.217a52.811 52.811 0 0 0 74.401 0l404.22-404.22 404.22 404.22a52.823 52.823 0 0 0 74.414 0l2.217-2.217a52.811 52.811 0 0 0 0-74.401z m0 0" p-id="2186"></path>
+				</svg>
+			</span>
+		</div>
+		<div id="word_note_pop_content">
+		</div>
+	</div>
+</div>
+	
+	
+<script type="text/javascript"> 
+//侦测页面滚动	
+
+
+var scrollEventLock=false;
+var suttaDom = document.getElementById('sutta_text');
+ window.addEventListener('scroll',winScroll);
+ function winScroll(e){ 
+	 if(scrollEventLock){
+		console.log("scroll Event Lock");
+		return;
+	 }
+	 if(getElementHeight(suttaDom)<getWindowHeight()){
+		return;
+	 }
+	 var top = getElementViewTop(suttaDom);
+	 //console.log(Date() +"-"+top);
+	 //top < 0 ? fixedDom.classList.add("fixed") : fixedDom.classList.remove("fixed");
+	 if(top>-500){
+		scrollEventLock=true;
+		prev_page();
+		scrollEventLock=false;
+		//console.log("goto prev page");
+	 }
+	 if(getElementBottomOutsideHeight(suttaDom)<1500){
+		scrollEventLock=true;
+		next_page();
+		scrollEventLock=false;
+		//console.log("goto next page");
+	 }
+	//debugOutput( document.body.scrollTop);
+	//debugOutput("top:"+top+"; outside:"+getElementBottomOutsideHeight(suttaDom));
+	//debugOutput("scrollHeight="+suttaDom.scrollHeight+ ";  clientHeight="+suttaDom.clientHeight +";offsetHeight="+suttaDom.offsetHeight);
+ }
+ 
+ function getElementViewTop(element){
+     var actualTop = element.offsetTop;
+	var elementScrollTop=GetPageScroll().y;//document.body.scrollTop;
+     return actualTop-elementScrollTop;
+   } 
+function getElementBottomOutsideHeight(element){
+	var winHeight=getWindowHeight();//document.body.clientHeight;
+	var elementHeight=getElementHeight(element);//suttaDom.scrollHeight;
+	var elementTop=getElementViewTop(element);
+	return(elementHeight+elementTop-winHeight);
+}
+
+function getElementHeight(element){
+	var scrW, scrH; 
+	if(element.innerHeight && element.scrollMaxY) 
+	{	// Mozilla	
+		scrW = element.innerWidth + element.scrollMaxX;	
+		scrH = element.innerHeight + element.scrollMaxY; 
+	} 
+	else if(element.scrollHeight > element.offsetHeight)
+	{	// all but IE Mac	
+		scrW = element.scrollWidth;	
+		scrH = element.scrollHeight; 
+	} else if(element) 
+	{ // IE Mac	
+		scrW = element.offsetWidth;	
+		scrH = element.offsetHeight;
+	} 
+	return(scrH);
+}
+function getWindowHeight(){
+	var winW, winH; 
+	if(window.innerHeight) 
+	{ // all except IE	
+		winW = window.innerWidth; 
+		winH = window.innerHeight; 
+	} else if (document.documentElement && document.documentElement.clientHeight)
+	{	// IE 6 Strict Mode	
+		winW = document.documentElement.clientWidth;	 
+		winH = document.documentElement.clientHeight; 
+	} else if (document.body) { // other	
+		winW = document.body.clientWidth;	
+		winH = document.body.clientHeight; 
+	}  
+	return(winH);
+}
+//滚动条位置
+function GetPageScroll() 
+{ 
+	var pos=new Object();
+	var x, y; 
+	if(window.pageYOffset) 
+	{	// all except IE	
+		y = window.pageYOffset;	
+		x = window.pageXOffset; 
+	} else if(document.documentElement && document.documentElement.scrollTop) 
+	{	// IE 6 Strict	
+		y = document.documentElement.scrollTop;	
+		x = document.documentElement.scrollLeft; 
+	} else if(document.body) {	// all other IE	
+		y = document.body.scrollTop;	
+		x = document.body.scrollLeft;   
+	} 
+	pos.x=x;
+	pos.y=y;
+	return(pos);
+}
+
+
+var Dragging=function(validateHandler){
+ //参数为验证点击区域是否为可移动区域,如果是返回欲移动元素,负责返回null 
+var draggingObj=null;
+//dragging Dialog 
+var diffX=0;
+var diffY=0;
+function mouseHandler(e){
+	 switch(e.type){
+	 case 'mousedown':
+		draggingObj=validateHandler(e);
+		//验证是否为可点击移动区域 
+		if(draggingObj!=null){
+			diffX=e.clientX-draggingObj.offsetLeft;
+			diffY=e.clientY-draggingObj.offsetTop;
+		 }
+	 break;
+	 case 'mousemove':
+		 if(draggingObj){
+			 draggingObj.style.left=(e.clientX-diffX)+'px';
+			 draggingObj.style.top=(e.clientY-diffY)+'px';
+		 }
+		 break;
+	 case 'mouseup': 
+	 draggingObj =null;
+		 diffX=0;
+		 diffY=0;
+		 break;
+	 }
+}
+;
+ return {
+	 enable:function(){
+		 document.addEventListener('mousedown',mouseHandler);
+		 document.addEventListener('mousemove',mouseHandler);
+		 document.addEventListener('mouseup',mouseHandler);
+		}
+	, disable:function(){
+		 document.removeEventListener('mousedown',mouseHandler);
+		 document.removeEventListener('mousemove',mouseHandler);
+		 document.removeEventListener('mouseup',mouseHandler);
+		}
+	 }
+ }
+ 
+ function getDraggingDialog(e){
+try{
+	var target=e.target;
+	if(target && target.className){
+		while(target ){
+			if(target.className){
+				if(target.className.indexOf('dialog-title')==-1){
+					target=target.offsetParent;
+				}
+				else{
+					break;
+				}
+			}
+			else{
+				target=target.offsetParent;
+			}
+		}
+		
+		if(target!=null){
+			return target.offsetParent;
+		}
+		else{
+			return null;
+		}
+	}
+}
+catch(e){
+
+}
+ 
+}
+// Dragging(getDraggingDialog).enable();
+
+</script> 
+
+	<script language="javascript" src="module/editor/language/<?php echo $currLanguage; ?>.js"></script>
+	<script language="javascript" src="module/editor_palicannon/palicannon.js"></script>
+	<script language="javascript" src="module/editor_palicannon/language/<?php echo $currLanguage; ?>.js"></script>
+	<script language="javascript" src="module/editor_toc/module_function.js"></script>
+	<script language="javascript" src="module/editor_toc/language/<?php echo $currLanguage; ?>.js"></script>
+	<script language="javascript" src="module/editor_bookmark/module_function.js"></script>
+	<script language="javascript" src="module/editor_bookmark/language/<?php echo $currLanguage; ?>.js"></script>
+	<script language="javascript" src="module/editor_layout/module_function.js"></script>
+	<script language="javascript" src="module/editor_layout/language/<?php echo $currLanguage; ?>.js"></script>
+	<script language="javascript" src="module/editor_project/module_function.js"></script>
+	<script language="javascript" src="module/editor_project/language/<?php echo $currLanguage; ?>.js"></script>
+	<script language="javascript" src="module/editor_dictionary/module_function.js"></script>
+	<script language="javascript" src="module/editor_dictionary/language/<?php echo $currLanguage; ?>.js"></script>
+	<script language="javascript" src="module/editor_plugin/module_function.js"></script>
+	<script language="javascript" src="module/editor_plugin/language/<?php echo $currLanguage; ?>.js"></script>
+	<script>
+		guide_init();
+	</script>
+</body>
+
+</html>
+

+ 5730 - 0
public/app/studio/js/editor copy.js

@@ -0,0 +1,5730 @@
+var g_DictWordList = new Array();
+var g_DocWordMean = new Array();
+var g_dictList = new Array();
+var g_DictWordNew = new Object();
+var g_DictWordUpdataIndex = 0; //正在更新的记录在内存字典表中的索引号
+var g_InlineDictWordList = new Array();
+var g_CurrDictBuffer = null;
+var g_key_match_str = "";
+
+var myFormula = Array(); //用户词典里的格位公式
+
+var g_DictCount = 0;
+var g_currEditWord = -1; //当前正在编辑词的id
+var g_eCurrWord = null; //当前正在编辑词的element对象
+var g_currBookMarkColor = "0";
+var g_dictFindParentLevel = 0;
+var g_dictFindAllDone = false;
+
+var g_currAutoMatchDictType = "user";
+
+var g_caseSelect = new Array("", "", "", "");
+
+var gEditorTranslateEditBlockId = -1;
+var gEditorNoteEditBlockId = -1;
+var gEditorHeadingEditBlockId = -1;
+var gEditorNewHeadingBookId = "";
+var gEditorNewHeadingPar = "";
+var g_fileid = 0;
+var g_docid = "";
+
+var g_op = "";
+var g_book = "";
+var g_para = "";
+var g_channal = "";
+
+var gCurrModifyWindowParNo = -1;
+
+var gUserSetup;
+
+var mDictQueue = Array();
+
+var gNaviCurrPanalId = "";
+function setNaviVisibility(strObjId = "") {
+	var objNave = document.getElementById("leftmenuinner");
+	var objblack = document.getElementById("BV");
+	if (strObjId == "") {
+		objblack.style.display = "none";
+		objNave.className = "viewswitch_off";
+	} else {
+		$("#" + strObjId).show();
+		$("#" + strObjId)
+			.siblings()
+			.hide();
+		if (strObjId == gNaviCurrPanalId) {
+			if (objNave.className == "viewswitch_off") {
+				objblack.style.display = "block";
+				objNave.className = "viewswitch_on";
+			} else {
+				objblack.style.display = "none";
+				objNave.className = "viewswitch_off";
+			}
+		} else {
+			objblack.style.display = "block";
+			objNave.className = "viewswitch_on";
+		}
+	}
+	gNaviCurrPanalId = strObjId;
+}
+//选项卡函数
+function select_modyfy_type(itemname, idname) {
+	document.getElementById("modify_detaile").style.display = "none";
+	document.getElementById("modify_bookmark").style.display = "none";
+	document.getElementById("modify_note").style.display = "none";
+	document.getElementById("modify_spell").style.display = "none";
+	document.getElementById("modify_apply").style.display = "block";
+	document.getElementById("detail_li").className = "common-tab_li";
+	document.getElementById("mark_li").className = "common-tab_li";
+	document.getElementById("note_li").className = "common-tab_li";
+	document.getElementById("spell_li").className = "common-tab_li";
+
+	document.getElementById(itemname).style.display = "block";
+	document.getElementById(idname).className = " common-tab_li_act";
+}
+
+function menuSelected(obj) {
+	var objMenuItems = document.getElementsByClassName("menu");
+	for (var i = 0; i < objMenuItems.length; i++) {
+		objMenuItems[i].style.display = "none";
+	}
+	var objThisItem = document.getElementById(obj.value);
+	objThisItem.style.display = "block";
+}
+function menuSelected_2(obj, id_name, class_Name) {
+	var objMenuItems = document.getElementsByClassName(class_Name);
+	var id_array = new Array();
+	for (var i = 0; i < objMenuItems.length; i++) {
+		if (objMenuItems[i].id.split("_")[0] == obj.id.split("_")[0]) {
+			objMenuItems[i].style.display = "none";
+			id_array.push(objMenuItems[i].id);
+		}
+	}
+	var objThisItem = document.getElementById(obj.id);
+	objThisItem.style.display = "block";
+	for (menu_selected_i in id_array) {
+		document.getElementById(id_array[menu_selected_i] + "_li").className = "common-tab_li";
+	}
+	//document.getElementById('content_menu_li').className = " common-tab_li";
+	//document.getElementById('bookmark_menu_li').className = " common-tab_li";
+	refreshBookMark();
+	//document.getElementById('project_menu_li').className = " common-tab_li";
+	//document.getElementById('dictionary_menu_li').className = " common-tab_li";
+	//document.getElementById('layout_menu_li').className = " common-tab_li";
+	//document.getElementById('plugin_menu_li').className = " common-tab_li";
+
+	document.getElementById(id_name).className = " common-tab_li_act";
+}
+
+var editor_xmlhttp;
+var currMatchingDictNum = 0; //当前正在查询的字典索引
+function editor_getDictFileList() {
+	if (window.XMLHttpRequest) {
+		// code for IE7+, Firefox, Chrome, Opera, Safari
+		editor_xmlhttp = new XMLHttpRequest();
+	} else {
+		// code for IE6, IE5
+		editor_xmlhttp = new ActiveXObject("Microsoft.XMLHTTP");
+	}
+	var d = new Date();
+	editor_xmlhttp.onreadystatechange = editor_serverResponse;
+	editor_xmlhttp.open("GET", "./dict_get_list.php?t=" + d.getTime(), true);
+	editor_xmlhttp.send();
+}
+
+function editor_serverResponse() {
+	if (editor_xmlhttp.readyState == 4) {
+		// 4 = "loaded"
+		if (editor_xmlhttp.status == 200) {
+			// 200 = "OK"
+			var DictFileList = new Array();
+			eval(editor_xmlhttp.responseText);
+			for (x in local_dict_list) {
+				g_dictList.push(local_dict_list[x]);
+			}
+			var fileList = "";
+			for (x in local_dict_list) {
+				if (local_dict_list[x].used) {
+					fileList =
+						fileList +
+						"<p><input id='id_dict_file_list_" +
+						x +
+						"'  type='checkbox' style='width: 20px; height: 20px' checked onclick='dict_active(this," +
+						x +
+						")'/>" +
+						local_dict_list[x].filename +
+						"<span id='dict_result_" +
+						x +
+						"'></span></p>";
+				} else {
+					fileList =
+						fileList +
+						"<p><input id='id_dict_file_list_" +
+						x +
+						"'  type='checkbox' style='width: 20px; height: 20px' onclick='dict_active(this," +
+						x +
+						")'/>" +
+						local_dict_list[x].filename +
+						"<span id='dict_result_" +
+						x +
+						"'></span></p>";
+				}
+			}
+			document.getElementById("basic_dict_list").innerHTML = fileList;
+		} else {
+			document.getElementById("basic_dict_list") = "Problem retrieving data:" + xmlhttp.statusText;
+		}
+	}
+}
+
+function dict_active(obj, dictIndex) {
+	if (this.checked) {
+		g_dictList[dictIndex].used = true;
+	} else {
+		g_dictList[dictIndex].used = false;
+	}
+}
+
+function editor_windowsInit() {
+	renderChannelList();
+	$("see").on("click",function () {
+		var to = $(this).attr("to");
+		var link;
+		if (to) {
+			link = to;
+		} else {
+			link = $(this).text();
+		}
+		alert(link);
+		dict_search(link);
+	});
+
+	var strSertch = location.search;
+	if (strSertch.length > 0) {
+		strSertch = strSertch.substr(1);
+		let sertchList = strSertch.split("&");
+		for (const param of sertchList) {
+			let item = param.split("=");
+			switch (item[0]) {
+				case "filename":
+					g_filename = item[1];
+					break;
+				case "fileid":
+					g_docid = item[1];
+					break;
+				case "doc_id":
+					g_docid = item[1];
+					break;
+				case "op":
+					g_op = item[1];
+					break;
+				case "book":
+					g_book = item[1];
+					break;
+				case "para":
+				case "par":
+					g_para = item[1];
+					break;
+				case "channal":
+				case "channel":
+					g_channal = item[1];
+					break;
+			}
+		}
+	}
+	checkCookie();
+	setUseMode("Edit");
+
+	editor_getDictFileList();
+	document.getElementById("id_info_window_select").value = "view_dict_curr";
+	windowsSelected(document.getElementById("id_info_window_select"));
+	document.getElementById("id_info_panal").style.height = "0px";
+
+	palicannon_init();
+
+	//载入我的术语词典
+	term_get_my();
+	//载入全部术语词头
+	term_get_all_pali();
+	//载入格位公式
+	load_my_formula();
+
+	switch (g_op) {
+		case "new":
+			document.getElementById("wizard_div").style.display = "flex";
+			document.getElementById("id_editor_menu_select").value = "menu_pali_cannon";
+			menuSelected(document.getElementById("id_editor_menu_select"));
+			createXmlDoc();
+			var_dump(gLocal.gui.newproject);
+			break;
+		case "open":
+			if (g_docid.length > 0) {
+				editor_openProject(g_docid, "pcs");
+			} else {
+				alert(gLocal.gui.nofilename);
+			}
+			break;
+		case "opendb":
+			if (g_docid.length > 0) {
+				editor_openProject(g_docid, "db");
+			} else {
+				alert("no doc id");
+			}
+			break;
+		case "openchannal":
+		case "openchannel":
+			editor_openChannal(g_book, g_para, g_channal);
+			render_channel_info(g_channal);
+			break;
+		case "import":
+			if (g_filename.length > 0) {
+				editor_importOldVer(g_filename);
+				g_filename = g_filename.substring(0, g_filename.length - 4) + ".pcs";
+			} else {
+				alert(gLocal.gui.nofilename);
+			}
+			break;
+		case "loadlist":
+			editor_show_right_tool_bar(true);
+			//get_pc_res_download_list_from_cookie();
+			get_pc_res_download_list_from_string(gDownloadListString);
+			createXmlDoc();
+			pc_loadStream(0);
+			break;
+		default:
+			break;
+	}
+
+	ntf_init();
+}
+
+var g_dict_search_one_pass_done = null;
+var g_dict_search_one_dict_done = null;
+var g_dict_search_all_done = null;
+function editor_dict_all_done() {
+	document.getElementById("editor_doc_notify").innerHTML = gLocal.gui.all_done;
+	var t = setTimeout("document.getElementById('editor_doc_notify').innerHTML=''", 5000);
+}
+function editor_dict_one_dict_done(dictIndex) {
+	document.getElementById("editor_doc_notify").innerHTML =
+		gLocal.gui.round_1 +
+		(g_dictFindParentLevel + 1) +
+		gLocal.gui.round_2 +
+		"【" +
+		g_dictList[dictIndex].name +
+		"】" +
+		gLocal.gui.done;
+	if (dictIndex + 1 < g_dictList.length - 1) {
+		document.getElementById("editor_doc_notify").innerHTML +=
+			"【" + g_dictList[dictIndex + 1].name + "】" + gLocal.gui.checking;
+	}
+}
+
+
+
+function editor_dict_match() {
+	if (currMatchingDictNum < g_dictList.length) {
+		if (g_dictList[currMatchingDictNum].used) {
+			editor_loadDictFromDB(g_filename, g_dictList[currMatchingDictNum]);
+		} else {
+			currMatchingDictNum++;
+			editor_dict_match();
+		}
+		if (g_dictFindAllDone) {
+			dictMatchXMLDoc();
+		}
+	} else {
+		if (g_dictFindParentLevel < 3) {
+			if (g_dict_search_one_pass_done) {
+				g_dict_search_one_pass_done(g_dictFindParentLevel);
+			}
+			currMatchingDictNum = 0;
+			g_dictFindParentLevel++;
+
+			var arrBuffer = dict_get_search_list();
+			g_CurrDictBuffer = JSON.stringify(arrBuffer);
+			dict_mark_word_list_done();
+			document.getElementById("id_dict_match_inner").innerHTML +=
+				"finding parent level " + g_dictFindParentLevel + " buffer:" + arrBuffer.length + "<br>";
+			editor_dict_match();
+		} else {
+			document.getElementById("id_dict_match_inner").innerHTML +=
+				"Max Parent Level " + g_dictFindParentLevel + " Stop!<br>";
+			if (g_dict_search_all_done) {
+				g_dict_search_all_done();
+			}
+			dict_mark_word_list_done();
+			dictMatchXMLDoc();
+		}
+	}
+}
+
+function dict_push_word_to_download_list(word, level) {
+	for (var i in g_InlineDictWordList) {
+		if (g_InlineDictWordList[i].word == word) {
+			return;
+		}
+	}
+	var newWord = new Object();
+	newWord.word = word;
+	newWord.done = false;
+	newWord.level = level;
+	g_InlineDictWordList.push(newWord);
+}
+
+function dict_get_search_list() {
+	var output = new Array();
+	for (var i in g_InlineDictWordList) {
+		if (g_InlineDictWordList[i].done == false) {
+			output.push(g_InlineDictWordList[i]);
+		}
+	}
+
+	return output;
+}
+
+function dict_mark_word_list_done() {
+	for (var i in g_InlineDictWordList) {
+		g_InlineDictWordList[i].done = true;
+	}
+}
+
+function dict_refresh_word_download_list() {
+	var xDict = gXmlBookDataBody.getElementsByTagName("word");
+	for (var iword = 0; iword < xDict.length; iword++) {
+		var pali = com_getPaliReal(getNodeText(xDict[iword], "real"));
+		var part = getNodeText(xDict[iword], "org");
+		var type = getNodeText(xDict[iword], "case").split("#");
+		if (pali != "") {
+			dict_push_word_to_download_list(pali, 0);
+		}
+		if (part != "") {
+			var level = 1;
+			if (type == ".un.") {
+				level = 0;
+			}
+			var arrPart = part.split("+");
+			for (var ipart in arrPart) {
+				var onePart = com_getPaliReal(arrPart[ipart]);
+				if (onePart != "") {
+					dict_push_word_to_download_list(onePart, level);
+				}
+			}
+		}
+	}
+
+	for (var i in g_DictWordList) {
+		var pali = com_getPaliReal(g_DictWordList[i].Pali);
+		var wparent = com_getPaliReal(g_DictWordList[i].Parent);
+		var part = g_DictWordList[i].Factors;
+		var type = g_DictWordList[i].Type;
+		var level = 1;
+		if (type == ".un.") {
+			level = 0;
+		}
+		if (wparent != "") {
+			dict_push_word_to_download_list(wparent, level);
+		}
+		if (part != "") {
+			var arrPart = part.split("+");
+			for (var ipart in arrPart) {
+				var onePart = com_getPaliReal(arrPart[ipart]);
+				if (onePart != "") {
+					dict_push_word_to_download_list(onePart, level);
+				}
+			}
+		}
+	}
+}
+
+function dict_inid_ild_word_list() {
+	g_InlineDictWordList = new Array();
+	for (var i in g_DictWordList) {
+		var pali = g_DictWordList[i].Pali;
+		var wparent = g_DictWordList[i].Parent;
+		var part = g_DictWordList[i].Factors;
+		var type = g_DictWordList[i].Type;
+		var level = 1;
+		dict_push_word_to_download_list(g_DictWordList[i].Pali, 0);
+	}
+	dict_mark_word_list_done();
+}
+
+function getAllWordList() {
+	var output = new Array();
+	if (g_dictFindParentLevel == 0) {
+		var xDict = gXmlBookDataBody.getElementsByTagName("word");
+		for (iword = 0; iword < xDict.length; iword++) {
+			pali = getNodeText(xDict[iword], "real");
+			if (isPaliWord(pali)) {
+				output.push(pali);
+			}
+		}
+	} else {
+		var currLevel = g_dictFindParentLevel - 1;
+		for (i = 0; i < g_DictWordList.length; i++) {
+			if (g_DictWordList[i].ParentLevel == currLevel) {
+				if (g_DictWordList[i].Parent.length > 0 && g_DictWordList[i].Parent != g_DictWordList[i].Pali) {
+					var arrList = g_DictWordList[i].Parent.split("$");
+					var paliInParent = false;
+					for (x = 0; x < arrList.length; x++) {
+						if (arrList[x] == g_DictWordList[i].Pali) {
+							paliInParent = true;
+						}
+					}
+					if (paliInParent == false) {
+						output.push(g_DictWordList[i].Parent);
+					}
+				}
+				if (g_DictWordList[i].Factors.length > 0) {
+					arrList = g_DictWordList[i].Factors.split("+");
+					for (x = 0; x < arrList.length; x++) {
+						if (arrList[x] != g_DictWordList[i].Pali) {
+							output.push(arrList[x]);
+						}
+					}
+				}
+			}
+		}
+	}
+	if (output.length > 0) {
+		return output.join("$");
+	} else {
+		return null;
+	}
+}
+
+var editor_DictXmlHttp = null;
+function editor_loadDictFromDB(strFileName, dictName) {
+	var xmlText = "";
+
+	if (window.XMLHttpRequest) {
+		// code for IE7, Firefox, Opera, etc.
+		editor_DictXmlHttp = new XMLHttpRequest();
+	} else if (window.ActiveXObject) {
+		// code for IE6, IE5
+		editor_DictXmlHttp = new ActiveXObject("Microsoft.XMLHTTP");
+	}
+
+	if (editor_DictXmlHttp != null) {
+		var d = new Date();
+		var strLink =
+			"./dict_find.php?mode=xml&filename=" + strFileName + "&type=" + dictName.type + "&dict=" + dictName.filename;
+		editor_DictXmlHttp.onreadystatechange = editor_dict_serverResponse;
+		//var wordList=getAllWordList();
+
+		var wordList = g_CurrDictBuffer;
+
+		if (wordList != null) {
+			document.getElementById("id_dict_msg").innerHTML = "开始匹配字典" + dictName.name;
+			editor_DictXmlHttp.open("POST", "./dict_find2.php", true);
+			//editor_DictXmlHttp.send(dictName.type+"$"+dictName.filename+"$"+g_dictFindParentLevel+"$"+wordList);
+			editor_DictXmlHttp.setRequestHeader("Content-type", "application/x-www-form-urlencoded");
+			editor_DictXmlHttp.send(
+				"type=" +
+					dictName.type +
+					"&filename=" +
+					dictName.filename +
+					"&level=" +
+					g_dictFindParentLevel +
+					"&data=" +
+					wordList
+			);
+		} else {
+			g_dictFindAllDone = true;
+			document.getElementById("id_dict_match_inner").innerHTML += "all done!";
+			if (g_dict_search_all_done) {
+				g_dict_search_all_done();
+			}
+		}
+	} else {
+		alert("Your browser does not support XMLHTTP.");
+	}
+}
+
+function editor_dict_serverResponse() {
+	if (editor_DictXmlHttp.readyState == 4) {
+		// 4 = "loaded"
+		document.getElementById("id_dict_msg").innerHTML = "已经获取字典数据";
+		if (editor_DictXmlHttp.status == 200) {
+			// 200 = "OK"
+			var xmlText = editor_DictXmlHttp.responseText;
+
+			if (window.DOMParser) {
+				parser = new DOMParser();
+				xmlDict = parser.parseFromString(xmlText, "text/xml");
+			} // Internet Explorer
+			else {
+				xmlDict = new ActiveXObject("Microsoft.XMLDOM");
+				xmlDict.async = "false";
+				xmlDict.loadXML(xmlText);
+			}
+
+			if (xmlDict == null) {
+				alert("error:can not load dict.");
+				return;
+			}
+
+			document.getElementById("dict_result_" + currMatchingDictNum).innerHTML =
+				" : " + g_dictFindParentLevel + "-" + xmlDict.getElementsByTagName("word").length;
+			dictDataParse(xmlDict, currMatchingDictNum);
+			editor_addDictDataToXmlDoc(xmlDict);
+		} else {
+			document.getElementById("id_dict_match_inner").innerHTML =
+				"Problem retrieving data:" + editor_DictXmlHttp.statusText;
+		}
+		if (g_dict_search_one_dict_done) {
+			g_dict_search_one_dict_done(currMatchingDictNum);
+		}
+		currMatchingDictNum++;
+		editor_dict_match();
+	}
+}
+//添加字典数据到内联字典
+function editor_addDictDataToXmlDoc(xmlDictData) {
+	var xDict = xmlDictData.getElementsByTagName("word");
+	for (iword = 0; iword < xDict.length; iword++) {
+		gXmlBookDataInlineDict.appendChild(xDict[iword].cloneNode(true));
+	}
+}
+/*解析字典数据*/
+function dictDataParse(xmlDictData, dictID) {
+	document.getElementById("id_dict_msg").innerHTML = "正在解析字典数据";
+	var xDict = xmlDictData.getElementsByTagName("word");
+	var tOut = "";
+	var sDictPali = "";
+	var sDictId = "";
+	var sDictOrg = "";
+	var sDictMean = "";
+	var sDictCase = "";
+	for (iword = 0; iword < xDict.length; iword++) {
+		var objDictItem = new Object(); /*一个字典元素*/
+		objDictItem.Id = getNodeText(xDict[iword], "id");
+		objDictItem.Guid = getNodeText(xDict[iword], "guid");
+		objDictItem.Pali = getNodeText(xDict[iword], "pali");
+		objDictItem.Mean = getNodeText(xDict[iword], "mean");
+		objDictItem.Type = getNodeText(xDict[iword], "type");
+		objDictItem.Gramma = getNodeText(xDict[iword], "gramma");
+		objDictItem.Parent = getNodeText(xDict[iword], "parent");
+		objDictItem.Factors = getNodeText(xDict[iword], "factors");
+		objDictItem.PartId = getNodeText(xDict[iword], "part_id");
+		objDictItem.FactorMean = getNodeText(xDict[iword], "factormean");
+		objDictItem.Note = getNodeText(xDict[iword], "note");
+		objDictItem.Confer = getNodeText(xDict[iword], "confer");
+		objDictItem.Status = getNodeText(xDict[iword], "status");
+		objDictItem.Enable = getNodeText(xDict[iword], "enable");
+		objDictItem.Language = getNodeText(xDict[iword], "language");
+		objDictItem.dictname = getNodeText(xDict[iword], "dict_name");
+		//objDictItem.dictname=g_dictList[dictID].name;
+		objDictItem.dictType = g_dictList[dictID].type;
+		objDictItem.fileName = g_dictList[dictID].filename;
+		objDictItem.dictID = dictID;
+		objDictItem.ParentLevel = g_dictFindParentLevel;
+
+		//插入数据到内联字典索引表
+		var level = 1;
+		if (objDictItem.Type == ".un.") {
+			level = 0;
+		}
+		if (objDictItem.Parent != "") {
+			dict_push_word_to_download_list(objDictItem.Parent, level);
+		}
+		if (objDictItem.Factors != "") {
+			var arrPart = objDictItem.Factors.split("+");
+			for (var ipart in arrPart) {
+				dict_push_word_to_download_list(arrPart[ipart], level);
+			}
+		}
+
+		if (objDictItem.Case != "?" || objDictItem.Org != "?" || objDictItem.Mean != "?") {
+			pushNewDictItem(g_DictWordList, objDictItem);
+		}
+	}
+	//dict end
+}
+
+function pushNewDictItem(inArray, objNew) {
+	for (const iterator of inArray) {
+		if (iterator.Id == objNew.Id && iterator.dictID == objNew.dictID) {
+			return;
+		}
+	}
+	inArray.push(objNew);
+}
+
+function dictShowAsTable() {
+	var outData = "<table>";
+	for (var i = 0; i < g_DictWordList.length; i++) {
+		outData += "<tr class='dict_row" + g_DictWordList[i].ParentLevel + "'>";
+		outData = outData + "<td>" + g_DictWordList[i].dictname + "</td>";
+		outData = outData + "<td>" + g_DictWordList[i].Pali + "</td>";
+		outData = outData + "<td>" + g_DictWordList[i].Type + "</td>";
+		outData = outData + "<td>" + g_DictWordList[i].Gramma + "</td>";
+		outData = outData + "<td>" + g_DictWordList[i].Parent + "</td>";
+		outData = outData + "<td>" + g_DictWordList[i].Mean + "</td>";
+		outData = outData + "<td>" + g_DictWordList[i].Factors + "</td>";
+		outData = outData + "</tr>";
+	}
+	outData += "</table>";
+	return outData;
+}
+
+var g_CurrActiveRecorder = "new";
+function setCurrActiveRecorder(recorderName) {
+	g_CurrActiveRecorder = recorderName;
+}
+
+function updataCurrActiveRecorder(filder, value) {
+	if (filder == "all") {
+	} else {
+		document.getElementById(filder + "_" + g_CurrActiveRecorder).value = value;
+		mean_change(g_CurrActiveRecorder);
+	}
+}
+function addToCurrActiveRecorder(filder, value) {
+	if (filder == "all") {
+	} else {
+		meanString = document.getElementById(filder + "_" + g_CurrActiveRecorder).value;
+		meanList = meanString.split("$");
+		for (i in meanList) {
+			if (meanList[i] == value) {
+				return;
+			}
+		}
+		document.getElementById(filder + "_" + g_CurrActiveRecorder).value += "$" + value;
+		mean_change(g_CurrActiveRecorder);
+	}
+}
+
+function updataFactorMeanPrev(id, strNew) {
+	//if(strNew!=null){
+	//document.getElementById("id_factormean_prev_"+id).value=strNew;
+	//}
+}
+
+function factorMeanItemChange(id, iPos, count, obj) {
+	//alert(id+":"+iPos+":"+newMean);
+	newMean = obj.value;
+	var factorMeanPrevString = document.getElementById("id_factormean_prev_" + id).value;
+	currFactorMeanPrevList = factorMeanPrevString.split("+");
+	currFactorMeanPrevList[iPos] = newMean;
+	document.getElementById("id_factormean_prev_" + id).value = currFactorMeanPrevList.join("+");
+}
+
+function makeFactorBlock(factorStr, id) {
+	var output = "";
+	var factorList = factorStr.split("+");
+	var defualtFactorMeanList = new Array();
+
+	for (iFactor in factorList) {
+		arrFM = findAllMeanInDict(factorList[iFactor], 10);
+		if (arrFM.length == 0) {
+			arrFM[0] = "unkow";
+		}
+		output +=
+			"<select onclick=\"factorMeanItemChange('" +
+			id +
+			"','" +
+			iFactor +
+			"','" +
+			factorList.length +
+			"',this)\">";
+		defualtFactorMeanList.push(arrFM[0]);
+		for (iFM in arrFM) {
+			output += "<option value='" + arrFM[iFM] + "' >" + arrFM[iFM] + "</option>";
+		}
+		output += "</select>";
+		if (iFactor < factorList.length - 1) {
+			output += "+";
+		}
+	}
+	//updataFactorMeanPrev(id,defualtFactorMeanList.join("+"));
+	g_FactorMean = defualtFactorMeanList.join("+");
+	return output;
+}
+function factor_change(id) {
+	var factorString = document.getElementById("id_dict_user_factors_" + id).value;
+	document.getElementById("id_factor_block_" + id).innerHTML = makeFactorBlock(factorString, id);
+}
+
+function makeMeanBlock(meanStr, id) {
+	var output = "";
+	var meanList = meanStr.split("$");
+	for (i in meanList) {
+		output += '<div class="mean_cell">';
+		output += '<div class="button_shell">';
+		output += '<p class="mean_button" onclick="meanBlockMove(\'' + id + "'," + i + "," + (i - 1) + ')">«</p>';
+		output += "</div>";
+		output +=
+			'<p class="mean_inner" onclick="meanBlockMove(\'' + id + "'," + i + "," + 0 + ')">' + meanList[i] + "</p>";
+		output += '<div class="button_shell">';
+		output += '<p class="mean_button" onclick="meanBlockDelete(\'' + id + "'," + i + ')">x</p>';
+		output += "</div>";
+		output += "</div>";
+	}
+	return output;
+}
+
+function mean_change(id) {
+	var meanString = document.getElementById("id_dict_user_mean_" + id).value;
+	document.getElementById("id_mean_block_" + id).innerHTML = makeMeanBlock(meanString, id);
+}
+
+function meanBlockDelete(id, indexDelete) {
+	var meanString = document.getElementById("id_dict_user_mean_" + id).value;
+	var meanBlock = "";
+	var meanList = meanString.split("$");
+	meanList.splice(indexDelete, 1);
+	var newString = meanList.join("$");
+	document.getElementById("id_dict_user_mean_" + id).value = newString;
+	mean_change(id);
+}
+
+function meanBlockMove(id, moveFrom, moveTo) {
+	var meanString = document.getElementById("id_dict_user_mean_" + id).value;
+	var meanBlock = "";
+	var meanList = meanString.split("$");
+	if (moveTo < 0) {
+		moveTo = 0;
+	}
+	if (moveFrom == moveTo) {
+		return;
+	}
+	var temp = meanList[moveTo];
+	meanList[moveTo] = meanList[moveFrom];
+	for (i = moveFrom - 1; i > moveTo; i--) {
+		meanList[i + 1] = meanList[i];
+	}
+	meanList[moveTo + 1] = temp;
+	var newString = meanList.join("$");
+	/*
+	for(x in meanList){
+		newString+=meanList[x]+"$";
+	}
+	*/
+	document.getElementById("id_dict_user_mean_" + id).value = newString;
+	mean_change(id);
+}
+
+function addAutoMeanToFactorMean(id) {
+	document.getElementById("id_dict_user_fm_" + id).value = document.getElementById("id_factormean_prev_" + id).value;
+}
+
+//show current selected word in the word window to modify
+var g_WordTableCurrWord = "";
+function dictCurrWordShowAsTable(inCurrWord) {
+	g_WordTableCurrWord = inCurrWord;
+	g_CurrActiveRecorder = "new";
+	var outData = "";
+	var listParent = new Array();
+	var listFactors = new Array();
+	var listChildren = new Array();
+	outData += "<p class='word_parent'>" + gLocal.gui.parent + ":";
+	for (var i = 0; i < g_DictWordList.length; i++) {
+		if (g_DictWordList[i].Pali == inCurrWord) {
+			if (g_DictWordList[i].Parent.length > 0) {
+				var find = false;
+				for (x in listParent) {
+					if (listParent[x] == g_DictWordList[i].Parent) {
+						find = true;
+						break;
+					}
+				}
+				if (!find) {
+					listParent.push(g_DictWordList[i].Parent);
+				}
+			}
+			if (g_DictWordList[i].Factors.length > 0) {
+				arrFactors = g_DictWordList[i].Factors.split("+");
+				for (iFactors in arrFactors) {
+					var find = false;
+					for (x in listFactors) {
+						if (listFactors[x] == arrFactors[iFactors]) {
+							find = true;
+							break;
+						}
+					}
+					if (!find) {
+						listFactors.push(arrFactors[iFactors]);
+					}
+				}
+			}
+		}
+	}
+	for (x in listParent) {
+		outData += "<a onclick=\"showCurrWordTable('" + listParent[x] + "')\">" + listParent[x] + "</a> ";
+	}
+	for (x in listFactors) {
+		outData += "[<a onclick=\"showCurrWordTable('" + listFactors[x] + "')\">" + listFactors[x] + "</a>] ";
+	}
+	outData += "</p>";
+
+	outData = outData + '<p class="word_current">└' + inCurrWord + "</p>";
+
+	outData += "<p class='word_child'>└" + gLocal.gui.children + ": ";
+	for (var i = 0; i < g_DictWordList.length; i++) {
+		if (g_DictWordList[i].Parent == inCurrWord) {
+			if (g_DictWordList[i].Pali.length > 0) {
+				var find = false;
+				for (x in listChildren) {
+					if (listChildren[x] == g_DictWordList[i].Pali) {
+						find = true;
+						break;
+					}
+				}
+				if (!find) {
+					listChildren.push(g_DictWordList[i].Pali);
+				}
+			}
+		}
+	}
+	for (x in listChildren) {
+		outData += "<a onclick=\"showCurrWordTable('" + listChildren[x] + "')\">" + listChildren[x] + "</a> ";
+	}
+	outData += "</p>";
+
+	//get new recorder filder
+	var newRecorder = new Object();
+	newRecorder.Type = "";
+	newRecorder.Gramma = "";
+	newRecorder.Parent = "";
+	newRecorder.Mean = "";
+	newRecorder.Note = "";
+	newRecorder.Factors = "";
+	newRecorder.FactorMean = "";
+	newRecorder.Confer = "";
+	newRecorder.Status = "";
+	newRecorder.Lock = "";
+	newRecorder.Tag = "";
+	var newMeanList = new Array();
+	for (var i = 0; i < g_DictWordList.length; i++) {
+		if (g_DictWordList[i].Pali == inCurrWord) {
+			if (newRecorder.Type == "" && g_DictWordList[i].Type.length > 0) {
+				newRecorder.Type = g_DictWordList[i].Type;
+			}
+			if (newRecorder.Gramma == "" && g_DictWordList[i].Gramma.length > 0) {
+				newRecorder.Gramma = g_DictWordList[i].Gramma;
+			}
+			if (newRecorder.Parent == "" && g_DictWordList[i].Parent.length > 0) {
+				newRecorder.Parent = g_DictWordList[i].Parent;
+			}
+			if (g_DictWordList[i].Mean.length > 0) {
+				otherMean = g_DictWordList[i].Mean.split("$");
+				for (iMean in otherMean) {
+					pushNewToList(newMeanList, otherMean[iMean]);
+				}
+				newRecorder.Mean = newMeanList.join("$");
+			}
+			if (newRecorder.Factors == "" && g_DictWordList[i].Factors.length > 0) {
+				newRecorder.Factors = g_DictWordList[i].Factors;
+			}
+			if (newRecorder.FactorMean == "" && g_DictWordList[i].FactorMean.length > 0) {
+				newRecorder.FactorMean = g_DictWordList[i].FactorMean;
+			}
+			if (newRecorder.Note == "" && g_DictWordList[i].Note) {
+				if (g_DictWordList[i].Note.length > 0) {
+					newRecorder.Note = g_DictWordList[i].Note;
+				}
+			}
+		}
+	}
+	newMeanBlock = makeMeanBlock(newRecorder.Mean, "new");
+	newFactorBlock = makeFactorBlock(newRecorder.Factors, "new");
+	newFactorMeanPrevString = g_FactorMean;
+
+	outData += '<div class="word_edit">';
+	outData += '	<div class="word_edit_head">';
+	outData += '<input type="input" id="id_dict_user_id_new" hidden value="0" >';
+	outData += '<input type="input" id="id_dict_user_pali_new" hidden value="' + inCurrWord + '" >';
+	outData +=
+		'		<button type="button" onclick="editor_UserDictUpdata(\'new\',this)">' + gLocal.gui.newword + "</button>";
+	outData += "		" + gLocal.gui.wordtype + ":";
+	outData += '	<select name="type" id="id_dict_user_type_new" onchange="typeChange(this)">';
+	for (x in gLocal.type_str) {
+		if (gLocal.type_str[x].id == newRecorder.Type) {
+			outData =
+				outData +
+				'<option value="' +
+				gLocal.type_str[x].id +
+				'" selected>' +
+				gLocal.type_str[x].value +
+				"</option>";
+		} else {
+			outData =
+				outData + '<option value="' + gLocal.type_str[x].id + '">' + gLocal.type_str[x].value + "</option>";
+		}
+	}
+	outData = outData + "	</select>";
+	outData +=
+		"		" +
+		gLocal.gui.gramma +
+		':<input type="input" id="id_dict_user_gramma_new" size="12" value="' +
+		newRecorder.Gramma +
+		'" />';
+	outData +=
+		"		" +
+		gLocal.gui.parent +
+		':<input type="input" id="id_dict_user_parent_new" size="12" value="' +
+		newRecorder.Parent +
+		'" />';
+	outData +=
+		"		" +
+		gLocal.gui.part +
+		':<input type="input" id="id_dict_user_factors_new" size="' +
+		inCurrWord.length * 1.2 +
+		'" value="' +
+		newRecorder.Factors +
+		'" onkeyup="factor_change(\'new\')" />';
+	outData += "		" + gLocal.gui.partmeaning + ":" + newFactorBlock;
+	outData += '<button type="button" onclick="addAutoMeanToFactorMean(\'new\')" >▶</button>';
+	outData +=
+		'		<input type="input" id="id_dict_user_fm_new" size="' +
+		inCurrWord.length +
+		'" value="' +
+		newRecorder.FactorMean +
+		'" />';
+	outData += "	</div>";
+	outData += '	<div class="word_edit_mean">';
+	outData +=
+		"	" +
+		gLocal.gui.meaning +
+		':<input type="input" size=\'50\' id="id_dict_user_mean_new" value="' +
+		newRecorder.Mean +
+		"\" onkeyup=\"mean_change('new')\"/><div class='mean_block' id='id_mean_block_new'>" +
+		newMeanBlock +
+		"</div>";
+	outData += "	</div>";
+	outData += "<input type='text' id='id_factormean_prev_new' value='" + newFactorMeanPrevString + "' hidden />";
+	outData += '	<div class="word_edit_note">';
+	outData +=
+		gLocal.gui.note +
+		":<br /><textarea id=\"id_dict_user_note_new\" rows='3' cols='100'>" +
+		newRecorder.Note +
+		"</textarea>";
+	outData += "	</div>";
+	outData += "</div>";
+
+	//draw new
+
+	/*
+		outData=outData+"<h3>New:</h3>";
+		outData+="<table>";
+		
+		outData+="<tr class='dict_row_new'><td></td><td>Type</td><td>Parent</td><td>Meaning</td></tr>";
+		outData+="<tr class='dict_row_new'><td><input type='radio' name='dictupdata' checked onclick=\"setCurrActiveRecorder('new')\" /></td>"+
+		"<td><input type=\"input\" id=\"id_dict_user_id_new\" hidden value=\"0\" >"+
+		"<input type=\"input\" id=\"id_dict_user_pali_new\" hidden value=\""+inCurrWord+"\" >"+
+		"	<select name=\"type\" id=\"id_dict_user_type_new\" onchange=\"typeChange(this)\">";
+			for (x in gLocal.type_str){
+			if(gLocal.type_str[x].id==newRecorder.Type){
+				outData=outData+"<option value=\""+gLocal.type_str[x].id+"\" selected>"+gLocal.type_str[x].value+"</option>";
+			}
+			else{
+				outData=outData+"<option value=\""+gLocal.type_str[x].id+"\">"+gLocal.type_str[x].value+"</option>";
+			}
+		}
+		outData=outData+"	</select>";
+		outData=outData+"</td>";
+		outData=outData+"<td><input type=\"input\" id=\"id_dict_user_parent_new\" size=\"12\" value=\""+newRecorder.Parent+"\" /></td>";
+		outData=outData+"<td><input type=\"input\" size='50' id=\"id_dict_user_mean_new\" value=\""+newRecorder.Mean+"\" onkeyup=\"mean_change('new')\"/><div class='mean_block' id='id_mean_block_new'>"+newMeanBlock+"</div></td>";
+		outData+="</tr>";
+		outData+="<tr class='dict_row_new'><td></td><td>Gramma</td><td>Parts</td><td>Parts Meaning</td></tr>";
+		outData+="<tr class='dict_row_new'><td><button type=\"button\" onclick=\"editor_UserDictUpdata('new',this)\">Submit</button></td>";
+		outData+="<td><input type=\"input\" id=\"id_dict_user_gramma_new\" size=\"12\" value=\""+newRecorder.Gramma+"\" /></td>";
+		outData+="<td><input type=\"input\" id=\"id_dict_user_factors_new\" size=\""+inCurrWord.length*1.2+"\" value=\""+newRecorder.Factors+"\" onkeyup=\"factor_change('new')\" />";
+		outData+="<br /><input type='text' id='id_factormean_prev_new' value='"+newFactorMeanPrevString+"' hidden />";
+		outData+="<div class='factor' id='id_factor_block_new'>"+newFactorBlock+"</div>";
+		outData+="<button type=\"button\" onclick=\"addAutoMeanToFactorMean('new')\" >▶</button></td>";
+		outData+="<td><input type=\"input\" id=\"id_dict_user_fm_new\" size=\""+inCurrWord.length*1.5+"\" value=\""+newRecorder.FactorMean+"\" /></td></tr>";
+		outData+="<tr class='dict_row_new'><td>Note</td>";
+		outData+="<td colspan=3><textarea id=\"id_dict_user_note_new\" rows='3' cols='100'>"+newRecorder.Note+"</textarea></td></tr>"
+		
+		outData+="</table>";
+		
+	*/
+	// end of New
+
+	outData += "<h3>" + gLocal.gui.userdict + "</h3>";
+	outData += "<table>";
+
+	outData =
+		outData +
+		"<tr><th></th><th>" +
+		gLocal.gui.dictsouce +
+		"</th> <th>" +
+		gLocal.gui.wordtype +
+		"</th> <th>" +
+		gLocal.gui.gramma +
+		"</th> <th>" +
+		gLocal.gui.parent +
+		"</th> <th>" +
+		gLocal.gui.meaning +
+		"</th> <th>" +
+		gLocal.gui.part +
+		"</th> <th>" +
+		gLocal.gui.partmeaning +
+		"</th> <th></th> </tr>";
+	for (var i = 0; i < g_DictWordList.length; i++) {
+		if (g_DictWordList[i].Pali == inCurrWord) {
+			if (g_DictWordList[i].dictname == "用户字典") {
+				outData += "<tr class='dict_row" + g_DictWordList[i].ParentLevel + "'>";
+				outData +=
+					"<td><input type=radio name='dictupdata' onclick=\"setCurrActiveRecorder('" + i + "')\" /></td>";
+				outData = outData + "<td>" + g_DictWordList[i].dictname + "</td>";
+				outData =
+					outData +
+					'<td><input type="input" id="id_dict_user_id_' +
+					i +
+					'" hidden value="' +
+					g_DictWordList[i].Id +
+					'" >';
+				outData =
+					outData +
+					'<input type="input" id="id_dict_user_pali_' +
+					i +
+					'" hidden value="' +
+					g_DictWordList[i].Pali +
+					'" >';
+				outData = outData + '	<select name="type" id="id_dict_user_type_' + i + '" onchange="typeChange(this)">';
+				for (x in gLocal.type_str) {
+					if (gLocal.type_str[x].id == g_DictWordList[i].Type) {
+						outData =
+							outData +
+							'<option value="' +
+							gLocal.type_str[x].id +
+							'" selected>' +
+							gLocal.type_str[x].value +
+							"</option>";
+					} else {
+						outData =
+							outData +
+							'<option value="' +
+							gLocal.type_str[x].id +
+							'">' +
+							gLocal.type_str[x].value +
+							"</option>";
+					}
+				}
+				outData = outData + "	</select>";
+				outData = outData + "</td>";
+				outData =
+					outData +
+					'<td><input type="input" id="id_dict_user_gramma_' +
+					i +
+					'" size="12" value="' +
+					g_DictWordList[i].Gramma +
+					'" /></td>';
+				outData =
+					outData +
+					'<td><input type="input" id="id_dict_user_parent_' +
+					i +
+					'" size="12" value="' +
+					g_DictWordList[i].Parent +
+					'" />';
+				outData =
+					outData +
+					"<button type='button' onclick=\"showCurrWordTable('" +
+					g_DictWordList[i].Parent +
+					"')\">»</button></td>";
+				outData =
+					outData +
+					'<td><input type="input" size=\'50\' id="id_dict_user_mean_' +
+					i +
+					'" value="' +
+					g_DictWordList[i].Mean +
+					"\" onkeyup='mean_change(" +
+					i +
+					")' /><div class='mean_block' id='id_mean_block_" +
+					i +
+					"'></div></td>";
+				outData =
+					outData +
+					'<td><input type="input" id="id_dict_user_factors_' +
+					i +
+					'" size="15" value="' +
+					g_DictWordList[i].Factors +
+					'" /></td>';
+				outData =
+					outData +
+					'<td><input type="input" id="id_dict_user_fm_' +
+					i +
+					'" size="15" value="' +
+					g_DictWordList[i].FactorMean +
+					'" /></td>';
+				outData =
+					outData +
+					'<td><button type="button" onclick="editor_UserDictUpdata(\'' +
+					i +
+					"',this)\">Updata</button></td>";
+				outData = outData + "</tr>";
+				outData += "<tr ><td>Note</td>";
+				outData +=
+					'<td colspan=3><textarea id="id_dict_user_note_' +
+					i +
+					"\" rows='3' cols='100'>" +
+					g_DictWordList[i].Note +
+					"</textarea></td></tr>";
+			}
+		}
+	}
+
+	/*
+	for(var i=0;i<g_DictWordList.length;i++){
+		if(g_DictWordList[i].Pali==inCurrWord){
+			if(g_DictWordList[i].dictname=="用户字典"){
+				outData+="<tr ><td></td><td>Type</td><td>Parent</td><td>Meaning</td></tr>";
+				outData+="<tr ><td><input type='radio' name='dictupdata' checked onclick=\"setCurrActiveRecorder('new')\" /></td>"+
+				"<td><input type=\"input\" id=\"id_dict_user_id_new"+i+"\" hidden value=\"0\" >"+
+				"<input type=\"input\" id=\"id_dict_user_pali_"+i+"\" hidden value=\""+inCurrWord+"\" >"+
+				"	<select name=\"type\" id=\"id_dict_user_type_"+i+"\" onchange=\"typeChange(this)\">";
+					for (x in gLocal.type_str){
+					if(gLocal.type_str[x].id==g_DictWordList[i].Type){
+						outData=outData+"<option value=\""+gLocal.type_str[x].id+"\" selected>"+gLocal.type_str[x].value+"</option>";
+					}
+					else{
+						outData=outData+"<option value=\""+gLocal.type_str[x].id+"\">"+gLocal.type_str[x].value+"</option>";
+					}
+				}
+				outData=outData+"	</select>";
+				outData=outData+"</td>";
+				outData=outData+"<td><input type=\"input\" id=\"id_dict_user_parent_"+i+"\" size=\"12\" value=\""+g_DictWordList[i].Parent+"\" /></td>";
+				outData=outData+"<td><input type=\"input\" size='50' id=\"id_dict_user_mean_"+i+"\" value=\""+g_DictWordList[i].Mean+"\" onkeyup=\"mean_change('new')\"/><div class='mean_block' id='id_mean_block_new'>"+newMeanBlock+"</div></td>";
+				outData+="</tr>";
+				outData+="<tr ><td></td><td>Gramma</td><td>Parts</td><td>Parts Meaning</td></tr>";
+				outData+="<tr ><td><button type=\"button\" onclick=\"editor_UserDictUpdata('"+i+"',this)\">Submit</button></td>";
+				outData+="<td><input type=\"input\" id=\"id_dict_user_gramma_"+i+"\" size=\"12\" value=\""+g_DictWordList[i].Gramma+"\" /></td>";
+				outData+="<td><input type=\"input\" id=\"id_dict_user_factors_"+i+"\" size=\""+inCurrWord.length*1.2+"\" value=\""+g_DictWordList[i].Factors+"\" onkeyup=\"factor_change('new')\" />";
+				outData+="<br /><input type='text' id='id_factormean_prev_"+i+"' value='"+newFactorMeanPrevString+"' hidden />";
+				outData+="<div class='factor' id='id_factor_block_"+i+"'>"+newFactorBlock+"</div>";
+				outData+="<button type=\"button\" onclick=\"addAutoMeanToFactorMean('"+i+"')\" >▲</button></td>";
+				outData+="<td><input type=\"input\" id=\"id_dict_user_fm_"+i+"\" size=\""+inCurrWord.length*1.5+"\" value=\""+g_DictWordList[i].FactorMean+"\" /></td></tr>";
+				outData+="<tr ><td>Note</td>";
+				outData+="<td colspan=3><textarea id=\"id_dict_user_note_"+i+"\" rows='3' cols='100'>"+g_DictWordList[i].Note+"</textarea></td></tr>"
+			
+			}
+		}
+	}
+	*/
+	outData = outData + "</table>";
+
+	outData += "<h3>" + gLocal.gui.otherdict + "</h3>";
+	outData += "<table>";
+	outData =
+		outData +
+		"<tr><th></th><th>" +
+		gLocal.gui.dictsouce +
+		"</th> <th>" +
+		gLocal.gui.wordtype +
+		"</th> <th>" +
+		gLocal.gui.gramma +
+		"</th> <th>" +
+		gLocal.gui.parent +
+		"</th> <th>" +
+		gLocal.gui.meaning +
+		"</th> <th>" +
+		gLocal.gui.part +
+		"</th> <th>" +
+		gLocal.gui.partmeaning +
+		"</th> <th></th> </tr>";
+
+	for (var i = 0; i < g_DictWordList.length; i++) {
+		if (g_DictWordList[i].Pali == inCurrWord) {
+			if (g_DictWordList[i].dictname == "用户字典") {
+			} else {
+				outData += "<tr class='dict_row" + g_DictWordList[i].ParentLevel + "'>";
+				outData += '<td><button type="button" >▲</button></td>';
+				outData = outData + "<td>" + g_DictWordList[i].dictname + "</td>";
+				outData =
+					outData +
+					"<td><button type=\"button\" onclick=\"updataCurrActiveRecorder('id_dict_user_type','" +
+					g_DictWordList[i].Type +
+					'\')" >▲</button><span id="id_dict_user_gramma_' +
+					i +
+					'">' +
+					g_DictWordList[i].Type +
+					"</span></td>";
+				outData =
+					outData +
+					"<td><button type=\"button\" onclick=\"updataCurrActiveRecorder('id_dict_user_gramma','" +
+					g_DictWordList[i].Gramma +
+					"')\">▲</button>" +
+					g_DictWordList[i].Gramma +
+					"</td>";
+				outData =
+					outData +
+					"<td><button type=\"button\" onclick=\"updataCurrActiveRecorder('id_dict_user_parent','" +
+					g_DictWordList[i].Parent +
+					"')\">▲</button>" +
+					g_DictWordList[i].Parent;
+				outData =
+					outData +
+					"<button type='button' onclick=\"showCurrWordTable('" +
+					g_DictWordList[i].Parent +
+					"')\">»</button></td>";
+				outData =
+					outData +
+					"<td><button type=\"button\" onclick=\"updataCurrActiveRecorder('id_dict_user_mean','" +
+					g_DictWordList[i].Mean +
+					"')\">▲</button>" +
+					g_DictWordList[i].Mean +
+					"<br />" +
+					makeMeanLink(g_DictWordList[i].Mean) +
+					"</td>";
+				outData =
+					outData +
+					"<td><button type=\"button\" onclick=\"updataCurrActiveRecorder('id_dict_user_factors','" +
+					g_DictWordList[i].Factors +
+					"')\">▲</button>" +
+					g_DictWordList[i].Factors +
+					"</td>";
+				outData =
+					outData +
+					"<td><button type=\"button\" onclick=\"updataCurrActiveRecorder('id_dict_user_fm','" +
+					g_DictWordList[i].FactorMean +
+					"')\">▲</button>" +
+					g_DictWordList[i].FactorMean +
+					"</td>";
+				outData =
+					outData +
+					"<td><button type=\"button\" onclick=\"updataCurrActiveRecorder('all','" +
+					g_DictWordList[i].Type +
+					"')\">▲</button></td>";
+				outData = outData + "</tr>";
+			}
+		}
+	}
+	outData += "</table>";
+
+	//children
+	for (x in listChildren) {
+		wordChildren = listChildren[x];
+		outData += "<h4>" + wordChildren + "</h4> ";
+		outData += "<table>";
+		outData =
+			outData +
+			"<tr><th></th><th>" +
+			gLocal.gui.dictsouce +
+			"</th> <th>" +
+			gLocal.gui.wordtype +
+			"</th> <th>" +
+			gLocal.gui.gramma +
+			"</th> <th>" +
+			gLocal.gui.parent +
+			"</th> <th>" +
+			gLocal.gui.meaning +
+			"</th> <th>" +
+			gLocal.gui.part +
+			"</th> <th>" +
+			gLocal.gui.partmeaning +
+			"</th> <th></th> </tr>";
+		for (var i = 0; i < g_DictWordList.length; i++) {
+			if (g_DictWordList[i].Pali == wordChildren) {
+				{
+					outData += "<tr class='dict_row" + g_DictWordList[i].ParentLevel + "'>";
+					outData += '<td><button type="button" >▲</button></td>';
+					outData = outData + "<td>" + g_DictWordList[i].dictname + "</td>";
+					outData =
+						outData +
+						"<td><button type=\"button\" onclick=\"updataCurrActiveRecorder('id_dict_user_type','" +
+						g_DictWordList[i].Type +
+						'\')" >▲</button><span id="id_dict_user_gramma_' +
+						i +
+						'">' +
+						g_DictWordList[i].Type +
+						"</span></td>";
+					outData =
+						outData +
+						"<td><button type=\"button\" onclick=\"updataCurrActiveRecorder('id_dict_user_gramma','" +
+						g_DictWordList[i].Gramma +
+						"')\">▲</button>" +
+						g_DictWordList[i].Gramma +
+						"</td>";
+					outData =
+						outData +
+						"<td><button type=\"button\" onclick=\"updataCurrActiveRecorder('id_dict_user_parent','" +
+						g_DictWordList[i].Parent +
+						"')\">▲</button>" +
+						g_DictWordList[i].Parent;
+					outData =
+						outData +
+						"<button type='button' onclick=\"showCurrWordTable('" +
+						g_DictWordList[i].Parent +
+						"')\">»</button></td>";
+					outData =
+						outData +
+						"<td><button type=\"button\" onclick=\"updataCurrActiveRecorder('id_dict_user_mean','" +
+						g_DictWordList[i].Mean +
+						"')\">▲</button>" +
+						g_DictWordList[i].Mean +
+						"<br />" +
+						makeMeanLink(g_DictWordList[i].Mean) +
+						"</td>";
+					outData =
+						outData +
+						"<td><button type=\"button\" onclick=\"updataCurrActiveRecorder('id_dict_user_factors','" +
+						g_DictWordList[i].Factors +
+						"')\">▲</button>" +
+						g_DictWordList[i].Factors +
+						"</td>";
+					outData =
+						outData +
+						"<td><button type=\"button\" onclick=\"updataCurrActiveRecorder('id_dict_user_fm','" +
+						g_DictWordList[i].FactorMean +
+						"')\">▲</button>" +
+						g_DictWordList[i].FactorMean +
+						"</td>";
+					outData =
+						outData +
+						"<td><button type=\"button\" onclick=\"updataCurrActiveRecorder('all','" +
+						g_DictWordList[i].Type +
+						"')\">▲</button></td>";
+					outData = outData + "</tr>";
+				}
+			}
+		}
+		outData += "</table>";
+	}
+	return outData;
+}
+
+function makeMeanLink(inStr) {
+	var arrList = inStr.split("$");
+	var output = "";
+	for (i in arrList) {
+		output +=
+			"<a onclick=\"addToCurrActiveRecorder('id_dict_user_mean','" + arrList[i] + "')\">" + arrList[i] + "</a> ";
+	}
+	return output;
+}
+
+function showCurrWordTable(currWord) {
+	document.getElementById("id_dict_curr_word_inner").innerHTML = dictCurrWordShowAsTable(currWord);
+}
+
+//匹配字典数据到文档
+function dictMatchXMLDoc() {
+	document.getElementById("id_dict_msg").innerHTML = gLocal.gui.dict_match;
+	var docWordCounter = 0;
+	var matchedCounter = 0;
+
+	var xDocWords = gXmlBookDataBody.getElementsByTagName("word");
+	for (var iword = 0; iword < xDocWords.length; iword++) {
+		var sPaliWord = getNodeText(xDocWords[iword], "real");
+		var sFactorsWord = getNodeText(xDocWords[iword], "org");
+		var sMeanWord = getNodeText(xDocWords[iword], "mean");
+		var sTypeWord = getNodeText(xDocWords[iword], "case");
+
+		if (isPaliWord(sPaliWord)) {
+			docWordCounter++;
+
+			/*将这个词与字典匹配,*/
+			var iDict = 0;
+			//if(sMeanWord=="?"){
+			var thisWord = sPaliWord;
+			for (iDict = 0; iDict < g_DictWordList.length; iDict++) {
+				if (thisWord == g_DictWordList[iDict].Pali && g_DictWordList[iDict].ParentLevel == 0) {
+					if (sMeanWord == "?") {
+						setNodeText(xDocWords[iword], "bmc", "bmca");
+					}
+					modifyWordDetailByWordIndex(iword);
+					matchedCounter++;
+					break;
+				}
+			}
+			//}
+			/*
+			else{
+				if(isPaliWord(sPaliWord)){
+					matchedCounter++;
+				}
+			}*/
+		}
+	}
+
+	var progress = (matchedCounter * 100) / docWordCounter;
+
+	document.getElementById("id_dict_msg").innerHTML = gLocal.gui.match_end + Math.round(progress) + "%";
+}
+
+function dictGetFirstMean(strMean) {
+	var arrMean = strMean.split("$");
+	if (arrMean.length > 0) {
+		for (var i = 0; i < arrMean.length; i++) {
+			if (arrMean[i].length > 0) {
+				return arrMean[i];
+			} else {
+				return "";
+			}
+		}
+		return "";
+	} else {
+		return "";
+	}
+}
+//test word is pali word or not
+function isPaliWord(inWord) {
+	if (inWord.length < 2) {
+		return false;
+	}
+	if (inWord.match(/[x]/)) {
+		return false;
+	}
+	if (inWord.match(/[q]/)) {
+		return false;
+	}
+	if (inWord.match(/[w]/)) {
+		return false;
+	}
+	if (inWord.match(/[a-y]/)) {
+		return true;
+	} else {
+		return false;
+	}
+}
+
+function submenu_show_detail(obj) {
+	eParent = obj.parentNode;
+	//var y = obj.getElementsByTagName("svg");
+	var x = eParent.getElementsByTagName("div");
+	var o = obj.getElementsByTagName("svg");
+	if (x[0].style.maxHeight == "200em") {
+		x[0].style.maxHeight = "0px";
+		x[0].style.padding = "0px";
+		x[0].style.opacity = "0";
+		o[0].style.transform = "rotate(0deg)";
+	} else {
+		x[0].style.maxHeight = "200em";
+		x[0].style.padding = "10px";
+		x[0].style.opacity = "1";
+		o[0].style.transform = "rotate(45deg)";
+	}
+}
+function getAutoMaxWidth() {
+	var Width = $("#").width;
+}
+
+//在导航窗口中显示与此词匹配的字典中的词
+function showMatchedWordsInNavi(wordId) {
+	//var matchedCounter=0;
+	/*
+	var xDocWords = gXmlBookDataBody.getElementsByTagName("word");
+	
+	for(var iWord=0;iWord<xDocWords.length;iWord++){
+		if(getNodeText(xDocWords[iWord],"id")==wordId){
+			wIndex=iWord;
+		}
+	}
+	
+	var sPaliWord = getNodeText(xDocWords[wIndex],"real");
+	showWordInNavi(sPaliWord);
+	*/
+}
+
+//在导航窗口中显示与此词匹配的字典中的词
+function showWordInNavi(inWord) {
+	var matchedCounter = 0;
+	var outText = "";
+	var sLastDict = "";
+
+	var sPaliWord = inWord;
+	outText = outText + "<h3>" + sPaliWord + "</h3>";
+	/*将这个词与字典匹配,*/
+	var iDict = 0;
+	var thisWord = sPaliWord;
+	for (iDict = 0; iDict < g_DictWordList.length; iDict++) {
+		if (thisWord == g_DictWordList[iDict].Pali) {
+			if (g_DictWordList[iDict].dictname != sLastDict) {
+				outText = outText + "<dict><span>" + g_DictWordList[iDict].dictname + "<span></dict>";
+				sLastDict = g_DictWordList[iDict].dictname;
+			}
+			outText =
+				outText +
+				"<input type='input' id=\"id_dict_word_list_" +
+				iDict +
+				"\" size='5' value='" +
+				g_DictWordList[iDict].Type +
+				"' />";
+			outText = outText + "<input type='input' size='15' value='" + g_DictWordList[iDict].Gramma + "' /><br />";
+			outText =
+				outText +
+				"<input type='input' size='20' value='" +
+				g_DictWordList[iDict].Parent +
+				"' /> <button type='button' onclick=\"showWordInNavi('" +
+				g_DictWordList[iDict].Parent +
+				"')\">»</button><br />";
+			outText =
+				outText +
+				'<textarea name="dict_mean" rows="3" col="25" style="width:20em;">' +
+				g_DictWordList[iDict].Mean +
+				"</textarea>";
+			outText = outText + "<input type='input' size='20' value='" + g_DictWordList[iDict].Factors + "' /><br />";
+			outText =
+				outText + "<input type='input' size='20' value='" + g_DictWordList[iDict].FactorMean + "' /><br />";
+			outText =
+				outText +
+				"<button type='button' onclick=\"updataDict('" +
+				iDict +
+				"','userdict')\">Modify</button><br />";
+			/*
+			outText=outText+"<mean onclick=\"updataWordFromDict(this,'mean')\">"+g_DictWordList[iDict].Mean+"</mean>";				
+			outText=outText+"<org onclick=\"updataWordFromDict(this,'org')\">"+g_DictWordList[iDict].Factors+"</org>";
+			outText=outText+"<om onclick=\"updataWordFromDict(this,'om')\">"+g_DictWordList[iDict].FactorMean+"</om>";					
+			outText=outText+"<case onclick=\"updataWordFromDict(this,'case')\">"+g_DictWordList[iDict].Type+"#"+g_DictWordList[iDict].Gramma+"</case>";
+			*/
+			matchedCounter++;
+		}
+	}
+
+	document.getElementById("id_dict_matched").innerHTML = outText;
+	document.getElementById("id_dict_curr_word_inner").innerHTML = dictCurrWordShowAsTable(inWord);
+}
+
+function updataWordFromDict(obj, field) {
+	var xDocWords = gXmlBookDataBody.getElementsByTagName("word");
+	var strValue = obj.innerHTML;
+	var applayTo = document.getElementById("id_dict_applay_to").value;
+	var strCurrPali = getNodeText(xDocWords[g_currEditWord], "pali");
+	switch (applayTo) {
+		case "current":
+			setNodeText(xDocWords[g_currEditWord], field, strValue);
+			modifyWordDetailByWordIndex(g_currEditWord);
+			break;
+		case "sys":
+			for (i = 0; i < xDocWords.length; i++) {
+				var strPali = getNodeText(xDocWords[i], "pali");
+				if (strCurrPali == strPali) {
+					var isAuto = getNodeText(xDocWords[i], "bmc");
+					if (isAuto == "bmca") {
+						setNodeText(xDocWords[g_currEditWord], field, strValue);
+						modifyWordDetailByWordIndex(i);
+					}
+				}
+			}
+			break;
+		case "all":
+			for (i = 0; i < xDocWords.length; i++) {
+				var strPali = getNodeText(xDocWords[i], "pali");
+				if (strCurrPali == strPali) {
+					setNodeText(xDocWords[g_currEditWord], field, strValue);
+					modifyWordDetailByWordIndex(i);
+				}
+			}
+			break;
+	}
+}
+
+function setBookMarkColor(obj, strColor) {
+	var items = obj.parentNode.getElementsByTagName("li");
+	for (var i = 0; i < items.length; i++) {
+		items[i].style.outline = "0px solid";
+	}
+	if (g_currBookMarkColor == strColor || strColor == "bmc0") {
+		g_currBookMarkColor = "bmc0";
+	} else {
+		obj.style.outline = "0.2em solid";
+		g_currBookMarkColor = strColor;
+	}
+
+	//apply_button_lock();
+}
+
+function getBookMarkColor(idColor) {
+	var items = document.getElementById("id_book_mark_color_select").getElementsByTagName("li");
+	for (var i = 0; i < items.length; i++) {
+		items[i].style.outline = "0px solid";
+	}
+	if (document.getElementById("id_" + idColor)) {
+		document.getElementById("id_" + idColor).style.outline = "0.2em solid";
+	}
+}
+
+function match_key(obj) {
+	g_key_match_str = obj.value;
+	for (unicode_key_i in local_code_str) {
+		g_key_match_str = g_key_match_str.replace(/\+/g, "");
+		g_key_match_str = g_key_match_str.replace(/\[/g, "");
+		g_key_match_str = g_key_match_str.replace(/\]/g, "");
+	}
+}
+
+function unicode_key(obj) {
+	var strNew = obj.value;
+	var key_match_str = strNew;
+	var replace_judge = 0;
+	key_match_str = key_match_str.replace(/\+/g, "");
+	key_match_str = key_match_str.replace(/\[/g, "");
+	key_match_str = key_match_str.replace(/\]/g, "");
+	for (unicode_key_i in local_code_str) {
+		if (strNew.lastIndexOf(local_code_str[unicode_key_i].id) != -1) {
+			replace_judge = 1;
+			break;
+		}
+	}
+
+	if (
+		key_match_str != g_key_match_str &&
+		replace_judge == 1 &&
+		document.getElementById("input_smart_switch").checked
+	) {
+		for (unicode_key_i in local_code_str) {
+			strNew = strNew.replace(local_code_str[unicode_key_i].id, local_code_str[unicode_key_i].value);
+		}
+		obj.value = strNew;
+	}
+}
+function input_key(obj) {
+	var strNew = obj.value;
+	for (input_key_i in local_codestr_sinhala) {
+		strNew = strNew.replace(local_codestr_sinhala[input_key_i].id, local_codestr_sinhala[input_key_i].value);
+	}
+	for (input_key_i in local_codestr_sinhala) {
+		strNew = strNew.replace(local_codestr_sinhala[input_key_i].id, local_codestr_sinhala[input_key_i].value);
+	}
+
+	obj.value = strNew;
+}
+
+function getPaliReal(inStr) {
+	var paliletter = "abcdefghijklmnoprstuvyāīūṅñṭḍṇḷṃ";
+	var output = "";
+	inStr = inStr.toLowerCase();
+	inStr = inStr.replace(/ṁ/g, "ṃ");
+	inStr = inStr.replace(/ŋ/g, "ṃ");
+	for (x in inStr) {
+		if (paliletter.indexOf(inStr[x]) != -1) {
+			output += inStr[x];
+		}
+	}
+	return output;
+}
+
+function menu_file_convert() {
+	var xDocWords = gXmlBookDataBody.getElementsByTagName("word");
+	var outText = "";
+	var sLastDict = "";
+	for (var iword = 0; iword < xDocWords.length; iword++) {
+		var sPaliWord = getNodeText(xDocWords[iword], "pali");
+		var sPaliMean = getNodeText(xDocWords[iword], "mean");
+		/*var thisWord = sPaliWord.toLowerCase();
+		thisWord = thisWord.replace(/-/g,"");
+		thisWord = thisWord.replace(/'/g,"");
+		thisWord = thisWord.replace(/’/g,"");*/
+		setNodeText(xDocWords[iword], "real", getPaliReal(sPaliWord));
+		setNodeText(xDocWords[iword], "om", sPaliMean);
+	}
+	alert("convert " + xDocWords.length + "words.");
+}
+
+function editor_save() {
+	$.post(
+		"./dom_http.php",
+		{
+			fileid: g_docid,
+			xmldata: com_xmlToString(gXmlBookData),
+		},
+		function (data, status) {
+			ntf_show("Data: " + data + "\nStatus: " + status);
+		}
+	);
+}
+
+/*Parse csv data and fill this document*/
+function csvDataParse(xmlCSVData) {
+	document.getElementById("id_csv_msg_inner").innerHTML = "Parseing CSV Data";
+	var xCSV = xmlCSVData.getElementsByTagName("word");
+	var xDocWords = gXmlBookDataBody.getElementsByTagName("word");
+
+	for (iword = 0; iword < xCSV.length; iword++) {
+		setNodeText(xDocWords[iword], "pali", getNodeText(xCSV[iword], "pali"));
+		setNodeText(xDocWords[iword], "real", getNodeText(xCSV[iword], "real"));
+		setNodeText(xDocWords[iword], "id", getNodeText(xCSV[iword], "id"));
+		setNodeText(xDocWords[iword], "mean", getNodeText(xCSV[iword], "mean"));
+		setNodeText(xDocWords[iword], "org", getNodeText(xCSV[iword], "org"));
+		setNodeText(xDocWords[iword], "om", getNodeText(xCSV[iword], "om"));
+		setNodeText(xDocWords[iword], "case", getNodeText(xCSV[iword], "case"));
+		setNodeText(xDocWords[iword], "bmc", getNodeText(xCSV[iword], "bmc"));
+		setNodeText(xDocWords[iword], "bmt", getNodeText(xCSV[iword], "bmt"));
+		setNodeText(xDocWords[iword], "note", getNodeText(xCSV[iword], "note"));
+		setNodeText(xDocWords[iword], "lock", getNodeText(xCSV[iword], "lock"));
+		modifyWordDetailByWordIndex(iword);
+	}
+	document.getElementById("id_csv_msg_inner").innerHTML = "Updata Document Data OK!";
+}
+
+//import csv end
+
+//export cav begin
+function menu_file_export_ild() {
+	xmlHttp = null;
+	var_dump(gLocal.gui.loading);
+	if (window.XMLHttpRequest) {
+		// code for IE7, Firefox, Opera, etc.
+		xmlHttp = new XMLHttpRequest();
+		var_dump("test XMLHttpRequest<br/>");
+	} else if (window.ActiveXObject) {
+		// code for IE6, IE5
+		xmlHttp = new ActiveXObject("Microsoft.XMLHTTP");
+		var_dump("testing Microsoft.XMLHTTP<br/>");
+	}
+
+	if (xmlHttp != null) {
+		var_dump(gLocal.gui.ok);
+		xmlHttp.open("POST", "./export_ild.php", false);
+		var sendHead = "filename=" + g_filename + "#";
+		var dictDataString = "<dict>";
+		for (iDict in g_DictWordList) {
+			dictDataString += "<word>";
+			dictDataString += "<recorderId>" + g_DictWordList[iDict].Id + "</recorderId>";
+			dictDataString += "<pali>" + g_DictWordList[iDict].Pali + "</pali>";
+			dictDataString += "<mean>" + g_DictWordList[iDict].Mean + "</mean>";
+			dictDataString += "<type>" + g_DictWordList[iDict].Type + "</type>";
+			dictDataString += "<gramma>" + g_DictWordList[iDict].Gramma + "</gramma>";
+			dictDataString += "<parent>" + g_DictWordList[iDict].Parent + "</parent>";
+			dictDataString += "<factors>" + g_DictWordList[iDict].Factors + "</factors>";
+			dictDataString += "<factorMean>" + g_DictWordList[iDict].FactorMean + "</factorMean>";
+			dictDataString += "<note>" + g_DictWordList[iDict].Note + "</note>";
+			dictDataString += "<confer>" + g_DictWordList[iDict].Confer + "</confer>";
+			dictDataString += "<status>" + g_DictWordList[iDict].Status + "</status>";
+			dictDataString += "<delete>" + g_DictWordList[iDict].Delete + "</delete>";
+			dictDataString += "<dictname>" + g_DictWordList[iDict].dictname + "</dictname>";
+			dictDataString += "<dictType>" + g_DictWordList[iDict].dictType + "</dictType>";
+			dictDataString += "<fileName>" + g_DictWordList[iDict].fileName + "</fileName>";
+			dictDataString += "<parentLevel>" + g_DictWordList[iDict].ParentLevel + "</parentLevel>";
+			dictDataString += "</word>";
+		}
+		dictDataString += "</dict>";
+		xmlHttp.send(sendHead + dictDataString);
+		var_dump(xmlHttp.responseText);
+	} else {
+		alert("Your browser does not support XMLHTTP.");
+	}
+}
+
+function menu_file_tools_empty(opt) {
+	var xDocWords = gXmlBookDataBody.getElementsByTagName("word");
+	if (opt == "all") {
+		for (var iword = 0; iword < xDocWords.length; iword++) {
+			setNodeText(xDocWords[iword], "mean", "?");
+			setNodeText(xDocWords[iword], "org", "?");
+			setNodeText(xDocWords[iword], "om", "?");
+			setNodeText(xDocWords[iword], "case", "?");
+			setNodeText(xDocWords[iword], "parent","?");
+			setNodeText(xDocWords[iword], "bmc", "");
+			setNodeText(xDocWords[iword], "bmt", "");
+			setNodeText(xDocWords[iword], "note", "");
+			setNodeText(xDocWords[iword], "lock", "FALSE");
+			modifyWordDetailByWordIndex(iword);
+		}
+	} else if (opt == "mean") {
+		for (var iword = 0; iword < xDocWords.length; iword++) {
+			setNodeText(xDocWords[iword], "mean", "[]");
+			//setNodeText(xDocWords[iword],"org","?");
+			setNodeText(xDocWords[iword], "om", "");
+			//setNodeText(xDocWords[iword],"case","?");
+			//setNodeText(xDocWords[iword],"bmc","");
+			//setNodeText(xDocWords[iword],"bmt","");
+			//setNodeText(xDocWords[iword],"note","");
+			//setNodeText(xDocWords[iword],"lock","FALSE");
+			modifyWordDetailByWordIndex(iword);
+		}
+	} else if (opt == "case") {
+		for (var iword = 0; iword < xDocWords.length; iword++) {
+			//setNodeText(xDocWords[iword],"mean","[]");
+			//setNodeText(xDocWords[iword],"org","?");
+			//setNodeText(xDocWords[iword],"om","");
+			setNodeText(xDocWords[iword], "case", "?#?");
+			//setNodeText(xDocWords[iword],"bmc","");
+			//setNodeText(xDocWords[iword],"bmt","");
+			//setNodeText(xDocWords[iword],"note","");
+			//setNodeText(xDocWords[iword],"lock","FALSE");
+			modifyWordDetailByWordIndex(iword);
+		}
+	} else if (opt == "bookmark") {
+		for (var iword = 0; iword < xDocWords.length; iword++) {
+			//setNodeText(xDocWords[iword],"mean","[]");
+			//setNodeText(xDocWords[iword],"org","?");
+			//setNodeText(xDocWords[iword],"om","");
+			//setNodeText(xDocWords[iword],"case","?#?");
+			setNodeText(xDocWords[iword], "bmc", "");
+			setNodeText(xDocWords[iword], "bmt", "");
+			//setNodeText(xDocWords[iword],"note","");
+			//setNodeText(xDocWords[iword],"lock","FALSE");
+			modifyWordDetailByWordIndex(iword);
+		}
+	} else if (opt == "note") {
+		for (var iword = 0; iword < xDocWords.length; iword++) {
+			//setNodeText(xDocWords[iword],"mean","[]");
+			//setNodeText(xDocWords[iword],"org","?");
+			//setNodeText(xDocWords[iword],"om","");
+			//setNodeText(xDocWords[iword],"case","?#?");
+			//setNodeText(xDocWords[iword],"bmc","");
+			//setNodeText(xDocWords[iword],"bmt","");
+			setNodeText(xDocWords[iword], "note", "");
+			//setNodeText(xDocWords[iword],"lock","FALSE");
+			modifyWordDetailByWordIndex(iword);
+		}
+	}
+}
+
+function menu_file_tools_GUID() {
+	var xDocWords = gXmlBookDataBody.getElementsByTagName("word");
+
+	for (var iword = 0; iword < xDocWords.length; iword++) {
+		setNodeText(xDocWords[iword], "id", com_guid());
+		modifyWordDetailByWordIndex(iword);
+	}
+	var_dump("reset id finished!");
+}
+
+function showDebugPanal() {
+	var w = window.innerWidth || document.documentElement.clientWidth || document.body.clientWidth;
+
+	var h = window.innerHeight || document.documentElement.clientHeight || document.body.clientHeight;
+}
+
+function show_popup(strMsg) {
+	var p = window.createPopup();
+	var pbody = p.document.body;
+	pbody.style.backgroundColor = "red";
+	pbody.style.border = "solid black 1px";
+	pbody.innerHTML = strMsg + "<br />外面点击,即可关闭它!";
+	p.show(150, 150, 200, 50, document.body);
+}
+//Info_Panal顯示 begin
+
+function setInfoPanalVisibility() {
+	if (document.getElementById("id_info_panal").style.height == "0px") {
+		setInfoPanalSize("half");
+	} else {
+		setInfoPanalSize("hidden");
+	}
+}
+
+//Info_Panal顯示尺寸
+function setInfoPanalSize(inSize) {
+	var h = window.innerHeight || document.documentElement.clientHeight || document.body.clientHeight;
+
+	var objInfoPanal = document.getElementById("id_info_panal");
+	//show_popup(w);
+	//alert(objInfoPanal.style.right);
+
+	switch (inSize) {
+		case "hidden": //min
+			objInfoPanal.style.height = 0 + "px";
+			//setTimeout("hiddenPanal()",400);
+			break;
+
+		case "min": //min
+			objInfoPanal.style.height = 30 + "px";
+			break;
+		case "half": //half
+			objInfoPanal.style.height = h / 2 + "px";
+			break;
+		case "0.6": //2/3
+			objInfoPanal.style.height = h * 0.6 + "px";
+			break;
+		case "max": //max
+			objInfoPanal.style.height = h + "px";
+			break;
+	}
+}
+function hiddenPanal() {
+	document.getElementById("id_info_panal").style.display = "none";
+}
+
+//Info_Panal顯示 end
+
+function windowsSelected(obj) {
+	document.getElementById("word_table").style.display = "none";
+	document.getElementById("id_dict_match_result").style.display = "none";
+	document.getElementById("id_dict_curr_word").style.display = "none";
+	document.getElementById("id_debug").style.display = "none";
+	switch (obj.value) {
+		case "view_vocabulary":
+			document.getElementById("word_table").style.display = "block";
+			break;
+		case "view_dict_all":
+			document.getElementById("id_dict_match_result").style.display = "block";
+			break;
+		case "view_dict_curr":
+			document.getElementById("id_dict_curr_word").style.display = "block";
+			break;
+		case "view_debug":
+			document.getElementById("id_debug").style.display = "block";
+			break;
+	}
+}
+
+function userDictUpdata() {}
+
+var editor_DictUpdataXmlHttp = null;
+function editor_UserDictUpdata(recorderName, thisObj) {
+	thisObj.disabled = true;
+	var xmlText = "";
+
+	if (window.XMLHttpRequest) {
+		// code for IE7, Firefox, Opera, etc.
+		editor_DictUpdataXmlHttp = new XMLHttpRequest();
+	} else if (window.ActiveXObject) {
+		// code for IE6, IE5
+		editor_DictUpdataXmlHttp = new ActiveXObject("Microsoft.XMLHTTP");
+	}
+
+	if (editor_DictUpdataXmlHttp != null) {
+		var queryString = "<wordlist>";
+		queryString += "<word>";
+		var d_id = document.getElementById("id_dict_user_id_" + recorderName).value;
+		var d_pali = document.getElementById("id_dict_user_pali_" + recorderName).value;
+		var d_type = document.getElementById("id_dict_user_type_" + recorderName).value;
+		var d_gramma = document.getElementById("id_dict_user_gramma_" + recorderName).value;
+		var d_parent = document.getElementById("id_dict_user_parent_" + recorderName).value;
+		var d_mean = document.getElementById("id_dict_user_mean_" + recorderName).value;
+		var d_note = document.getElementById("id_dict_user_note_" + recorderName).value;
+		var d_factors = document.getElementById("id_dict_user_factors_" + recorderName).value;
+		var d_fm = document.getElementById("id_dict_user_fm_" + recorderName).value;
+		var d_confer = "";
+		var d_status = "";
+		var d_delete = "";
+		var d_tag = "";
+		var d_language = language_translation;
+		queryString += "<id>" + d_id + "</id>";
+		queryString += "<pali>" + d_pali + "</pali>";
+		queryString += "<type>" + d_type + "</type>";
+		queryString += "<gramma>" + d_gramma + "</gramma>";
+		queryString += "<parent>" + d_parent + "</parent>";
+		queryString += "<mean>" + d_mean + "</mean>";
+		queryString += "<note>" + d_note + "</note>";
+		queryString += "<factors>" + d_factors + "</factors>";
+		queryString += "<fm>" + d_fm + "</fm>";
+		queryString += "<confer>" + d_confer + "</confer>";
+		queryString += "<status>" + d_status + "</status>";
+		queryString += "<enable>TRUE</enable>";
+		queryString += "<language>" + d_language + "</language>";
+		queryString += "</word>";
+		queryString += "</wordlist>";
+		editor_DictUpdataXmlHttp.onreadystatechange = editor_UserDictUpdata_serverResponse;
+		debugOutput("updata user dict start.", 0);
+		editor_DictUpdataXmlHttp.open("POST", "./dict_updata_user.php", true);
+		editor_DictUpdataXmlHttp.send(queryString);
+
+		var i = recorderName;
+		g_DictWordUpdataIndex = i;
+		g_DictWordNew.Id = d_id;
+		g_DictWordNew.Pali = d_pali;
+		g_DictWordNew.Mean = d_mean;
+		g_DictWordNew.Type = d_type;
+		g_DictWordNew.Gramma = d_gramma;
+		g_DictWordNew.Parent = d_parent;
+		g_DictWordNew.Factors = d_factors;
+		g_DictWordNew.FactorMean = d_fm;
+		g_DictWordNew.Note = d_note;
+		g_DictWordNew.Confer = d_confer;
+		g_DictWordNew.Status = d_status;
+		g_DictWordNew.Delete = d_delete;
+		g_DictWordNew.dictname = "用户字典";
+		g_DictWordNew.dictType = "user";
+		g_DictWordNew.fileName = "user_default";
+		g_DictWordNew.ParentLevel = 0;
+	} else {
+		alert("Your browser does not support XMLHTTP.");
+	}
+}
+
+function editor_UserDictUpdata_serverResponse() {
+	if (editor_DictUpdataXmlHttp.readyState == 4) {
+		// 4 = "loaded"
+		debugOutput("server response.", 0);
+		if (editor_DictUpdataXmlHttp.status == 200) {
+			// 200 = "OK"
+			var serverText = editor_DictUpdataXmlHttp.responseText;
+			debugOutput(serverText, 0);
+			obj = JSON.parse(serverText);
+			if (obj.msg[0].server_return == -1) {
+				alert(obj.msg[0].server_error);
+			} else {
+				var_dump(gLocal.gui.userdict + obj.msg[0].server_op + " " + gLocal.gui.ok);
+				switch (obj.msg[0].server_op) {
+					case "insert":
+						g_DictWordNew.Id = obj.msg[0].server_return;
+						g_DictWordNew.dictID = 1; /*temp code*/
+						var inDict = false;
+						for (iFindNew in g_DictWordList) {
+							if (
+								g_DictWordList[iFindNew].Id == g_DictWordNew.Id &&
+								g_DictWordList[iFindNew].fileName == "user_default"
+							) {
+								inDict = true;
+								break;
+							}
+						}
+						//if recorder in list don't add to list
+						if (!inDict) {
+							g_DictWordList.unshift(g_DictWordNew);
+							editor_insertNewWordToInlineDict(g_DictWordNew);
+						}
+						break;
+					case "update":
+						g_DictWordList[g_DictWordUpdataIndex] = g_DictWordNew;
+						editor_updataInlineDict(g_DictWordUpdataIndex, g_DictWordNew);
+						break;
+				}
+			}
+			showCurrWordTable(g_WordTableCurrWord);
+			modifyWordDetailByWordId(g_currEditWord);
+		} else {
+			debugOutput(xmlhttp.statusText, 0);
+		}
+	}
+}
+
+function editor_insertNewWordToInlineDict(newWord) {
+	var xAllWord = gXmlBookDataInlineDict.getElementsByTagName("word");
+	var newElement = gXmlBookData.createElement("word");
+	setNodeText(newElement, "id", newWord.Id.toString());
+	setNodeText(newElement, "guid", newWord.Guid);
+	setNodeText(newElement, "pali", newWord.Pali);
+	setNodeText(newElement, "mean", newWord.Mean);
+	setNodeText(newElement, "type", newWord.Type);
+	setNodeText(newElement, "gramma", newWord.Gramma);
+	setNodeText(newElement, "parent", newWord.Parent);
+	setNodeText(newElement, "parentid", newWord.ParentId);
+	setNodeText(newElement, "factors", newWord.Factors);
+	setNodeText(newElement, "factorMean", newWord.FactorMean);
+	setNodeText(newElement, "partid", newWord.PartId);
+	setNodeText(newElement, "note", newWord.Note);
+	setNodeText(newElement, "confer", newWord.Confer);
+	setNodeText(newElement, "status", newWord.Status);
+	setNodeText(newElement, "enable", newWord.Enable);
+	setNodeText(newElement, "dictname", newWord.dictname);
+	setNodeText(newElement, "dictType", newWord.dictType);
+	setNodeText(newElement, "fileName", newWord.fileName);
+	setNodeText(newElement, "parentLevel", newWord.ParentLevel.toString());
+	if (xAllWord.length > 0) {
+		gXmlBookDataInlineDict.insertBefore(newElement, xAllWord[0]);
+	} else {
+		gXmlBookDataInlineDict.insertBefore(newElement, null);
+	}
+}
+
+function editor_updataInlineDict(iword, newWord) {
+	var xILD = gXmlBookDataInlineDict.getElementsByTagName("word");
+	if (xILD == null) {
+		return;
+	}
+
+	setNodeText(xILD[iword], "id", newWord.Id);
+	setNodeText(xILD[iword], "pali", newWord.Pali);
+	setNodeText(xILD[iword], "mean", newWord.Mean);
+	setNodeText(xILD[iword], "type", newWord.Type);
+	setNodeText(xILD[iword], "gramma", newWord.Gramma);
+	setNodeText(xILD[iword], "parent", newWord.Parent);
+	setNodeText(xILD[iword], "factors", newWord.Factors);
+	setNodeText(xILD[iword], "factorMean", newWord.FactorMean);
+	setNodeText(xILD[iword], "note", newWord.Note);
+	setNodeText(xILD[iword], "confer", newWord.Confer);
+	setNodeText(xILD[iword], "status", newWord.Status);
+	setNodeText(xILD[iword], "delete", newWord.Delete);
+	setNodeText(xILD[iword], "dictname", newWord.dictname);
+	setNodeText(xILD[iword], "dictType", newWord.dictType);
+	setNodeText(xILD[iword], "fileName", newWord.fileName);
+	setNodeText(xILD[iword], "parentLevel", newWord.ParentLevel);
+}
+/*
+上传到我的字典
+*/
+function upload_to_my_dict(wordIdFrom = -1, wordIdTo = -1) {
+	let words = new Array();
+
+	let queryString = "<wordlist>";
+	let x = gXmlBookDataBody.getElementsByTagName("word");
+	let iCount = 0;
+
+	let wordNode;
+	let d_pali;
+	let d_guid;
+	let d_mean;
+	let d_parent;
+	let d_parent_id;
+	let d_parentmean;
+	let d_factors;
+	let d_fm;
+	let d_part_id;
+	let d_case;
+	let d_note;
+	let formula;
+
+	for (let wordID = wordIdFrom; wordID <= wordIdTo; wordID++) {
+		if (wordIdFrom == -1) {
+			d_pali = doc_word("#" + g_currEditWord).val("real");
+			d_guid = "";
+			d_mean = $("#input_meaning").val();
+
+			d_parent = $("#id_text_parent").val();
+			d_parent_id = "";
+			d_parent = com_getPaliReal(d_parent);
+			d_parentmean = removeFormulaB(d_mean, "[", "]");
+			d_parentmean = removeFormulaB(d_parentmean, "{", "}");
+			//if(d_parentmean.substr())
+			d_factors = $("#input_org").val();
+			d_fm = $("#input_om").val(); //g_arrPartMean.join("+");
+			d_part_id = "";
+			d_case = $("#input_case").val();
+			d_note = $("#id_text_note").val();
+		} else {
+			wordNode = x[wordID];
+			d_pali = getNodeText(wordNode, "real");
+			d_guid = getNodeText(wordNode, "guid");
+			d_mean = getNodeText(wordNode, "mean");
+			d_parent = getNodeText(wordNode, "parent");
+			d_parent_id = getNodeText(wordNode, "parent_id");
+			d_parent = com_getPaliReal(d_parent);
+			d_parentmean = removeFormulaB(d_mean, "[", "]");
+			d_parentmean = removeFormulaB(d_parentmean, "{", "}");
+			d_factors = getNodeText(wordNode, "org");
+			d_fm = getNodeText(wordNode, "om");
+			d_part_id = getNodeText(wordNode, "part_id");
+			d_case = getNodeText(wordNode, "case");
+			d_note = getNodeText(wordNode, "note");
+		}
+		var iPos = d_case.indexOf("#");
+		if (iPos >= 0) {
+			var d_type = d_case.substring(0, iPos);
+			if (iPos < d_case.length - 1) {
+				var d_gramma = d_case.substring(iPos + 1);
+			} else {
+				var d_gramma = "";
+			}
+		} else {
+			var d_type = "";
+			var d_gramma = d_case;
+		}
+		formula = getFormulaFromMeaning(d_mean, "[", "]");
+
+		let d_language = get_string_lang(d_mean);
+
+		if (d_mean == "?") {
+			d_mean = "";
+		}
+		if (d_factors == "?") {
+			d_factors = "";
+		}
+		if (d_fm == "?" || d_fm == "[a]?") {
+			d_fm = "";
+		}
+
+		if ((d_type == ".un." || d_type == ".comp.") && d_mean == "" && d_factors == "" && d_fm == "") {
+		} else if (d_pali.length > 0 && !(d_mean == "" && d_factors == "" && d_fm == "" && d_case == "")) {
+			//parent gramma infomation
+			switch (d_type) {
+				case ".n.":
+					d_parentType = ".n:base.";
+					d_parentGramma = d_gramma.split("$")[0];
+					if (d_parentGramma == ".m." || d_parentGramma == ".f." || d_parentGramma == ".nt.") {
+						d_parentGramma = d_parentGramma;
+					} else {
+						d_parentGramma = "";
+					}
+					break;
+				case ".adj.":
+					d_parentType = ".ti:base.";
+					d_parentGramma = ".adj.";
+					break;
+				case ".ti.":
+					d_parentType = ".ti:base.";
+					d_parentGramma = "";
+					break;
+				case ".pron.":
+					d_parentType = ".pron:base.";
+					d_parentGramma = "";
+					break;
+				case ".num.":
+					d_parentType = ".num:base.";
+					d_parentGramma = "";
+					break;
+				case ".v.":
+					d_parentType = ".v:base.";
+					d_parentGramma = "";
+					break;
+				case ".v:ind.":
+					d_parentType = ".v:base.";
+					d_parentGramma = "";
+					break;
+				case ".ind.":
+					d_parentType = ".ind.";
+					d_parentGramma = "";
+					break;
+				default:
+					d_parentType = "";
+					d_parentGramma = "";
+					break;
+			}
+
+			let d_confer = "";
+			let d_status = "512";
+			let d_enable = "TRUE";
+
+			queryString += "<word>";
+			queryString += "<pali>" + d_pali + "</pali>";
+			queryString += "<guid>" + d_guid + "</guid>";
+			queryString += "<type>" + d_type + "</type>";
+			queryString += "<gramma>" + d_gramma + "</gramma>";
+			queryString += "<parent>" + d_parent + "</parent>";
+			queryString += "<parent_id>" + d_parent_id + "</parent_id>";
+			queryString += "<mean>" + d_mean + "</mean>";
+			queryString += "<note>" + d_note + "</note>";
+			queryString += "<factors>" + d_factors + "</factors>";
+			queryString += "<fm>" + d_fm + "</fm>";
+			queryString += "<part_id>" + d_part_id + "</part_id>";
+			queryString += "<confer>" + d_confer + "</confer>";
+			queryString += "<status>" + d_status + "</status>";
+			queryString += "<enable>" + d_enable + "</enable>";
+			queryString += "<language>" + d_language + "</language>";
+			queryString += "</word>";
+			words.push(
+				{
+					word:d_pali,
+					type:d_type,
+					grammar:d_gramma,
+					parent:d_parent,
+					mean:d_mean,
+					factors:d_factors,
+					factormean:d_fm,
+					language:d_language,
+				}
+			)
+			iCount++;
+
+			//formula
+			if (formula != "~") {
+				queryString += "<word>";
+				queryString += "<pali>_formula_</pali>";
+				queryString += "<guid></guid>";
+				queryString += "<type>" + d_type + "</type>";
+				queryString += "<gramma>" + d_gramma + "</gramma>";
+				queryString += "<parent></parent>";
+				queryString += "<parent_id></parent_id>";
+				queryString += "<mean>" + formula + "</mean>";
+				queryString += "<note></note>";
+				queryString += "<factors></factors>";
+				queryString += "<fm></fm>";
+				queryString += "<part_id></part_id>";
+				queryString += "<confer></confer>";
+				queryString += "<status>" + d_status + "</status>";
+				queryString += "<enable>" + d_enable + "</enable>";
+				queryString += "<language>" + d_language + "</language>";
+				queryString += "</word>";
+				iCount++;
+				words.push(
+					{
+						word:"_formula_",
+						type:d_type,
+						grammar:d_gramma,
+						parent:"",
+						mean:formula,
+						factors:"",
+						factormean:"",
+						language:d_language,
+					}
+				);
+			}
+
+			//parent recorder
+			if (d_parent.length > 0) {
+				queryString += "<word>";
+				queryString += "<pali>" + d_parent + "</pali>";
+				queryString += "<guid></guid>";
+				queryString += "<type>" + d_parentType + "</type>";
+				queryString += "<gramma>" + d_parentGramma + "</gramma>";
+				queryString += "<parent></parent>";
+				queryString += "<parent_id></parent_id>";
+				queryString += "<mean>" + d_parentmean + "</mean>";
+				queryString += "<note></note>";
+				let fc = d_factors.split("+");
+				if (fc.length > 0 && fc[fc.length - 1].slice(0, 1) == "[" && fc[fc.length - 1].slice(-1) == "]") {
+					fc.pop();
+				}
+				queryString += "<factors>" + fc.join("+") + "</factors>";
+				let fm = d_fm.split("+");
+				fm.length = fc.length;
+				queryString += "<fm>" + fm.join("+") + "</fm>";
+				queryString += "<part_id></part_id>";
+				queryString += "<confer></confer>";
+				queryString += "<status>512</status>";
+				queryString += "<enable>TRUE</enable>";
+				queryString += "<language>" + d_language + "</language>";
+				queryString += "</word>";
+				iCount++;
+				words.push(
+					{
+						word:d_parent,
+						type:d_parentType,
+						grammar:d_parentGramma,
+						parent:"",
+						mean:d_parentmean,
+						factors:fc.join("+"),
+						factormean:fm.join("+"),
+						language:d_language,
+					}
+				);
+			}
+
+			//part recorder
+			if (d_fm.slice(0, 3) != "[a]") {
+				let arrPart = d_factors.split("+");
+				let arrPartMean = d_fm.split("+");
+				if (arrPart.length > 0 && arrPart.length == arrPartMean.length) {
+					for (iPart in arrPart) {
+						if (arrPartMean[iPart] != "" && arrPartMean[iPart] != "?")
+							arrPart[iPart] = arrPart[iPart].replace("(", "");
+						arrPart[iPart] = arrPart[iPart].replace(")", "");
+						queryString += "<word>";
+						queryString += "<guid></guid>";
+						queryString += "<pali>" + arrPart[iPart] + "</pali>";
+						queryString += "<type>.part.</type>";
+						queryString += "<gramma></gramma>";
+						queryString += "<parent></parent>";
+						queryString += "<parent_id></parent_id>";
+						queryString += "<mean>" + arrPartMean[iPart] + "</mean>";
+						queryString += "<note></note>";
+						queryString += "<factors></factors>";
+						queryString += "<fm></fm>";
+						queryString += "<part_id></part_id>";
+						queryString += "<confer></confer>";
+						queryString += "<status>512</status>";
+						queryString += "<enable>TRUE</enable>";
+						queryString += "<language>" + d_language + "</language>";
+						queryString += "</word>";
+						iCount++;
+						words.push(
+							{
+								word:arrPart[iPart],
+								type:".part.",
+								grammar:"",
+								parent:"",
+								mean:arrPartMean[iPart],
+								factors:"",
+								factormean:"",
+								language:d_language,
+							}
+						);
+					}
+				}
+			}
+		}
+	}
+	queryString += "</wordlist>";
+
+	if (iCount == 0) {
+		ntf_show("no word update");
+	} else {
+		/*
+		$.post(
+			"./dict_updata_wbw.php", 
+			queryString, 
+			function (data, status) {
+				ntf_show("Data: " + data + "\nStatus: " + status);
+			}
+		);
+		*/
+		$.post(
+			"../api/user_dicts.php", 
+			{
+				op:'create',
+				view:'wbw',
+				data: JSON.stringify(words),
+			}, 
+			function (data, status) {
+				ntf_show("Data: " + data + "\nStatus: " + status);
+			}
+		);
+	}
+}
+
+// word by word dict updata
+var editor_wbwUpdataXmlHttp = null;
+function editor_WbwUpdata(wordIdFrom, wordIdTo) {
+	var xmlText = "";
+
+	if (window.XMLHttpRequest) {
+		// code for IE7, Firefox, Opera, etc.
+		editor_wbwUpdataXmlHttp = new XMLHttpRequest();
+	} else if (window.ActiveXObject) {
+		// code for IE6, IE5
+		editor_wbwUpdataXmlHttp = new ActiveXObject("Microsoft.XMLHTTP");
+	}
+
+	if (editor_wbwUpdataXmlHttp != null) {
+		let queryString = "<wordlist>";
+		let x = gXmlBookDataBody.getElementsByTagName("word");
+		let iCount = 0;
+		let d_language = language_translation;
+		for (let wordID = wordIdFrom; wordID <= wordIdTo; wordID++) {
+			let wordNode = x[wordID];
+			let d_pali = getNodeText(wordNode, "real");
+			let d_guid = getNodeText(wordNode, "guid");
+			let d_mean = getNodeText(wordNode, "mean");
+			let d_parent = getNodeText(wordNode, "parent");
+			let d_parent_id = getNodeText(wordNode, "parent_id");
+			d_parent = com_getPaliReal(d_parent);
+			let d_parentmean = removeFormulaB(d_mean, "[", "]");
+			d_parentmean = removeFormulaB(d_parentmean, "{", "}");
+			let formula = getFormulaFromMeaning(d_mean);
+			let d_factors = getNodeText(wordNode, "org");
+			let d_fm = getNodeText(wordNode, "om");
+			let d_part_id = getNodeText(wordNode, "part_id");
+			let d_case = getNodeText(wordNode, "case");
+			let d_note = getNodeText(wordNode, "note");
+
+			if (d_pali.length > 0 && !(d_mean == "?" && d_factors == "?" && d_fm == "?" && d_case == "?")) {
+				let iPos = d_case.indexOf("#");
+				if (iPos >= 0) {
+					let d_type = d_case.substring(0, iPos);
+					if (iPos < d_case.length - 1) {
+						let d_gramma = d_case.substring(iPos + 1);
+					} else {
+						let d_gramma = "";
+					}
+				} else {
+					let d_type = "";
+					let d_gramma = d_case;
+				}
+
+				//parent gramma infomation
+				switch (d_type) {
+					case ".n.":
+						d_parentType = ".n:base.";
+						d_parentGramma = d_gramma.split("$")[0];
+						if (d_parentGramma == ".m." || d_parentGramma == ".f." || d_parentGramma == ".nt.") {
+							d_parentGramma = d_parentGramma;
+						} else {
+							d_parentGramma = "";
+						}
+						break;
+					case ".adj.":
+						d_parentType = ".adj:base.";
+						d_parentGramma = "";
+						break;
+					case ".ti.":
+						d_parentType = ".ti:base.";
+						d_parentGramma = "";
+						break;
+					case ".pron.":
+						d_parentType = ".pron:base.";
+						d_parentGramma = "";
+						break;
+					case ".num.":
+						d_parentType = ".num:base.";
+						d_parentGramma = "";
+						break;
+					case ".v.":
+						d_parentType = ".v:base.";
+						d_parentGramma = "";
+						break;
+					case ".ind.":
+						d_parentType = ".ind.";
+						d_parentGramma = "";
+						break;
+					default:
+						d_parentType = "";
+						d_parentGramma = "";
+						break;
+				}
+
+				let d_confer = "";
+				let d_status = "512";
+				let d_enable = "TRUE";
+
+				queryString += "<word>";
+				queryString += "<pali>" + d_pali + "</pali>";
+				queryString += "<guid>" + d_guid + "</guid>";
+				queryString += "<type>" + d_type + "</type>";
+				queryString += "<gramma>" + d_gramma + "</gramma>";
+				queryString += "<parent>" + d_parent + "</parent>";
+				queryString += "<parent_id>" + d_parent_id + "</parent_id>";
+				queryString += "<mean>" + d_mean + "</mean>";
+				queryString += "<note>" + d_note + "</note>";
+				queryString += "<factors>" + d_factors + "</factors>";
+				queryString += "<fm>" + d_fm + "</fm>";
+				queryString += "<part_id>" + d_part_id + "</part_id>";
+				queryString += "<confer>" + d_confer + "</confer>";
+				queryString += "<status>" + d_status + "</status>";
+				queryString += "<enable>" + d_enable + "</enable>";
+				queryString += "<language>" + d_language + "</language>";
+				queryString += "</word>";
+				iCount++;
+
+				//formula
+				queryString += "<word>";
+				queryString += "<pali>_formula_</pali>";
+				queryString += "<guid></guid>";
+				queryString += "<type>" + d_type + "</type>";
+				queryString += "<gramma>" + d_gramma + "</gramma>";
+				queryString += "<parent></parent>";
+				queryString += "<parent_id></parent_id>";
+				queryString += "<mean>" + formula + "</mean>";
+				queryString += "<note></note>";
+				queryString += "<factors></factors>";
+				queryString += "<fm></fm>";
+				queryString += "<part_id></part_id>";
+				queryString += "<confer></confer>";
+				queryString += "<status>" + d_status + "</status>";
+				queryString += "<enable>" + d_enable + "</enable>";
+				queryString += "<language>" + d_language + "</language>";
+				queryString += "</word>";
+				iCount++;
+
+				//parent recorder
+				if (d_parent.length > 0) {
+					queryString += "<word>";
+					queryString += "<pali>" + d_parent + "</pali>";
+					queryString += "<guid></guid>";
+					queryString += "<type>" + d_parentType + "</type>";
+					queryString += "<gramma>" + d_parentGramma + "</gramma>";
+					queryString += "<parent></parent>";
+					queryString += "<parent_id></parent_id>";
+					queryString += "<mean>" + d_parentmean + "</mean>";
+					queryString += "<note></note>";
+					queryString += "<factors></factors>";
+					queryString += "<fm></fm>";
+					queryString += "<part_id></part_id>";
+					queryString += "<confer></confer>";
+					queryString += "<status>512</status>";
+					queryString += "<enable>TRUE</enable>";
+					queryString += "<language>" + d_language + "</language>";
+					queryString += "</word>";
+					iCount++;
+				}
+
+				//part recorder
+				arrPart = d_factors.split("+");
+				arrPartMean = d_fm.split("+");
+				if (arrPart.length > 0 && arrPart.length == arrPartMean.length) {
+					for (iPart in arrPart) {
+						if (arrPartMean[iPart] != "?" && arrPartMean[iPart] != "" && arrPartMean[iPart] != "") {
+							arrPart[iPart] = arrPart[iPart].replace("(", "");
+							arrPart[iPart] = arrPart[iPart].replace(")", "");
+							queryString += "<word>";
+							queryString += "<guid></guid>";
+							queryString += "<pali>" + arrPart[iPart] + "</pali>";
+							queryString += "<type>.part.</type>";
+							queryString += "<gramma></gramma>";
+							queryString += "<parent></parent>";
+							queryString += "<parent_id></parent_id>";
+							queryString += "<mean>" + arrPartMean[iPart] + "</mean>";
+							queryString += "<note></note>";
+							queryString += "<factors></factors>";
+							queryString += "<fm></fm>";
+							queryString += "<part_id></part_id>";
+							queryString += "<confer></confer>";
+							queryString += "<status>512</status>";
+							queryString += "<enable>TRUE</enable>";
+							queryString += "<language>" + d_language + "</language>";
+							queryString += "</word>";
+							iCount++;
+						}
+					}
+				}
+			}
+		}
+		queryString += "</wordlist>";
+		if (iCount > 0) {
+			editor_wbwUpdataXmlHttp.onreadystatechange = editor_wbwDictUpdata_serverResponse;
+			console.log("updata user dict start.", 0);
+			editor_wbwUpdataXmlHttp.open("POST", "./dict_updata_wbw.php", true);
+			editor_wbwUpdataXmlHttp.send(queryString);
+		} else {
+			console.log("no user dicttionary data need updata.", 0);
+		}
+	} else {
+		alert("Your browser does not support XMLHTTP.");
+	}
+}
+
+function editor_wbwDictUpdata_serverResponse() {
+	if (editor_wbwUpdataXmlHttp.readyState == 4) {
+		// 4 = "loaded"
+		debugOutput("server response.", 0);
+		if (editor_wbwUpdataXmlHttp.status == 200) {
+			// 200 = "OK"
+			let serverText = editor_wbwUpdataXmlHttp.responseText;
+			var_dump(serverText);
+			debugOutput(serverText, 0);
+		} else {
+			debugOutput(xmlhttp.statusText, 0);
+		}
+	}
+}
+
+function uploadAllWordData() {
+	let x = gXmlBookDataBody.getElementsByTagName("word");
+	if (x.length > 0) {
+		editor_WbwUpdata(0, x.length - 1);
+	} else {
+	}
+}
+function renderCaseSelect(type, case1, case2, case3, unique_id, padding_width) {
+	eCaseTable = document.getElementById("input_select_case");
+	eCaseItems = eCaseTable.getElementsByTagName("span");
+
+	if (type) {
+		strTypeSelect =
+			'<div id="id_case_dropdown_0_' +
+			unique_id +
+			'" class="case_dropdown gramma_selector" style=\'min-width: unset;padding-right: ' +
+			padding_width +
+			"em;'>";
+		strTypeSelect +=
+			"<p class=\"case_dropbtn cell\" style='line-height: 1.2em;'>" + getLocalGrammaStr(type) + "</p>";
+	} else {
+		strTypeSelect =
+			'<div id="id_case_dropdown_0_' +
+			unique_id +
+			'" class="case_dropdown gramma_selector" style=\'min-width: unset;padding-right: ' +
+			padding_width +
+			"em;'>";
+		strTypeSelect += "<p class=\"case_dropbtn  cell\" style='line-height: 1.2em;'>?</p>";
+	}
+	strTypeSelect += '<div class="case_dropdown-content">';
+
+	for (iType = 0; iType < gLocal.type_str.length; iType++) {
+		strTypeSelect +=
+			"<a onclick=\"caseChanged(0,'" +
+			gLocal.type_str[iType].id +
+			"')\">" +
+			gLocal.type_str[iType].value +
+			"</a>";
+	}
+	strTypeSelect += "</div>";
+	strTypeSelect += "</div>";
+	eCaseItems[0].innerHTML = strTypeSelect;
+
+	for (iType = 0; iType < gramma_str.length; iType++) {
+		if (gramma_str[iType].id == type) {
+			var strTypeSelect = "";
+			gramma = gramma_str[iType].a;
+			if (gramma.length > 0) {
+				items = gramma.split("$");
+				if (case1 == "") {
+					case1 = items[0];
+					g_caseSelect[1] = case1;
+				}
+				strTypeSelect =
+					'<div id="id_case_dropdown_1_' +
+					unique_id +
+					'" class="case_dropdown gramma_selector" style=\'min-width: unset;padding-right: ' +
+					padding_width +
+					"em;'><p class=\"case_dropbtn\" style='line-height: 1.2em;'>" +
+					getLocalGrammaStr(case1) +
+					"</p>";
+				strTypeSelect += '<div class="case_dropdown-content">';
+				for (iItem = 0; iItem < items.length; iItem++) {
+					strTypeSelect +=
+						"<a onclick=\"caseChanged(1,'" +
+						items[iItem] +
+						"')\">" +
+						getLocalGrammaStr(items[iItem]) +
+						"</a>";
+				}
+				strTypeSelect += "</div>";
+				strTypeSelect += "</div>";
+			} else {
+				g_caseSelect[1] = "";
+			}
+			eCaseItems[1].innerHTML = strTypeSelect;
+
+			strTypeSelect = "";
+			gramma = gramma_str[iType].b;
+			if (gramma.length > 0) {
+				items = gramma.split("$");
+				if (case2 == "") {
+					case2 = items[0];
+					g_caseSelect[2] = case2;
+				}
+				strTypeSelect =
+					'<div id="id_case_dropdown_2_' +
+					unique_id +
+					'" class="case_dropdown gramma_selector" style=\'min-width: unset;padding-right: ' +
+					padding_width +
+					"em;'><p class=\"case_dropbtn\" style='line-height: 1.2em;'>" +
+					getLocalGrammaStr(case2) +
+					"</p>";
+				strTypeSelect += '<div class="case_dropdown-content">';
+				for (iItem = 0; iItem < items.length; iItem++) {
+					strTypeSelect +=
+						"<a onclick=\"caseChanged(2,'" +
+						items[iItem] +
+						"')\">" +
+						getLocalGrammaStr(items[iItem]) +
+						"</a>";
+				}
+				strTypeSelect += "</div>";
+				strTypeSelect += "</div>";
+			} else {
+				g_caseSelect[2] = "";
+			}
+			eCaseItems[2].innerHTML = strTypeSelect;
+
+			strTypeSelect = "";
+			gramma = gramma_str[iType].c;
+			if (gramma.length > 0) {
+				items = gramma.split("$");
+				if (case3 == "") {
+					case3 = items[0];
+					g_caseSelect[3] = case3;
+				}
+				strTypeSelect =
+					'<div id="id_case_dropdown_3_' +
+					unique_id +
+					'" class="case_dropdown gramma_selector" style=\'min-width: unset;padding-right: ' +
+					padding_width +
+					"em;'><p class=\"case_dropbtn\" style='line-height: 1.2em;'>" +
+					getLocalGrammaStr(case3) +
+					"</p>";
+				strTypeSelect += '<div class="case_dropdown-content">';
+				for (iItem = 0; iItem < items.length; iItem++) {
+					strTypeSelect +=
+						"<a onclick=\"caseChanged(3,'" +
+						items[iItem] +
+						"')\">" +
+						getLocalGrammaStr(items[iItem]) +
+						"</a>";
+				}
+				strTypeSelect += "</div>";
+				strTypeSelect += "</div>";
+			} else {
+				g_caseSelect[3] = "";
+			}
+			eCaseItems[3].innerHTML = strTypeSelect;
+		}
+	}
+}
+
+function refreshCaseSelect() {
+	renderCaseSelect(g_caseSelect[0], g_caseSelect[1], g_caseSelect[2], g_caseSelect[3], "wbw", 1);
+	var newCaseString = g_caseSelect[0] + "#";
+	if (g_caseSelect[1].length > 0) {
+		newCaseString += g_caseSelect[1];
+	}
+	if (g_caseSelect[2].length > 0) {
+		newCaseString += "$" + g_caseSelect[2];
+	}
+	if (g_caseSelect[3].length > 0) {
+		newCaseString += "$" + g_caseSelect[3];
+	}
+	document.getElementById("input_case").value = newCaseString;
+	rela_refresh(g_currEditWord);
+}
+
+function caseChanged(index, newValue) {
+	g_caseSelect[index] = newValue;
+	refreshCaseSelect();
+	refreshPartMeaningSelect();
+}
+
+function removeFormula_B(inStr) {
+	pos = 0;
+	copy = true;
+	var output = "";
+	for (i = 0; i < inStr.length; i++) {
+		if (inStr[i] == "{" || inStr[i] == "[") {
+			copy = false;
+		}
+		if (copy) {
+			output += inStr[i];
+		}
+		if (inStr[i] == "}" || inStr[i] == "]") {
+			copy = true;
+		}
+	}
+	return output;
+}
+function removeFormula(inStr) {
+	if (inStr.indexOf("[") >= 0) {
+		return inStr;
+	}
+	pos = 0;
+	copy = true;
+	var output = "";
+	for (i = 0; i < inStr.length; i++) {
+		if (inStr[i] == "{") {
+			copy = false;
+		}
+		if (copy) {
+			output += inStr[i];
+		}
+		if (inStr[i] == "}") {
+			copy = true;
+		}
+	}
+	return output;
+}
+
+//移除字符串中的格位公式
+//input:[zzz]xxx[yyy]
+//output:xxx
+function removeFormulaB(inStr, sBegin, sEnd) {
+	pos = 0;
+	copy = true;
+	var output = "";
+	for (i = 0; i < inStr.length; i++) {
+		if (inStr[i] == sBegin) {
+			copy = false;
+		}
+		if (copy) {
+			output += inStr[i];
+		}
+		if (inStr[i] == sEnd) {
+			copy = true;
+		}
+	}
+	return output;
+}
+
+function getFormulaFromMeaning(inStr, sBegin, sEnd) {
+	let pos = 0;
+	let fromulaBegin = false;
+	let meaningBegin = false;
+	let output = "";
+	let meaningExisted = false;
+	for (i = 0; i < inStr.length; i++) {
+		if (inStr[i] == sBegin) {
+			fromulaBegin = true;
+			meaningBegin = false;
+		} else if (inStr[i] == sEnd) {
+			fromulaBegin = false;
+			meaningBegin = true;
+			output += inStr[i];
+		} else {
+			if (!fromulaBegin) {
+				meaningBegin = true;
+			}
+		}
+
+		if (meaningBegin && !meaningExisted) {
+			output += "~";
+			meaningExisted = true;
+		}
+		if (fromulaBegin) {
+			output += inStr[i];
+		}
+	}
+	return output;
+}
+
+//关闭单词修改窗口
+function closeModifyWindow() {
+	var eWin = document.getElementById("modifywin");
+	if (eWin) {
+		eWin.style.display = "none";
+		document.getElementById("modifyDiv").appendChild(eWin);
+		gCurrModifyWindowParNo = -1;
+	} else {
+	}
+	if (_display_sbs == 1) {
+		$("#ws_" + g_currEditWord).removeClass("wbw_selected");
+	}
+}
+
+//取消对单个词的修改
+function modifyCancel() {
+	//关闭单词修改窗口
+	closeModifyWindow();
+
+	//??????
+	getStyleClass("debug_info").style.display = "none";
+	document.getElementById("debug").style.display = "-webkit-flex";
+	document.getElementById("debug").style.display = "-moz-flex";
+	document.getElementById("debug").style.display = "-webkit-flex";
+	refreshNoteNumber();
+}
+
+//获取某词的段落索引
+function getParIndexByWordId(wordId) {
+	//遍历所有块,找到这个单词
+	var bookId = "";
+	var parNo = "";
+
+	var allBlock = gXmlBookDataBody.getElementsByTagName("block");
+	for (var iBlock = 0; iBlock < allBlock.length; iBlock++) {
+		xmlParInfo = allBlock[iBlock].getElementsByTagName("info")[0];
+		xmlParData = allBlock[iBlock].getElementsByTagName("data")[0];
+
+		type = getNodeText(xmlParInfo, "type");
+		if (type == "wbw") {
+			words = xmlParData.getElementsByTagName("word");
+			for (var iWord = 0; iWord < words.length; iWord++) {
+				wId = getNodeText(words[iWord], "id");
+				if (wId == wordId) {
+					bookId = getNodeText(xmlParInfo, "book");
+					parNo = getNodeText(xmlParInfo, "paragraph");
+					break;
+				}
+			}
+		}
+	}
+	if (bookId == "" || parNo == "") {
+		return false;
+	} else {
+		for (var iPar = 0; iPar < gArrayDocParagraph.length; iPar++) {
+			currBookId = gArrayDocParagraph[iPar].book;
+			currParNo = gArrayDocParagraph[iPar].paragraph;
+
+			if (currBookId == bookId && currParNo == parNo) {
+				return iPar;
+			}
+		}
+	}
+
+	return false;
+}
+var mouse_action_edit = true;
+var mouse_action_lookup = true;
+var mouse_action_translate = false;
+function lock_key(obj, key, check_id, svg_id) {
+	var lock_key_str = "";
+	switch (key) {
+		case "off":
+			lock_key_str += "<input id='" + check_id + '\' type="checkbox" style="display:none; " />';
+			lock_key_str +=
+				'<svg class="icon" onclick=lock_key(\'' + obj + "','on','" + check_id + "','" + svg_id + "')>";
+			lock_key_str += '<use xlink="http://www.w3.org/1999/xlink" href="svg/icon.svg#ic_' + svg_id + '_off">';
+			lock_key_str += "</use></svg>";
+			document.getElementById(obj).innerHTML = lock_key_str;
+			break;
+		case "on":
+			lock_key_str += "<input id='" + check_id + '\' type="checkbox" style="display:none; " checked/>';
+			lock_key_str +=
+				'<svg class="icon" onclick=lock_key(\'' + obj + "','off','" + check_id + "','" + svg_id + "')>";
+			lock_key_str += '<use xlink="http://www.w3.org/1999/xlink" href="svg/icon.svg#ic_' + svg_id + '_on ">';
+			lock_key_str += "</use></svg>";
+			document.getElementById(obj).innerHTML = lock_key_str;
+			break;
+	}
+}
+
+function set_word_click_action(obj, item) {
+	switch (item) {
+		case "normal":
+			if (document.getElementById(obj).checked == true) {
+				document.getElementById(obj).checked = false;
+				document.getElementById("icon_" + obj + "_on").style.display = "none";
+				document.getElementById("icon_" + obj + "_off").style.display = "block";
+			} else {
+				document.getElementById(obj).checked = true;
+				document.getElementById("icon_" + obj + "_on").style.display = "block";
+				document.getElementById("icon_" + obj + "_off").style.display = "none";
+			}
+
+			break;
+		case "edit":
+			if (document.getElementById(obj).checked == true) {
+				document.getElementById(obj).checked = false;
+				document.getElementById("icon_" + obj + "_on").style.display = "none";
+				document.getElementById("icon_" + obj + "_off").style.display = "block";
+				mouse_action_edit = document.getElementById(obj).checked;
+			} else {
+				document.getElementById(obj).checked = true;
+				document.getElementById("icon_" + obj + "_on").style.display = "block";
+				document.getElementById("icon_" + obj + "_off").style.display = "none";
+				document.getElementById("icon_Trans_as_on").style.display = "none";
+				document.getElementById("icon_Trans_as_off").style.display = "block";
+				document.getElementById("Trans_as").checked = false;
+				mouse_action_translate = false;
+				mouse_action_edit = document.getElementById(obj).checked;
+			}
+			break;
+		case "lookup":
+			if (document.getElementById(obj).checked == true) {
+				document.getElementById(obj).checked = false;
+				document.getElementById("icon_" + obj + "_on").style.display = "none";
+				document.getElementById("icon_" + obj + "_off").style.display = "block";
+				mouse_action_lookup = document.getElementById(obj).checked;
+			} else {
+				document.getElementById(obj).checked = true;
+				document.getElementById("icon_" + obj + "_on").style.display = "block";
+				document.getElementById("icon_" + obj + "_off").style.display = "none";
+				document.getElementById("icon_Trans_as_on").style.display = "none";
+				document.getElementById("icon_Trans_as_off").style.display = "block";
+				document.getElementById("Trans_as").checked = false;
+				mouse_action_translate = false;
+				mouse_action_lookup = document.getElementById(obj).checked;
+			}
+			break;
+		case "translate":
+			if (document.getElementById(obj).checked == true) {
+				document.getElementById(obj).checked = false;
+				document.getElementById("icon_" + obj + "_on").style.display = "none";
+				document.getElementById("icon_" + obj + "_off").style.display = "block";
+				mouse_action_translate = document.getElementById(obj).checked;
+			} else {
+				document.getElementById(obj).checked = true;
+				document.getElementById("icon_" + obj + "_on").style.display = "block";
+				document.getElementById("icon_" + obj + "_off").style.display = "none";
+				document.getElementById("icon_Look_Up_on").style.display = "none";
+				document.getElementById("icon_Look_Up_off").style.display = "block";
+				document.getElementById("icon_Edit_Dialog_on").style.display = "none";
+				document.getElementById("icon_Edit_Dialog_off").style.display = "block";
+				document.getElementById("Edit_Dialog").checked = false;
+				document.getElementById("Look_Up").checked = false;
+				mouse_action_edit = false;
+				mouse_action_lookup = false;
+				mouse_action_translate = document.getElementById(obj).checked;
+			}
+			break;
+	}
+}
+
+//鼠标点击词头
+function on_word_click(sWordId) {
+	closeModifyWindow();
+	g_currEditWord = sWordId;
+	var xAllWord = gXmlBookDataBody.getElementsByTagName("word");
+	var wid = getWordIndex(sWordId);
+	g_eCurrWord = xAllWord[wid];
+	var sReal = getNodeText(xAllWord[wid], "real");
+	var sParent = getNodeText(xAllWord[wid], "parent");
+	var sMeaning = getNodeText(xAllWord[wid], "mean");
+
+	//显示修改单个词的窗口
+	if (mouse_action_edit) {
+		showModifyWin(sWordId);
+	}
+
+	//word Message
+	msg_show_content(1, sWordId);
+	msg_show_content_panal();
+
+	//术语
+	note_lookup(sParent, "term_dict");
+
+	//参考字典
+	if (mouse_action_lookup) {
+		//dict_search(sReal);
+		window.open("../dict/index.php?builtin=true&theme=dark&key="+sReal,target="dict");
+
+	}
+
+	//添加词到翻译框
+	//if(mouse_action_translate){
+	//	add_word_to_tran_win(sMeaning);
+	//}
+}
+
+function note_apply(guid) {}
+/*
+function apply_button_lock(){
+
+	if($("#input_lock")[0].checked){// || g_currBookMarkColor!="bmc0"
+		$("#apply_to_down")[0].disabled=true;
+		$("#apply_to_up")[0].disabled=true;
+		$("#apply_to_all")[0].disabled=true;
+
+	}
+	else{
+		$("#apply_to_down")[0].disabled=false;
+		$("#apply_to_up")[0].disabled=false;
+		$("#apply_to_all")[0].disabled=false;
+	}
+
+}
+ */
+
+function mdf_win_data_change(key, value) {
+	$("#" + key).val(value);
+}
+function mdf_win_part_change(strPart) {
+	$("#input_org").val(strPart);
+	input_org_change();
+}
+function mdf_win_case_change(strCase) {
+	let aCase = strCase.split("#");
+	let type = "";
+	let gramma = "";
+	if (aCase[0]) {
+		type = aCase[0];
+	}
+	if (aCase[0]) {
+		type = aCase[0];
+	}
+	if (aCase[1]) {
+		gramma = aCase[1];
+	}
+	$("#input_case").val(strCase);
+	let arrGramma = gramma.split("$");
+	g_caseSelect[0] = type;
+	if (arrGramma[0]) {
+		g_caseSelect[1] = arrGramma[0];
+	} else {
+		g_caseSelect[1] = "";
+	}
+	if (arrGramma[1]) {
+		g_caseSelect[2] = arrGramma[1];
+	} else {
+		g_caseSelect[2] = "";
+	}
+	if (arrGramma[2]) {
+		g_caseSelect[3] = arrGramma[2];
+	} else {
+		g_caseSelect[3] = "";
+	}
+	refreshCaseSelect();
+}
+//显示修改单个词的窗口
+function showModifyWin(sWordId) {
+	//获取当前编辑的单词所在的段的索引号
+	gCurrModifyWindowParNo = getParIndexByWordId(sWordId);
+
+	let xAllWord = gXmlBookDataBody.getElementsByTagName("word");
+	let wid = getWordIndex(sWordId);
+
+	let tWin = "";
+	let tApply = "";
+	let eWord = document.getElementById("wb" + sWordId);
+	let eWin = document.getElementById("modifywin");
+	let eWordInfo = document.getElementById("modify_detaile");
+	let eApply = document.getElementById("modify_apply");
+
+	let sReal = getNodeText(xAllWord[wid], "real");
+	let sParent = getNodeText(xAllWord[wid], "parent");
+	let sMeaning = getNodeText(xAllWord[wid], "mean");
+	let sOrg = getNodeText(xAllWord[wid], "org");
+	let sOm = getNodeText(xAllWord[wid], "om");
+	let sCase = getNodeText(xAllWord[wid], "case");
+	let sParentGrammar = getNodeText(xAllWord[wid], "pg");
+	let sParent2 = getNodeText(xAllWord[wid], "parent2");
+
+	//showCurrWordTable(sReal);
+
+	if (g_useMode == "edit") {
+		//初始值
+		$("#input_meaning").val(sMeaning);
+		$("#input_org").val(sOrg);
+		$("#input_om").val(sOm);
+		$("#input_case").val(sCase);
+		$("#input_parent_grammar").val(sParentGrammar);
+		$("#id_text_prt_prt").val(sParent2);
+		
+		if (sParentGrammar != "" || sParent2 != "" || sParent2 != " ") {
+			document.getElementById("edit_detail_prt_prt").style.display = "block";
+			document.getElementById("svg_parent2").style.transform = "rotate(90deg)";
+		} else {
+			document.getElementById("edit_detail_prt_prt").style.display = "none";
+			document.getElementById("svg_parent2").style.transform = "rotate(0deg)";
+		}
+		document.getElementById("parent_grammar").innerHTML = getLocalGrammaStr(sParentGrammar);
+
+
+		//右侧修改菜单
+		$("#word_mdf_mean_dropdown").html(render_word_menu_mean(g_currEditWord, 1));
+		$("#word_mdf_parts_dropdown").html(render_word_menu_parts(sWordId, 1));
+		$("#word_mdf_case_dropdown").html(render_word_menu_gramma(sWordId, 1));
+		$("#word_mdf_parent_dropdown").html(render_word_menu_parent(sWordId));
+		$("#word_mdf_prt_prt_dropdown").html(render_word_menu_parent_parent(sWordId));
+
+		let typeAndGramma = sCase.split("#");
+		if (typeAndGramma.length > 1) {
+			sType = typeAndGramma[0];
+			sGramma = typeAndGramma[1];
+		} else {
+			sType = "";
+			sGramma = typeAndGramma[0];
+		}
+		g_caseSelect[0] = sType;
+		aGramma = sGramma.split("$");
+		lenGramma = aGramma.length;
+		if (lenGramma > 3) {
+			lenGramma = 3;
+		}
+		for (iGramma = 0; iGramma < lenGramma; iGramma++) {
+			g_caseSelect[iGramma + 1] = aGramma[iGramma];
+		}
+		//刷新type and gramma 下拉菜单选项
+		refreshCaseSelect();
+
+		//刷新part meaning 下拉菜单选项
+		g_currPartMeaning = "";
+		g_initPartMeaning = true;
+		refreshPartMeaningSelect();
+		if (sOrg != "?" && sOrg != "") {
+			input_org_change(document.getElementById("input_org"));
+		}
+
+		tApply += '<div class="modifybutton">';
+		tApply += "<p style='display: flex' >"; //onclick=apply_button_lock()
+
+		if (getNodeText(xAllWord[wid], "lock") == "true") {
+			tApply += "<span class='apply_to' id='edit_lock' align=\"left\">";
+			tApply += '<input type="checkbox" style=" display:none;" align="left" id=\'input_lock\' checked />';
+			tApply +=
+				"<svg class=\"icon\" onclick=lock_key('edit_lock','off','input_lock','lock')><use xlink=\"http://www.w3.org/1999/xlink\" href=\"svg/icon.svg#ic_lock_on \"></use></svg>";
+			tApply += "</span>";
+		} else {
+			tApply += "<span class='apply_to' id='edit_lock' align=\"left\">";
+			tApply += '<input type="checkbox" style=" display:none;" align="left" id=\'input_lock\' />';
+			tApply +=
+				"<svg class=\"icon\" onclick=lock_key('edit_lock','on','input_lock','lock')><use xlink=\"http://www.w3.org/1999/xlink\" href=\"svg/icon.svg#ic_lock_off\"></use></svg>";
+			tApply += "</span>";
+		}
+		//tApply += "<button onclick=\"upload_to_my_dict()\">上传到我的字典</button>";
+
+		let allword = doc_word();
+		let sameCount = 0;
+		for (let i = 0; i < allword.length; i++) {
+			if (
+				sReal == getNodeText(allword[i], "real") ||
+				(sParent != "" && sParent == getNodeText(allword[i], "parent"))
+			) {
+				sameCount++;
+			}
+		}
+
+		if (sameCount > 1) {
+			tApply += "<span>";
+		} else {
+			tApply += "<span style='display:none'>";
+		}
+		tApply +=
+			'<input id=\'checkbox_apply_same\' type="checkbox" style=" width:14px; height:14px; margin-left:10px;" align="left"/>' +
+			gLocal.gui.applyto +
+			"&nbsp;<span id='same_word_count' >" +
+			(sameCount + 1) +
+			"&nbsp;" +
+			gLocal.gui.same_word +
+			"</span>";
+		tApply += "</span>";
+
+		tApply += "<span class='apply_to' id='upload_lock' align=\"left\">";
+		tApply +=
+			'<input type="checkbox" style="display:none; width:14px; height:14px; margin-left:10px;" align="left" id=\'input_to_db\' />';
+		//tApply += "<svg class=\"icon\" onclick=lock_key('upload_lock','on','input_to_db','cloud')><use xlink=\"http://www.w3.org/1999/xlink\" href=\"svg/icon.svg#ic_cloud_off\"></span>";
+		tApply += "</span>";
+
+		tApply += "</p>";
+
+		tApply += "</div>";
+		tApply += '<div class="modifycancel" align="right">';
+		/*		
+		tApply += "<span class='apply_to'>" 
+		tApply+= "<svg class=\"icon\"><use xlink=\"http://www.w3.org/1999/xlink\" href=\"svg/icon.svg#ic_format_paint\">";
+		tApply += "</span>";
+		
+
+		tApply+= "<button class='apply_to' id='apply_to_down' onclick=\"modifyApply('" + sWordId + "','down')\" title='向下填充'>";
+		tApply+= "<svg style='transform: rotate(180deg)' class=\"icon\"><use xlink=\"http://www.w3.org/1999/xlink\" href=\"svg/icon.svg#ic_file_upload\">";
+		tApply+= "</button>";
+		
+		tApply+= "<button class=' apply_to' id='apply_to_up' onclick=\"modifyApply('" + sWordId + "','up')\"  title='向上填充'>";
+		tApply+= "<svg class=\"icon\"><use xlink=\"http://www.w3.org/1999/xlink\" href=\"svg/icon.svg#ic_file_upload\">";
+		tApply+= "</button>";
+		
+		tApply+= "<button class=' apply_to' id='apply_to_all' onclick=\"modifyApply('" + sWordId + "','all')\"  title='更新全部'>";
+		tApply+= "<svg class=\"icon\"><use xlink=\"http://www.w3.org/1999/xlink\" href=\"svg/icon.svg#ic_format_line_spacing\">";
+		tApply+= "</button>";
+		*/
+		tApply +=
+			"<button class=' apply_to' id='apply_to_this' onclick=\"modifyApply('" +
+			sWordId +
+			"',true)\"  title='Save and Favorite'>";
+		tApply += "💾&🌐"+gLocal.gui.to_user_dictionary;
+		tApply += "</button>";
+
+		tApply +=
+			"<button class=' apply_to' id='apply_to_this' onclick=\"modifyApply('" +
+			sWordId +
+			"',false)\"  title='Save Draft'>";
+		tApply += "💾";//gLocal.gui.save
+		//tApply += '<svg class="icon" style="fill: var(--box-bg-color1)"><use xlink:href="../../node_modules/bootstrap-icons/bootstrap-icons.svg#translate"></use></svg>'
+		tApply += "</button>";
+
+		tApply += "<button class=' apply_to' onclick=\"modifyCancel()\">";
+		tApply += "❌";//gLocal.gui.cancel+
+		tApply += "</button>";
+		tApply += "</div>";
+		eApply.innerHTML = tApply;
+
+		document.getElementById("id_text_bookmark").value = getNodeText(xAllWord[wid], "bmt");
+		document.getElementById("id_text_note").value = getNodeText(xAllWord[wid], "note");
+		document.getElementById("id_text_id").innerHTML = get_book_name_by_id(getNodeText(xAllWord[wid], "id"));
+		document.getElementById("id_text_pali").value = getNodeText(xAllWord[wid], "pali");
+		document.getElementById("id_text_real").value = getNodeText(xAllWord[wid], "real");
+		document.getElementById("id_text_parent").value = getNodeText(xAllWord[wid], "parent");
+
+		$("#id_relation_text").val(getNodeText(xAllWord[wid], "rela"));
+		rela_refresh(sWordId);
+
+		if (getNodeText(xAllWord[wid], "bmc") == "") {
+			g_currBookMarkColor = "bmc0";
+		} else {
+			g_currBookMarkColor = getNodeText(xAllWord[wid], "bmc");
+		}
+		getBookMarkColor(g_currBookMarkColor);
+
+		//显示编辑窗口
+		eWin.style.display = "block";
+		if (_display_sbs == 1) {
+			$("#modifywin").addClass("left_edit_frame");
+			//根据偏移量设置窗口位置
+			if (
+				$(".sent_wbw").outerWidth() +
+					$("#left_tool_bar").outerWidth() -
+					$("#wb" + sWordId).offset().left -
+					$("#modifywin").outerWidth() >
+				0
+			) {
+				//$("#modifywin").removeClass("right_edit_frame")
+				$("#modifywin").css("margin-left", "0");
+
+				//$("#modifywin").style();
+				//$("#modifywin").css("margin-left", "8px");
+				//$("#modifywin::after").css("left", "0");
+				//$("#modifywin::after").style.left = "0";, "": "" }
+			} else {
+				let margin_change =
+					$(".sent_wbw").outerWidth() +
+					$("#left_tool_bar").outerWidth() -
+					$("#wb" + sWordId).offset().left -
+					$("#modifywin").outerWidth();
+				//$("#modifywin").removeClass("left_edit_frame")
+				//$("#modifywin").addClass("right_edit_frame")
+				$("#modifywin").css("margin-left", margin_change + "px");
+				//$("#modifywin::after").css("right", "0");
+				//$("#modifywin::after").style.right = "0";
+			}
+			$("#ws_" + sWordId).addClass("wbw_selected");
+		}
+
+		var sDetail = "detail" + sWordId;
+		var eDetail = document.getElementById(sDetail);
+		eWord.insertBefore(eWin, eDetail);
+
+		//document.getElementById("dict_ref_search_input").value = sReal;
+
+		//editor_refresh_inline_dict(sReal);
+	}
+}
+
+function get_book_name_by_id(bookid) {
+	var book_id = bookid.split("-")[0];
+	var book_id2 = bookid.slice(book_id.length);
+
+	for (i_bookname in local_palicannon_index) {
+		if (book_id == local_palicannon_index[i_bookname].id) {
+			book_id2 = local_palicannon_index[i_bookname].title + book_id2;
+		}
+	}
+	return book_id2;
+}
+
+function add_word_to_tran_win(sMeaning) {
+	var tranObj = document.getElementById("id_text_edit_form");
+	if (tranObj && tranObj.style.display != "none") {
+		var textObj = document.getElementById("id_text_edit_area");
+		if (textObj) {
+			textObj.value += sMeaning;
+		}
+	}
+}
+
+function on_word_mouse_enter() {
+	let wordid = $(this).attr("id");
+
+	if (gCurrMoseEnterWordId == wordid) {
+		return;
+	}
+	gCurrMoseEnterWordId = wordid;
+
+	//remove the 'wb' in string head
+	_curr_mouse_enter_wordid = wordid.substr(2);
+
+	relation_link_show(_curr_mouse_enter_wordid);
+
+	let xAllWord = gXmlBookDataBody.getElementsByTagName("word");
+	let iIndex = getWordIndex(_curr_mouse_enter_wordid);
+	if (iIndex >= 0) {
+		let paliword = getNodeText(xAllWord[iIndex], "real");
+		let factors = [];
+		if(getNodeText(xAllWord[iIndex], "org") != '?'){
+			factors = getNodeText(xAllWord[iIndex], "org").split('+');
+		}
+		//渲染单词下拉菜单
+		dictFetch([paliword].concat(factors),function(){
+			render_word_menu(_curr_mouse_enter_wordid);
+		})
+
+	}
+	//如果显示relation
+	if (gRelationSelectWordBegin) {
+		gCurrWordDivBorder = $(this).css("border");
+		$(this).css("border", "1px solid #65c5bd");
+		let eHeadBar = document.getElementById("word_tool_bar");
+		if (eHeadBar) {
+			eHeadBar.style.display = "block";
+		}
+		let eWord = document.getElementById("ws_" + _curr_mouse_enter_wordid);
+		let eWordHead = document.getElementById("whead_" + _curr_mouse_enter_wordid);
+		eWord.insertBefore(eHeadBar, eWordHead);
+
+		gWordHeadBarVisible = true;
+	}
+}
+
+//编辑窗口拆分改变
+var g_arrPartMean = null;
+var g_initPartMeaning = true;
+var mDict = new Array();
+function input_org_change() {
+	g_arrPartMean = null;
+	g_initPartMeaning = true;
+
+	var arrPart = $("#input_org").val().split("+");
+	var arrNewPart = new Array();
+	var i;
+	for (i in arrPart) {
+		if (!mDict[arrPart[i]]) {
+			arrNewPart.push(arrPart[i]);
+		}
+	}
+	if (arrNewPart.length > 0) {
+		//如果有内存字典里面没有的单词,查询
+		lookupNewWord({
+			word: arrNewPart.join(),
+			type: "part",
+		},
+		refreshPartMeaningSelect);
+	} else {
+		refreshPartMeaningSelect();
+	}
+}
+
+
+/*
+  |------------------------------------
+  |当人工输入拆分意思后,更新拆分意思数组
+  |------------------------------------
+  |obj : 输入框
+  |------------------------------------
+*/
+function input_om_change(obj){
+	g_arrPartMean = obj.value().split('+');
+}
+
+/*
+  |------------------------------------
+  |当选择拆分意思菜单后,更新拆分意思输入框
+  |------------------------------------
+  | 
+  |------------------------------------
+*/
+function part_mean_ok() {
+	var part_mean_ok_str = g_arrPartMean.join("+");
+	part_mean_ok_str = "#" + part_mean_ok_str + "#";
+	part_mean_ok_str = part_mean_ok_str.replace(/\+ /g, "+");
+	part_mean_ok_str = part_mean_ok_str.replace(/ \+/g, "+");
+	part_mean_ok_str = part_mean_ok_str.replace(/\# /g, "");
+	part_mean_ok_str = part_mean_ok_str.replace(/ \#/g, "");
+	part_mean_ok_str = part_mean_ok_str.replace(/\#/g, "");
+	document.getElementById("input_om").value = part_mean_ok_str; //.slice(0,-1);
+}
+
+/*
+编辑窗口中拆分下拉菜单改变
+*/
+function meaningPartChange(index, newValue) {
+	g_initPartMeaning = false;
+
+	g_arrPartMean[index] = newValue;
+	part_mean_ok();
+
+	refreshPartMeaningSelect();
+}
+function input_org_switch(id_1, id_2) {
+	document.getElementById(id_1).style.display = "none";
+	document.getElementById(id_2).style.display = "inline-flex";
+	document.getElementById(id_2).focus();
+	refreshPartMeaningSelect();
+}
+function refreshPartMeaningSelect() {
+	var part = document.getElementById("input_org").value;
+	var arrPart = new Array();
+	if (part == "" || part.lastIndexOf("+") == -1) {
+		arrPart.push(part);
+	} else {
+		arrPart = part.split("+");
+	}
+	if (g_initPartMeaning) {
+		g_arrPartMean = part.split("+");
+	}
+	var output = "<div id='om_dropdown_area' style='overflow-x: auto;white-space: nowrap;max-width: 13em;'>";
+	//output="<span style='width:90%' onclick=\"input_org_switch('input_org_select','input_om')\"></span><br/>"
+	for (iPart in arrPart) {
+		output += getMeaningMenuList(iPart, arrPart[iPart]);
+		if (arrPart.length == 1) {
+			break;
+		} else if (iPart < arrPart.length - 1) {
+			output += "+";
+		}
+	}
+	output += "</div>";
+	output += "<div style='width: 5.5em;'>";
+	output += "<button style='margin-left:auto; padding: 1px 6px;' onclick=\"copy_part_mean_to_mean()\">";
+	output += '<svg class="icon"><use xlink="http://www.w3.org/1999/xlink" href="svg/icon.svg#ic_vertical_align_top">';
+	output += "</button>";
+
+	output +=
+		"<button style='margin-left:auto; padding: 1px 6px;' onclick=\"input_org_switch('input_org_select','input_om')\">";
+	output += "<svg class='icon'><use xlink='http://www.w3.org/1999/xlink' href='svg/icon.svg#ic_mode_edit'>";
+	output += "</button>";
+	output += "</div>";
+
+	document.getElementById("input_org_select").innerHTML = output;
+	//增加拆分意思所见即所得
+	var part_mean_display_str = document.getElementById("input_om").value;
+	var part_mean_display_array = new Array();
+	if (part_mean_display_str.lastIndexOf("+") != -1) {
+		part_mean_display_array = part_mean_display_str.split("+");
+	} else {
+		part_mean_display_array.push(part_mean_display_str);
+	}
+
+	if (part_mean_display_array.length <= arrPart.length) {
+		for (i_display in part_mean_display_array) {
+			document.getElementById("org_part_mean_" + i_display).innerHTML = part_mean_display_array[i_display];
+		}
+		if (part_mean_display_array.length < arrPart.length) {
+			for (i_display = part_mean_display_array.length; i_display < arrPart.length; i_display++) {
+				//document.getElementById("org_part_mean_" + i_display).innerHTML = "⬇";
+			}
+		}
+	} else {
+		for (i_display in arrPart) {
+			if (i_display == arrPart.length - 1) {
+				var part_mean_display_str_last = "";
+				for (j_display = i_display; j_display < part_mean_display_array.length; j_display++) {
+					part_mean_display_str_last += part_mean_display_array[j_display];
+				}
+				document.getElementById("org_part_mean_" + i_display).innerHTML = part_mean_display_str_last;
+			} else {
+				document.getElementById("org_part_mean_" + i_display).innerHTML = part_mean_display_array[i_display];
+			}
+		}
+	}
+}
+//编辑窗口拆分意思复制到整体意思
+function copy_part_mean_to_mean() {
+	let meaning = g_arrPartMean.join("");
+	if(testCJK(meaning)){
+		$("#input_meaning").val(removeFormulaB(g_arrPartMean.join(""), "[", "]"));
+	}else{
+		$("#input_meaning").val(removeFormulaB(g_arrPartMean.join(" "), "[", "]"));
+	}
+	
+}
+//编辑窗口拆分意思下拉菜单
+function getMeaningMenuList(index, word) {
+	var currMeaningList0 = getWordMeaningList(word);
+	var currMeaningList = new Array();
+	var part_mean_display_str = document.getElementById("input_om").value;
+	var part_mean_display_array = new Array();
+	if (part_mean_display_str.lastIndexOf("+") != -1) {
+		part_mean_display_array = part_mean_display_str.split("+");
+	} else {
+		part_mean_display_array.push(part_mean_display_str);
+	}
+	if (part_mean_display_array.length - 1 >= index) {
+		currMeaningList.push(part_mean_display_array[index]);
+	} else {
+		currMeaningList.push(" ");
+	}
+	for (const iterator of currMeaningList0) {
+		if (iterator != "") {
+			currMeaningList.push(iterator);
+		}
+	}
+
+	var output = "";
+	output += "<div class=\"case_dropdown\" style='display:inline-block;'>";
+
+	let currMean;
+	output += "<p id='org_part_mean_" + index + "' class='case_dropbtn' >";
+	if (g_initPartMeaning) {
+		currMean = currMeaningList[0];
+		g_arrPartMean[index] = currMeaningList[0];
+	} else {
+		currMean = g_arrPartMean[index];
+	}
+	if (currMean == "") {
+		currMean = " ";
+	}
+	output += currMean + "</p>";
+
+	output += '<div class="case_dropdown-content" id=\'part_mean_menu_' + index + "' style='left:0;right:0;'>";
+	//直列菜单
+	output += "<a onclick='meaningPartLookup(\"" +word +"\")'>🔍" +gLocal.gui.dict +"</a>";	
+	for (const itMean of currMeaningList) {
+		if(itMean!="?"){
+			output += "<a onclick='meaningPartChange(" +index +	',"' +itMean +	"\")'>" +itMean +"</a>";					
+		}
+
+	}
+
+	output += "</div>";
+	output += "</div>";
+	return output;
+}
+function meaningPartLookup(word){
+	window.open("../dict/index.php?builtin=true&theme=dark&key="+word,target="dict");
+}
+function getWordMeaningList(word) {
+	var currOM = "";
+	var arrOM = new Array();
+	var thisWord = word;
+	//新的方法 内存字典用索引数组
+	if (mDict[word]) {
+		for (var j = 0; j < mDict[word].length; j++) {
+			if (mDict[word][j].mean) {
+				var currOM = mDict[word][j].mean.split("$");
+				for (iMean in currOM) {
+					if (currOM[iMean].length > 0 && currOM[iMean] != "?") {
+						pushNewToList(arrOM, currOM[iMean]);
+					}
+				}
+			}
+		}
+	}
+
+	if (arrOM.length == 0) {
+		arrOM.push("?");
+	}
+	return arrOM;
+}
+
+//删除连音词
+function edit_un_remove(parentId) {
+	edit_un_RemoveHtmlNode(parentId);
+
+	let xWord = gXmlBookDataBody.getElementsByTagName("word");
+	var count = 0;
+	//移除内存数据
+
+	for (iWord = xWord.length - 1; iWord >= 0; iWord--) {
+		let id = getNodeText(xWord[iWord], "id");
+		if (id.indexOf(parentId) == 0 && id != parentId) {
+			xWord[iWord].parentNode.removeChild(xWord[iWord]);
+			count++;
+		}
+	}
+	//移除根单词的类标志
+	var parentElement = document.getElementById("wb" + parentId);
+	if (parentElement) {
+		parentElement.classList.remove("un_parent");
+		parentElement.classList.remove("comp_parent");
+	}
+
+	user_wbw_push_word(parentId);
+	user_wbw_commit();
+	com_XmlAllWordRefresh();
+	modifyWordDetailByWordId(parentId);
+	var_dump(gLocal.gui.removeword + ": " + count);
+}
+
+function edit_un_RemoveHtmlNode(parentId) {
+	var xAllWord = gXmlBookDataBody.getElementsByTagName("word");
+	for (wordIndex = 0; wordIndex < xAllWord.length; wordIndex++) {
+		if (getNodeText(xAllWord[wordIndex], "un") == parentId) {
+			var childId = getNodeText(xAllWord[wordIndex], "id");
+			var element = document.getElementById("wb" + childId);
+			element.parentNode.removeChild(element);
+		}
+	}
+}
+
+/*
+拆连读词
+*/
+function edit_un_split(parentId) {
+	var xBlock = gXmlBookDataBody.getElementsByTagName("block");
+	var iWordCount = 0;
+	for (iBlock = 0; iBlock < xBlock.length; iBlock++) {
+		var xData = xBlock[iBlock].getElementsByTagName("data")[0];
+		xWord = xData.getElementsByTagName("word");
+		for (iWord = 0; iWord < xWord.length; iWord++) {
+			if (getNodeText(xWord[iWord], "id") == parentId) {
+				mType = getNodeText(xWord[iWord], "case").split("#")[0];
+				if (mType == ".un." || mType == ".comp.") {
+					nextElement = com_get_nextsibling(xWord[iWord]);
+					if (nextElement != null) {
+						//下一个元素存在
+						if (getNodeText(nextElement, "un") == parentId) {
+							//若有孩子則不进行任何处理,直接返回
+							return;
+						}
+					}
+				} else {
+					//若不是连读词則不进行任何处理,直接返回
+					return;
+				}
+				if (getNodeText(xWord[iWord], "mean") == "?") {
+					setNodeText(xWord[iWord], "mean", "_un_auto_mean_");
+				}
+				if (getNodeText(xWord[iWord], "om") == "?") {
+					setNodeText(xWord[iWord], "om", "_un_auto_factormean_");
+				}
+
+				var parentElement = document.getElementById("wb" + parentId);
+				if (parentElement) {
+					if (mType == ".un.") {
+						parentElement.classList.add("un_parent");
+					} else {
+						parentElement.classList.add("comp_parent");
+					}
+				}
+				var nextWordNodeId = getNodeText(xWord[iWord + 1], "id");
+				if (mType == ".un.") {
+					var org = "[+" + getNodeText(xWord[iWord], "org") + "+]";
+				} else {
+					var org = getNodeText(xWord[iWord], "org").replace(/\+/g, "+-+");
+				}
+				var sSubPali = org.split("+");
+				var orgReal = org.replace(/n\+/g, "ṃ+"); //智能識別結尾為n的拆分
+				orgReal = orgReal.replace(/ñ\+/g, "ṃ+"); //智能識別結尾為n的拆分
+				orgReal = orgReal.replace(/m\+/g, "ṃ+"); //智能識別結尾為n的拆分
+				orgReal = orgReal.replace(/d\+/g, "ṃ+"); //智能識別結尾為n的拆分
+				var sSubReal = orgReal.split("+");
+				for (iNewWord = 0; iNewWord < sSubPali.length; iNewWord++) {
+					var newNode = gXmlBookData.createElement("word");
+					setNodeText(newNode, "pali", sSubPali[iNewWord]);
+					var newGUID = parentId + "-" + iNewWord;
+					setNodeText(newNode, "id", newGUID);
+					setNodeText(newNode, "un", parentId);
+					let newPali = sSubReal[iNewWord].toLowerCase();
+					if (sSubPali[iNewWord] == "[") {
+						setNodeText(newNode, "real", "");
+						setNodeText(newNode, "case", ".un:begin.");
+					} else if (sSubPali[iNewWord] == "]") {
+						setNodeText(newNode, "real", "");
+						setNodeText(newNode, "case", ".un:end.");
+					} else {
+						setNodeText(newNode, "real", newPali); //real转换为小写
+						setNodeText(newNode, "case", "?");
+					}
+					let newMeaning = findFirstMeanInDict(newPali);
+					let newParts = findFirstPartInDict(newPali);
+					let newPartMean = findFirstPartMeanInDict(newPali);
+					let newCase = findFirstCaseInDict(newPali);
+
+					setNodeText(newNode, "mean", newMeaning);
+					setNodeText(newNode, "org", newParts);
+					setNodeText(newNode, "om", newPartMean);
+					setNodeText(newNode, "case", newCase);
+
+					if (iWord == xWord.length - 1) {
+						xData.insertBefore(newNode, null);
+						edit_un_AddNewHtmlNode(nextWordNodeId, sSubPali[iNewWord], newGUID, iWordCount + iNewWord + 1);
+					} else {
+						xData.insertBefore(newNode, xWord[iWord + iNewWord + 1]);
+						edit_un_AddNewHtmlNode(nextWordNodeId, sSubPali[iNewWord], newGUID, iWordCount + iNewWord + 1);
+					}
+				}
+				modifyWordDetailByWordId(parentId);
+				word_mouse_event(); //添加鼠标事件,每次都执行效率低以后需要修改
+				var_dump(gLocal.gui.unsplit + " " + gLocal.gui.ok);
+				user_wbw_push_word(parentId);
+				user_wbw_commit();
+				return;
+			}
+			iWordCount++;
+		}
+	}
+}
+//添加连音词拆分html块
+function edit_un_AddNewHtmlNode(nextNodeId, strInsert, guid, id) {
+	let xWord = gXmlBookDataBody.getElementsByTagName("word");
+	let iWordIndex = getWordIndex(guid);
+	let parentId = guid.split("_")[0];
+	let parentElement = document.getElementById("wb" + parentId);
+	let element = document.getElementById("wb" + nextNodeId);
+
+	let htmlNewWord = renderWordBlock(xWord[iWordIndex]);
+	if (element) {
+		//下一个词存在。
+		$(element).before(htmlNewWord);
+	} else {
+		//下一个词不存在。
+		$(parentElement).append(htmlNewWord);
+	}
+}
+
+function file_export_html_validate_form(thisform) {
+	with (thisform) {
+		var tocstring = document.getElementById("content").innerHTML;
+		var suttastring = document.getElementById("sutta_text").innerHTML;
+		txt_toc.value = tocstring.replace(/onclick/g, "");
+		txt_sutta.value = suttastring.replace(/onclick/g, "");
+		return true;
+	}
+}
+
+function show_case_input(obj) {
+	if (obj.checked) {
+		document.getElementById("input_case").style.display = "block";
+	} else {
+		document.getElementById("input_case").style.display = "none";
+	}
+}
+
+function edit_tran_save() {
+	let eBlock;
+	switch (gTextEditMediaType) {
+		case "translate":
+			newText = document.getElementById("id_text_edit_area").value;
+			newText = newText.replace(/\n\n/g, "<br />");
+			newText = term_edit_to_std_str(newText);
+			setTranText(gEditorTranslateEditBlockId, newText);
+
+			eBlock = document.getElementById("id_tran_" + gEditorTranslateEditBlockId);
+			if (eBlock) {
+				eBlock.innerHTML = renderTranslateParBlockInnerById(gEditorTranslateEditBlockId);
+				term_updata_translation();
+			}
+			break;
+		case "note":
+			setNoteText(gEditorNoteEditBlockId, document.getElementById("id_text_edit_area").value);
+			newText = document.getElementById("id_text_edit_area").value;
+			newText = newText.replace(/\n/g, "<br />");
+			eBlock = document.getElementById("note_sen_" + gEditorNoteEditBlockId + "_0");
+			if (eBlock) {
+				eBlock.innerHTML = newText;
+			}
+			break;
+		case "heading":
+			var newHeadingInfo = new Object();
+			newHeadingInfo.level = document.getElementById("id_heading_edit_level").value;
+			newHeadingInfo.language = document.getElementById("id_text_edit_language").value;
+			newHeadingInfo.author = document.getElementById("id_text_edit_author").value;
+			newHeadingInfo.text = document.getElementById("id_text_edit_area").value;
+			setHeadingInfo(gEditorHeadingEditBlockId, newHeadingInfo);
+			newText = document.getElementById("id_text_edit_area").value;
+			newText = newText.replace(/\n/g, "<br />");
+			eBlock = document.getElementById("id_heading_text_" + gEditorHeadingEditBlockId);
+			if (eBlock) {
+				eBlock.innerHTML = newText;
+			}
+			updataToc();
+			break;
+		case "new_heading":
+			var newHeadingInfo = new Object();
+			newHeadingInfo.book = gEditorNewHeadingBookId;
+			newHeadingInfo.paragraph = gEditorNewHeadingPar;
+			newHeadingInfo.level = document.getElementById("id_heading_edit_level").value;
+			newHeadingInfo.language = document.getElementById("id_text_edit_language").value;
+			newHeadingInfo.author = document.getElementById("id_text_edit_author").value;
+			newHeadingInfo.text = document.getElementById("id_text_edit_area").value;
+			newHeadBlock(newHeadingInfo);
+			updataToc();
+			break;
+	}
+	document.getElementById("id_text_edit_form").style.display = "none";
+	Dragging(getDraggingDialog).disable();
+}
+function edit_tran_cancal() {
+	document.getElementById("id_text_edit_form").style.display = "none";
+	Dragging(getDraggingDialog).disable();
+}
+
+function edit_tran_delete() {
+	switch (gTextEditMediaType) {
+		case "heading":
+			xBlock = gXmlBookDataBody.getElementsByTagName("block");
+			for (var iBlock = 0; iBlock < xBlock.length; iBlock++) {
+				xmlParInfo = xBlock[iBlock].getElementsByTagName("info")[0];
+				xmlParData = xBlock[iBlock].getElementsByTagName("data")[0];
+				mId = getNodeText(xmlParInfo, "id");
+				type = getNodeText(xmlParInfo, "type");
+
+				if (mId == gEditorHeadingEditBlockId) {
+					gXmlBookDataBody.removeChild(xBlock[iBlock]);
+					return;
+				}
+			}
+			htmlNode = document.getElementById("id_heading_" + gEditorHeadingEditBlockId);
+			if (htmlNode) {
+				htmlNode.parentNode.removeChild(htmlNode);
+			}
+			updataToc();
+			break;
+	}
+
+	document.getElementById("id_text_edit_form").style.display = "none";
+}
+
+function editor_translate_edit(id) {
+	gTextEditMediaType = "translate";
+	gEditorTranslateEditBlockId = id;
+	var headingObj = getTranslateText(id);
+	document.getElementById("id_text_edit_language").value = headingObj.language;
+	document.getElementById("id_text_edit_author").value = headingObj.author;
+	document.getElementById("id_text_edit_area").value = term_std_str_to_edit(headingObj.text);
+	//document.getElementById("id_heading_edit_level").style.display="none";
+	document.getElementById("id_text_edit_delete").style.display = "none";
+	document.getElementById("id_text_edit_form").style.display = "block";
+	Dragging(getDraggingDialog).enable();
+}
+
+function editor_note_edit(id) {
+	gTextEditMediaType = "note";
+	gEditorNoteEditBlockId = id;
+	var tranText = getNoteText(id);
+	document.getElementById("id_text_edit_area").value = tranText;
+	document.getElementById("id_heading_edit_level").style.display = "none";
+	document.getElementById("id_text_edit_delete").style.display = "none";
+	document.getElementById("id_text_edit_form").style.display = "block";
+}
+function getNoteText(id) {
+	xBlock = gXmlBookDataBody.getElementsByTagName("block");
+	for (var iBlock = 0; iBlock < xBlock.length; iBlock++) {
+		xmlParInfo = xBlock[iBlock].getElementsByTagName("info")[0];
+		xmlParData = xBlock[iBlock].getElementsByTagName("data")[0];
+		mId = getNodeText(xmlParInfo, "id");
+		type = getNodeText(xmlParInfo, "type");
+
+		if (mId == id) {
+			xmlParDataSen = xmlParData.getElementsByTagName("sen");
+			var currText = "";
+			for (iSen = 0; iSen < xmlParDataSen.length; iSen++) {
+				currText += getNodeText(xmlParDataSen[iSen], "text");
+			}
+			return currText;
+		}
+	}
+	return "";
+}
+
+function editor_heading_add_new(inBook, inPar) {
+	document.getElementById("id_text_edit_caption_text").innerHTML = gLocal.gui.newheading;
+	gTextEditMediaType = "new_heading";
+	gEditorHeadingEditBlockId = -1;
+	gEditorNewHeadingBookId = inBook;
+	gEditorNewHeadingPar = inPar;
+	document.getElementById("id_heading_edit_level").value = "1";
+	document.getElementById("id_text_edit_language").value = "pali";
+	document.getElementById("id_text_edit_author").value = config_user_name;
+	document.getElementById("id_text_edit_area").value = "";
+	document.getElementById("id_heading_edit_level").style.display = "flex";
+	document.getElementById("id_text_edit_delete").style.display = "none";
+	document.getElementById("id_text_edit_form").style.display = "block";
+}
+
+function editor_heading_edit(id) {
+	document.getElementById("id_text_edit_caption_text").innerHTML = "Heading";
+	gTextEditMediaType = "heading";
+	gEditorHeadingEditBlockId = id;
+	var headingObj = getHeadingText(id);
+	document.getElementById("id_heading_edit_level").value = headingObj.level;
+	document.getElementById("id_text_edit_language").value = headingObj.language;
+	document.getElementById("id_text_edit_author").value = headingObj.author;
+	document.getElementById("id_text_edit_area").value = headingObj.text;
+	document.getElementById("id_heading_edit_level").style.display = "flex";
+	document.getElementById("id_text_edit_delete").style.display = "inline";
+	document.getElementById("id_text_edit_form").style.display = "block";
+}
+function getHeadingText(id) {
+	xBlock = gXmlBookDataBody.getElementsByTagName("block");
+	for (var iBlock = 0; iBlock < xBlock.length; iBlock++) {
+		xmlParInfo = xBlock[iBlock].getElementsByTagName("info")[0];
+		xmlParData = xBlock[iBlock].getElementsByTagName("data")[0];
+		mId = getNodeText(xmlParInfo, "id");
+		type = getNodeText(xmlParInfo, "type");
+
+		if (mId == id) {
+			var obj = new Object();
+			obj.text = getNodeText(xmlParData, "text");
+			obj.level = getNodeText(xmlParInfo, "level");
+			obj.language = getNodeText(xmlParInfo, "language");
+			obj.author = getNodeText(xmlParInfo, "author");
+			return obj;
+		}
+	}
+	return null;
+}
+function setHeadingInfo(id, objValue) {
+	xBlock = gXmlBookDataBody.getElementsByTagName("block");
+	for (var iBlock = 0; iBlock < xBlock.length; iBlock++) {
+		xmlParInfo = xBlock[iBlock].getElementsByTagName("info")[0];
+		xmlParData = xBlock[iBlock].getElementsByTagName("data")[0];
+		blockId = getNodeText(xmlParInfo, "id");
+		if (blockId == id) {
+			newText = objValue.text.replace(/\n/g, "<br />");
+			setNodeText(xmlParData, "text", newText);
+			setNodeText(xmlParInfo, "level", objValue.level);
+			setNodeText(xmlParInfo, "author", objValue.author);
+			setNodeText(xmlParInfo, "language", objValue.language);
+			return;
+		}
+	}
+}
+
+function editor_openChannal(book, para, channal) {
+	$.post(
+		"../doc/load_channal_para.php",
+		{
+			book: book,
+			para: para,
+			channal: channal,
+		},
+		function (data) {
+			editor_parse_doc_xml(data);
+		}
+	);
+}
+
+function render_channel_info(channel_id){
+	fetch('/api/v2/channel/'+channel_id,{
+        method: 'GET',
+        credentials: 'include',
+        headers: {
+            'Content-Type': 'application/json'
+        }
+    })
+  .then(response => response.json())
+  .then(function(data){
+      console.log(data);
+		let result = data.data;
+		if(data.ok==true){
+			$("#editor_doc_title").html("/" + data.data.owner_info.nickname + "/" + data.data.name);
+		}
+  });
+}
+//open project begin
+var editor_openProjectXmlHttp = null;
+function editor_openProject(strFileId, filetype) {
+	if (window.XMLHttpRequest) {
+		// code for IE7, Firefox, Opera, etc.
+		editor_openProjectXmlHttp = new XMLHttpRequest();
+	} else if (window.ActiveXObject) {
+		// code for IE6, IE5
+		editor_openProjectXmlHttp = new ActiveXObject("Microsoft.XMLHTTP");
+	}
+
+	if (editor_openProjectXmlHttp != null) {
+		var d = new Date();
+		var strLink = "";
+		if (filetype == "db") {
+			strLink = "./project_load_db.php?id=" + strFileId;
+		} else {
+			strLink = "./project_load.php?id=" + strFileId;
+		}
+		editor_openProjectXmlHttp.onreadystatechange = editor_open_project_serverResponse;
+		editor_openProjectXmlHttp.open("GET", strLink, true);
+		editor_openProjectXmlHttp.send(null);
+	} else {
+		alert("Your browser does not support XMLHTTP.");
+	}
+}
+
+function editor_parse_doc_xml(xmlText) {
+	if (window.DOMParser) {
+		parser = new DOMParser();
+		gXmlBookData = parser.parseFromString(xmlText, "text/xml");
+	} else {
+		// Internet Explorer
+
+		gXmlBookData = new ActiveXObject("Microsoft.XMLDOM");
+		gXmlBookData.async = "false";
+		gXmlBookData.loadXML(xmlText);
+	}
+
+	if (gXmlBookData == null) {
+		alert("error:can not load Project. xml obj is null.");
+		return;
+	}
+
+	projectDataParse(gXmlBookData);
+	doc_file_info_get();
+	doc_info_change("accese_time", "");
+	//消息系统初始化
+	let msg_id = doc_head("msg_db_max_id");
+	if (msg_id != "" && !isNaN(msg_id)) {
+		msg_init(msg_id);
+	} else {
+		msg_init(1);
+	}
+	updataDocParagraphList();
+	updataToc();
+	//渲染数据块
+	blockShow(0);
+	//refreshResource();
+	editro_layout_loadStyle();
+}
+
+function editor_open_project_serverResponse() {
+	// 4 = "loaded"
+	if (editor_openProjectXmlHttp.readyState == 4) {
+		if (editor_openProjectXmlHttp.status == 200) {
+			// 200 = "OK"
+			var xmlText = editor_openProjectXmlHttp.responseText;
+			editor_parse_doc_xml(xmlText);
+		} else {
+			$("#sutta_text").html("Problem retrieving data:" + editor_openProjectXmlHttp.statusText);
+		}
+	}
+}
+
+//数据块显示
+function blockShow(id) {
+	xmlBlock = gXmlBookDataBody.getElementsByTagName("block");
+	if (id < xmlBlock.length) {
+		insertBlockToHtml(xmlBlock[id]);
+		t = setTimeout("blockShow(" + (id + 1) + ")", 1);
+		progress = id / xmlBlock.length; //计算比例
+		strProgress = (progress * 100).toFixed(0) + "%"; //计算百分比,保留1位小数
+		document.getElementById("load_progress_num").innerHTML = strProgress; //显示计算结果
+
+		loading.setAttribute("stroke-dashoffset", 255 - progress * 140 + "%");
+	} else {
+		//文档载入完毕
+		strProgress = "OK";
+		loading.setAttribute("stroke-dashoffset", "0%");
+
+		document.getElementById("load_progress_num").innerHTML = strProgress;
+
+		setTimeout("hiddenProgressDiv()", 1000);
+
+		term_array_updata();
+		//单词块响应鼠标消息
+		word_mouse_event();
+
+		//刷新译文中的术语
+		term_updata_translation();
+
+		//自动将逐词译段落切分为句子
+		layout_wbw_auto_cut();
+	}
+}
+
+function word_mouse_event() {
+	$(".word").mouseenter(on_word_mouse_enter);
+	$(".word").mouseleave(on_word_mouse_leave);
+}
+var _curr_mouse_enter_wordid = "";
+//单词快鼠标退出
+function on_word_mouse_leave() {
+	$("#mean_" + _curr_mouse_enter_wordid).html("loading");
+	$("#parts_" + _curr_mouse_enter_wordid).html("loading");
+	$("#partmean_" + _curr_mouse_enter_wordid).html("loading");
+	$("#gramma_" + _curr_mouse_enter_wordid).html("loading");
+	relation_link_hide();
+	if (gRelationSelectWordBegin) {
+		//$(this).css(gCurrWordDivBorder);
+		$(this).css("border", "none");
+	}
+	gCurrMoseEnterWordId = "";
+}
+
+//单词块鼠标进入事件
+var gCurrLookupWord = "";
+//save the broder style when mouse leave recover
+var gCurrWordDivBorder = "none";
+var gWordHeadBarVisible = false;
+var gCurrMoseEnterWordId = "";
+
+/**
+ * 渲染单词意思,拆分,语法下拉菜单
+ * @param {string} id 单词id
+ * 
+ */
+function render_word_menu(id) {
+	$("#word_mean").html(render_word_menu_mean(id));
+	$("#word_parts").html(render_word_menu_parts(id));
+	$("#word_partmean").html(render_word_menu_partmean(id));
+	$("#word_gramma").html(render_word_menu_gramma(id));
+
+	show_word_menu_mean(id);
+	show_word_menu_parts(id);
+	show_word_menu_partmean(id);
+	show_word_menu_gramma(id);
+}
+
+//根据单词长度排序  短词优先
+function sortWordLen(a, b) {
+	return a.length - b.length;
+}
+//渲染单词意思下拉菜单
+function render_word_menu_mean(id, target = 0) {
+	var output = "";
+	var word_real = doc_word("#" + id).val("real");
+	var word_parent = doc_word("#" + id).val("parent");
+	var arrParent = new Array();
+	//检索语基
+	if (word_parent.length > 0) {
+		//arrParent[word_parent]=1;
+	}
+	if (mDict[word_real]) {
+		for (var i in mDict[word_real]) {
+			if (mDict[word_real][i].parent && mDict[word_real][i].parent.length > 0) {
+				if (word_parent != mDict[word_real][i].parent && word_real != mDict[word_real][i].parent) {
+					arrParent[mDict[word_real][i].parent] = 1;
+				}
+			}
+		}
+	}
+	var sWord = new Array();
+	for (var sParent in arrParent) {
+		sWord.push(sParent);
+	}
+	//按照base长度升序
+	sWord.sort(sortWordLen);
+	if (word_parent.length > 0) {
+		sWord.unshift(word_parent);
+	}
+	sWord.unshift(word_real);
+
+	output += "<button ";
+	output += "style='font-size:100%;display:inline-flex; padding:0.1em 0.5em' ";
+	output += "onclick='fieldListChanged(\"" + id + '","mean","")\'>' ;
+	output += gLocal.gui.empty1 ;
+	output += "</button>";
+	output += '<div class="case_dropdown-org">';
+	for (var iWord in sWord) {
+		var pali = sWord[iWord];
+		//该词字典数量
+		var dict_count = 0;
+		if (mDict[pali]) {
+			for (iCount in mDict[pali]) {
+				if (mDict[pali][iCount].mean && mDict[pali][iCount].mean.length > 0) {
+					dict_count++;
+				}
+			}
+		}
+
+		if (pali == word_parent) {
+			output += '<div class="case_dropdown-base">';
+		} else {
+			output += '<div class="case_dropdown-first">';
+		}
+		output +=
+			'<a style="z-index:250; position:absolute; margin-right:2em;" onclick=\'dict_search("' + pali + "\")'>";
+		if (pali == word_parent) {
+			output += "<b>·" + pali + "·</b>";
+		} else {
+			output += pali;
+		}
+		output += "-" + dict_count + "</a>";
+		output += '<span style="z-index:220" class="case_dropdown-title" onclick="submenu_show_detail(this)">';
+		output += '<svg class="icon" style="fill:var(--main-color)"><use xlink:href="svg/icon.svg#ic_add"></use></svg>';
+		output += "</span>";
+		output += "<div class=\"case_dropdown-detail\" style='display:block;'>";
+		var currWordMean = new Array();
+
+		if (mDict[pali]) {
+			for (var i in mDict[pali]) {
+				var objMean = new Object();
+				objMean.type = "";
+				objMean.gramma = "";
+				objMean.dict_name = "";
+				objMean.mean = "";
+				if (mDict[pali][i].type) {
+					objMean.type = mDict[pali][i].type;
+				}
+				if (mDict[pali][i].gramma) {
+					objMean.gramma = mDict[pali][i].gramma;
+				}
+				if (mDict[pali][i].dict_name) {
+					objMean.dict_name = mDict[pali][i].dict_name;
+				}
+				if (mDict[pali][i].mean) {
+					objMean.mean = mDict[pali][i].mean;
+				}
+				if (objMean.mean.length > 0) {
+					_mean_push(currWordMean, objMean);
+				}
+			}
+		}
+		for (var i in currWordMean) {
+			var htmlMean = "";
+			var wId = id;
+			output += "<a style='display:flex; flex-wrap: wrap;'>";
+			output +=
+				"<div id='div_dictname_" + wId + "_" + iWord + "_" + i + "' style='margin-right: auto; display:flex;'>";
+			output +=
+				"<span id='span_dictname_" +
+				wId +
+				"_" +
+				iWord +
+				"_" +
+				i +
+				"' style='height: 1.5em;' class='wm_dictname' >";
+			output += getLocalDictname(currWordMean[i].dict_name) + "</span>";
+			output += "</div>";
+			output +=
+				"<div id='div_type_" + wId + "_" + iWord + "_" + i + "' style='margin-left: 0.4em; display:flex'>";
+			output +=
+				"<span id='span_type_" +
+				wId +
+				"_" +
+				iWord +
+				"_" +
+				i +
+				"' style='height: 1.5em;' class='wm_wordtype'>" +
+				getLocalGrammaStr(currWordMean[i].type) +
+				"</span>";
+
+			for (var iMean in currWordMean[i].mean) {
+				if (currWordMean[i].mean[iMean] != "") {
+					if (target == 0) {
+						htmlMean +=
+							"<span class='wm_one_mean' onclick='fieldListChanged(\"" +
+							wId +
+							'","mean","' +
+							currWordMean[i].mean[iMean] +
+							'" ';
+						//parent 与意思联动
+						if (iWord > 0) {
+							htmlMean += ',"' + pali + '"';
+						}
+						htmlMean += " )'>" + currWordMean[i].mean[iMean] + "</span>";
+					} else {
+						htmlMean +=
+							"<span class='wm_one_mean' onclick='_win_mean_change(\"" +
+							currWordMean[i].mean[iMean] +
+							"\" )'>" +
+							currWordMean[i].mean[iMean] +
+							"</span>";
+					}
+				}
+			}
+			output += "</div>";
+			output += "<div style='width:15em; display:flex; flex-wrap: wrap;'>" + htmlMean + "</div>";
+			output += "</a>";
+		}
+
+		output += "</div></div>";
+	}
+
+	output += "</div>";
+	return output;
+}
+
+function _win_mean_change(newmean) {
+	$("#input_meaning").val(newmean);
+}
+function _mean_push(arr, obj) {
+	var arrMean = obj.mean.split("$");
+
+	var strIndex = obj.dict_name + "-" + obj.type + "-" + obj.gramma;
+	if (arr[strIndex] == null) {
+		arr[strIndex] = new Object();
+		arr[strIndex].dict_name = obj.dict_name;
+		arr[strIndex].type = obj.type;
+		arr[strIndex].gramma = obj.gramma;
+		arr[strIndex].mean = new Array();
+	}
+
+	for (var i = 0; i < arrMean.length; i++) {
+		var found = false;
+		for (var j = 0; j < arr[strIndex].mean.length; j++) {
+			if (arr[strIndex].mean[j] == arrMean[i]) {
+				found = true;
+				break;
+			}
+		}
+		if (!found) {
+			arr[strIndex].mean.push(arrMean[i]);
+		}
+	}
+}
+
+function show_word_menu_mean(id) {
+	var word_menu_div = document.getElementById("mean_" + id);
+	if (word_menu_div) {
+		var menu_div = document.getElementById("word_mean");
+		if (menu_div) {
+			$("#mean_" + id).html($("#word_mean").html());
+		}
+	}
+}
+
+/**
+ * 渲染单词拆分下拉菜单
+ * @param {string} id	单词id
+ * @param {string} target	默认渲染目标 0:主编辑窗口下拉菜 1:编辑窗口下拉菜单
+ * @return {void}
+ */
+function render_word_menu_parts(id, target = 0) {
+	let output = "";
+	let wordID = id;
+	output += "<div>";
+	output += "<button ";
+	output += "style='font-size:100%;display:inline-flex; padding:0.1em 0.5em'";
+	output += "onclick='fieldListChanged(\"" + wordID + '","org","")\'>' ;
+	output += gLocal.gui.empty1 ;
+	output += "</button>";
+	output += "<button ";
+	output += "style='font-size:100%;display:inline-flex; padding:0.1em 0.5em' ";
+	output += "onclick='show_word_map(\"" + wordID + "\")'>" ;
+	output += gLocal.gui.wordmap ;
+	output += "</button>";
+	output += "</div>";
+	let pali = doc_word("#" + id).val("real");
+	let wParent = doc_word("#" + id).val("parent");
+	let wParts = doc_word("#" + id).val("org");
+	let arrParts = new Array();
+	let arrParent = new Array();
+	if (wParent != "") {
+		arrParts[wParent] = 1;
+	}
+	if (target == 1) {
+		arrParts[pali] = 1;
+	}
+	if (typeof mDict[pali] !== "undefined") {
+		for (const word of mDict[pali]) {
+			if (!isEmpty(word.factors)) {
+				arrParts[word.factors] = 1;
+			}
+			if (!isEmpty(word.parent)) {
+				arrParent[word.parent] = 1;
+			}			
+		}
+	}
+	//加入base拆分
+	if (mDict[wParent]) {
+		let ending = getAutoEnding(pali, wParent);
+		for (const word of mDict[wParent]) {
+			if (word.factors && word.factors != "") {
+				arrParts[word.factors] = 1;
+				{
+					for (let end in ending) {
+						arrParts[word.factors + "+[" + end + "]"] = 1;
+					}
+				}
+			}
+		}
+	}
+
+	output += "<div>";
+	let outputPart = "";
+	for (let sPart in arrParts) {
+		if (wParts == sPart) {
+			outputPart = "<b>" + sPart + "</b>";
+		} else {
+			outputPart = sPart;
+		}
+		if (target == 0) {
+			output += "<a onclick='fieldListChanged(\"" + wordID + '","org","' + sPart + "\")'>" + outputPart + "</a>";
+		} else {
+			output += "<a onclick='mdf_win_part_change(\"" + sPart + "\")'>" + outputPart + "</a>";
+		}
+	}
+	output += "</div>";
+
+	//base parts 信息
+	for (let sParent in arrParent) {
+		if (mDict[sParent]) {
+			let arrParts = new Array();
+			for (const word of mDict[sParent]) {
+				if (word.factors && word.factors != "") {
+					arrParts[word.factors] = 1;
+				}
+			}
+			if (arrParts.length > 0) {
+				output += '<div class="case_dropdown-org">';
+				output += '<div class="case_dropdown-first">';
+				output += "<a style='z-index:250; position:absolute; margin-right:2em;'>";
+				output += sParent + "</a>";
+				output += "<span style='z-index:220' class='case_dropdown-title'>";
+				output += gLocal.gui.more + "»</span>";
+				output += "</div>";
+
+				output += "<div>";
+				for (const sPart in arrParts) {
+					if (Object.hasOwnProperty.call(arrParts, sPart)) {
+						output += "<a onclick='fieldListChanged(\"" + wordID + '","org","' + sPart + "\")'>";
+						output += sPart ;
+						output += "</a>";
+					}
+				}
+				output += "</div>";
+
+				output += "</div>";
+			}
+		}
+	}
+	return output;
+}
+function show_word_menu_parts(id) {
+	var word_parts_div = document.getElementById("parts_" + id);
+	if (word_parts_div) {
+		var parts_div = document.getElementById("word_parts");
+		if (parts_div) {
+			//word_menu_div.appendChild(menu_div);
+			$("#parts_" + id).html($("#word_parts").html());
+		}
+	}
+}
+
+/**
+ * 渲染单词拆分意思下拉菜单
+ * @param {string} id 单词id
+ * @returns {string} html string
+ */
+function render_word_menu_partmean(id) {
+	let wordID = id;
+	let sHtml = "";
+	let pali = doc_word("#" + id).val("real");
+	let sOrg = doc_word("#" + id).val("org");
+	let currDefualtFM = getAutoFactorMeaning(sOrg);
+	
+	sHtml += "<button ";
+	sHtml += "style='font-size:100%;display:inline-flex; padding:0.1em 0.5em' ";
+	sHtml += "onclick='fieldListChanged(\"" + wordID + '","om","")\'>' ;
+	sHtml += gLocal.gui.empty1 ;
+	sHtml += "</button>";
+	sHtml += "<a onclick='fieldListChanged(\"" + wordID + '","om","[a]' + currDefualtFM + "\")'>";
+	sHtml += "[" + gLocal.gui.auto + "]" ;
+	sHtml += currDefualtFM ;
+	sHtml += "</a>";
+
+	var arrPartMean = new Array();
+	if (mDict[pali]) {
+		for (var i in mDict[pali]) {
+			if (mDict[pali][i].partmean && mDict[pali][i].partmean.length > 0) {
+				arrPartMean[mDict[pali][i].partmean] = 1;
+			}
+		}
+	}
+	for (var sPM in arrPartMean) {
+		sHtml += "<a onclick='fieldListChanged(\"" + wordID + '","om","' + sPM + "\")'>" + sPM + "</a>";
+	}
+	return sHtml;
+}
+
+/*
+渲染单词语基下拉菜单
+id	单词id
+
+
+return	无
+*/
+function render_word_menu_parent(id) {
+	let output = "";
+	let word_real = doc_word("#" + id).val("real");
+	let word_parent = doc_word("#" + id).val("parent");
+	let arrParent = new Array();
+	//检索语基
+	if (word_parent != "") {
+		arrParent[word_parent] = 1;
+	}
+	if (mDict[word_real]) {
+		for (let i in mDict[word_real]) {
+			if (mDict[word_real][i].parent && mDict[word_real][i].parent.length > 0) {
+				arrParent[mDict[word_real][i].parent] = 1;
+			}
+		}
+	}
+	let sWord = new Array();
+	for (let sParent in arrParent) {
+		sWord.push(sParent);
+	}
+	//按照base长度升序
+	sWord.sort(sortWordLen);
+	if (!str_in_array(word_real, sWord)) {
+		sWord.push(word_real);
+	}
+	output += "<a onclick=\"ParentLookup('"+$("#id_text_parent").val()+"')\">🔍" +gLocal.gui.dict +"</a>";
+
+	for (var iWord in sWord) {
+		var pali = sWord[iWord];
+		output += "<a onclick=\"mdf_win_data_change('id_text_parent','" + pali + "')\">";
+		if (word_parent == pali) {
+			output += "<b>" + pali + "</b>";
+		} else {
+			output += pali;
+		}
+		output += "</a>";
+	}
+	return output;
+}
+/*
+渲染单词语基下拉菜单
+id	单词id
+
+
+return	无
+*/
+function render_word_menu_parent_parent(id) {
+	let output = "";
+	let word_parent = doc_word("#" + id).val("parent");
+	let word_parent2 = doc_word("#" + id).val("parent2");
+	let word_pg = doc_word("#" + id).val("pg");
+	let arrParent = new Array();
+	//检索语基
+	if (word_parent2 != "") {
+		//arrParent[word_parent2+"#"+word_pg] = 1;
+	}
+	if (mDict[word_parent]) {
+		for (let i in mDict[word_parent]) {
+			if (mDict[word_parent][i].parent && mDict[word_parent][i].parent!=word_parent && mDict[word_parent][i].parent.length > 0) {
+				arrParent[mDict[word_parent][i].parent+"#"+mDict[word_parent][i].gramma] = 1;
+			}
+		}
+	}
+	let sWord = new Array();
+	for (const key in arrParent) {
+		if (arrParent.hasOwnProperty.call(arrParent, key)) {
+			sWord.push(key);
+		}
+	}
+
+
+	if($("#id_text_prt_prt").val()!=""){
+		output += "<a onclick=\"ParentLookup('"+$("#id_text_prt_prt").val()+"')\">🔍" +gLocal.gui.dict +"</a>";
+	}
+	output += "<a onclick=\"parent_parent_changed('','')\">清空</a>";
+
+	for (const it of sWord) {
+		let pali = it.split("#");
+		if(pali.length<2){
+			pali[1]="";
+		}
+		output += "<a onclick=\"parent_parent_changed('" + pali[0] + "','" + pali[1] + "')\" style='display:flex;justify-content: space-between;'>";
+		if (word_parent2 == pali[0]) {
+			output += "<b>" + pali[0] + "</b>";
+		} else {
+			output += "<span>" +pali[0]+ "</span>";
+		}
+		output += "<span style='background-color: wheat;'>" +pali[1]+ "</span>";
+		output += "</a>";		
+	}
+	for (let iWord in sWord) {
+
+	}
+	return output;
+}
+
+function parent_parent_changed(spell,grammar){
+	mdf_win_data_change('id_text_prt_prt',spell);
+	edit_parent_grammar_changed(grammar);
+}
+
+function ParentLookup(word){
+	window.open("../dict/index.php?builtin=true&theme=dark&key="+word,target="dict");
+}
+function show_word_menu_partmean(id) {
+	var word_partmean_div = document.getElementById("partmean_" + id);
+	if (word_partmean_div) {
+		var partmean_div = document.getElementById("word_partmean");
+		if (partmean_div) {
+			//word_menu_div.appendChild(menu_div);
+			$("#partmean_" + id).html($("#word_partmean").html());
+		}
+	}
+}
+
+//语法按照信心指数排序
+function sortWordConfidence(a, b) {
+	return b - a;
+}
+/*渲染语法菜单
+//@param 
+	target 
+		0:主窗口
+		1:编辑窗口
+			
+*/
+function render_word_menu_gramma(id, target = 0) {
+	var wordID = id;
+	var sHtml = "";
+	var pali = doc_word("#" + id).val("real");
+
+	var arrGramma = new Array();
+	if (mDict[pali]) {
+		for (var i in mDict[pali]) {
+			var type = mDict[pali][i].type;
+			var gramma = mDict[pali][i].gramma;
+			if ((type && type.length > 0) || (gramma && gramma.length > 0)) {
+				var sCase = type + "#" + gramma;
+				if (arrGramma[sCase]) {
+					if (mDict[pali][i].confidence > arrGramma[sCase]) {
+						arrGramma[sCase] = mDict[pali][i].confidence;
+					}
+				} else {
+					arrGramma[sCase] = 1;
+				}
+			}
+		}
+	}
+	arrGramma.sort(sortWordConfidence);
+
+	for (var sGramma in arrGramma) {
+		var sLocalCase = getLocalGrammaStr(sGramma);
+		if (target == 0) {
+			sHtml +=
+				"<a onclick='fieldListChanged(\"" +
+				wordID +
+				'","case","' +
+				sGramma +
+				"\")'>" +
+				cutString(sLocalCase, 30) +
+				"</a>";
+		} else {
+			sHtml += "<a onclick='mdf_win_case_change(\"" + sGramma + "\")'>" + cutString(sLocalCase, 30) + "</a>";
+		}
+	}
+	return sHtml;
+}
+
+function show_word_menu_gramma(id) {
+	var gramma_div = document.getElementById("gramma_" + id);
+	if (gramma_div) {
+		var word_gramma_div = document.getElementById("word_gramma");
+		if (word_gramma_div) {
+			//word_menu_div.appendChild(menu_div);
+			$("#gramma_" + id).html($("#word_gramma").html());
+		}
+	}
+}
+
+function hiddenProgressDiv() {
+	document.getElementById("loading_bar").style.animation = "opacityGo 1s both";
+}
+
+function editor_project_updataProjectInfo() {
+	var strInfo = "";
+	var iInlineDictCount = gXmlBookDataInlineDict.getElementsByTagName("word").length;
+	var iWordCount = gXmlBookDataBody.getElementsByTagName("word").length;
+	strInfo += gLocal.gui.wordnum + iWordCount + "<br />";
+	strInfo += gLocal.gui.para + ":" + gArrayDocParagraph.length + "<br />";
+	strInfo += gLocal.gui.innerdict + ":" + iInlineDictCount + "<br />";
+	strInfo += gLocal.gui.vocabulary + CountVocabulary() + "<br />";
+
+	//document.getElementById("id_editor_project_infomation").innerHTML = strInfo;
+	//document.getElementById("doc_info_title").value = getNodeText(gXmlBookDataHead, "doc_title");
+	document.getElementById("editor_doc_title").innerHTML = getNodeText(gXmlBookDataHead, "doc_title");
+	document.getElementById("file_title").innerHTML = getNodeText(gXmlBookDataHead, "doc_title");
+}
+
+//import old ver file
+
+var editor_importOldVerXmlHttp = null;
+function editor_importOldVer(strFileName) {
+	if (window.XMLHttpRequest) {
+		// code for IE7, Firefox, Opera, etc.
+		editor_importOldVerXmlHttp = new XMLHttpRequest();
+	} else if (window.ActiveXObject) {
+		// code for IE6, IE5
+		editor_importOldVerXmlHttp = new ActiveXObject("Microsoft.XMLHTTP");
+	}
+
+	if (editor_importOldVerXmlHttp != null) {
+		var d = new Date();
+		var strLink = "";
+		strLink = "./com_fileopen.php?filename=" + strFileName;
+		if (strLink.length > 0) {
+			editor_importOldVerXmlHttp.onreadystatechange = editor_import_old_ver_serverResponse;
+			editor_importOldVerXmlHttp.open("GET", strLink, true);
+			editor_importOldVerXmlHttp.send(null);
+			//document.getElementById('sutta_text').innerHTML="Importing..."+strFileName;
+		} else {
+			//document.getElementById('sutta_text').innerHTML="无法识别的文件类型";
+		}
+	} else {
+		alert("Your browser does not support XMLHTTP.");
+	}
+}
+
+function editor_import_old_ver_serverResponse() {
+	// 4 = "loaded"
+	if (editor_importOldVerXmlHttp.readyState == 4) {
+		document.getElementById("sutta_text").innerHTML = '<div class="sutta_top_blank"></div>';
+		if (editor_importOldVerXmlHttp.status == 200) {
+			// 200 = "OK"
+			var xmlText = editor_importOldVerXmlHttp.responseText;
+
+			if (window.DOMParser) {
+				parser = new DOMParser();
+				gXmlOldVerData = parser.parseFromString(xmlText, "text/xml");
+			} else {
+				// Internet Explorer
+
+				gXmlOldVerData = new ActiveXObject("Microsoft.XMLDOM");
+				gXmlOldVerData.async = "false";
+				gXmlOldVerData.loadXML(xmlText);
+			}
+
+			if (gXmlOldVerData == null) {
+				alert("error:can not load. xml obj is null.");
+				return;
+			}
+
+			oldVerDataParse(gXmlOldVerData);
+		} else {
+			document.getElementById("sutta_text").innerHTML =
+				"Problem retrieving data:" + editor_openProjectXmlHttp.statusText;
+		}
+	}
+}
+
+//在段落前设置或取消分页
+function editor_page_break(obj, book, par) {
+	if (obj.checked) {
+		document.getElementById("par_" + book + "_" + par).style.pageBreakBefore = "always";
+	} else {
+		document.getElementById("par_" + book + "_" + par).style.pageBreakBefore = "auto";
+	}
+}
+
+function editor_heading_change(obj, book, par) {
+	document.getElementById("content").innerHTML = "";
+	allBlock = gXmlBookDataBody.getElementsByTagName("block");
+	for (var iBlock = 0; iBlock < allBlock.length; iBlock++) {
+		xmlParInfo = allBlock[iBlock].getElementsByTagName("info")[0];
+		xmlParData = allBlock[iBlock].getElementsByTagName("data")[0];
+
+		bookId = getNodeText(xmlParInfo, "book");
+		paragraph = getNodeText(xmlParInfo, "paragraph");
+		type = getNodeText(xmlParInfo, "type");
+		if (bookId == book && paragraph == par && type == "heading") {
+			setNodeText(xmlParInfo, "level", obj.value);
+		}
+	}
+	updataHeadingBlockInHtml(book, par);
+	updataToc();
+}
+
+function editor_par_show(obj, book, par) {
+	parId = "par_" + book + "_" + (par - 1);
+	if (obj.checked) {
+		document.getElementById(parId).style.display = "block";
+	} else {
+		document.getElementById(parId).style.display = "none";
+	}
+
+	var rootIndex = -1;
+	var rootLevel = -1;
+	allBlock = gXmlBookDataBody.getElementsByTagName("block");
+	for (var iBlock = 0; iBlock < allBlock.length; iBlock++) {
+		xmlParInfo = allBlock[iBlock].getElementsByTagName("info")[0];
+		xmlParData = allBlock[iBlock].getElementsByTagName("data")[0];
+
+		bookId = getNodeText(xmlParInfo, "book");
+		paragraph = getNodeText(xmlParInfo, "paragraph");
+		type = getNodeText(xmlParInfo, "type");
+		if (bookId == book && paragraph == par && type == "heading") {
+			rootIndex = iBlock;
+			rootLevel = getNodeText(xmlParInfo, "level");
+			break;
+		}
+	}
+
+	var opBegin = false;
+	for (var iBlock = rootIndex + 1; iBlock < allBlock.length; iBlock++) {
+		xmlParInfo = allBlock[iBlock].getElementsByTagName("info")[0];
+		xmlParData = allBlock[iBlock].getElementsByTagName("data")[0];
+
+		bookId = getNodeText(xmlParInfo, "book");
+		paragraph = getNodeText(xmlParInfo, "paragraph");
+		type = getNodeText(xmlParInfo, "type");
+		if (type == "heading") {
+			currLevel = getNodeText(xmlParInfo, "level");
+			if (currLevel == 0 || currLevel > rootLevel) {
+				opBegin = true;
+				parId = "par_" + bookId + "_" + (paragraph - 1);
+				if (obj.checked) {
+					document.getElementById(parId).style.display = "block";
+				} else {
+					document.getElementById(parId).style.display = "none";
+				}
+			} else {
+				if (opBegin) {
+					break;
+				}
+			}
+		}
+	}
+}
+
+function editor_right_tool_bar_slide_toggle() {
+	if (document.getElementById("right_tool_bar").style.left == "100%") {
+		document.getElementById("right_tool_bar").style.display = "block";
+		document.getElementById("right_tool_bar").style.left = "calc(100% - 28vw)";
+		document.getElementById("right_tool_bar").style.width = "28vw";
+	} else {
+		document.getElementById("right_tool_bar").style.left = "100%";
+	}
+}
+function right_panal_slide_toggle(idPanal) {
+	if ($("#" + idPanal).hasClass("act")) {
+		document.getElementById("right_tool_bar").style.display = "block";
+		document.getElementById("right_tool_bar").style.left = "calc(100% - 28vw)";
+		document.getElementById("right_tool_bar").style.width = "28vw";
+	} else {
+		document.getElementById("right_tool_bar").style.left = "100%";
+	}
+}
+
+function editor_show_right_tool_bar(visible) {
+	if (visible) {
+		document.getElementById("right_tool_bar").style.display = "block";
+		document.getElementById("right_tool_bar").style.left = "calc(100% - 28vw)";
+		document.getElementById("right_tool_bar").style.width = "28vw";
+	} else {
+		document.getElementById("right_tool_bar").style.left = "100%";
+	}
+}
+
+function editor_goto_link(bookId, parNo, strLink = "") {
+	parIndex = getParIndex(bookId, parNo);
+	scrollEventLock = true;
+	setNewView(parIndex - 3, parIndex + 6);
+	scrollEventLock = false;
+	if (strLink == "") {
+		window.location.assign("#par_begin_" + bookId + "_" + (parNo - 1));
+	} else {
+		window.location.assign("#" + strLink);
+	}
+}
+
+function get_language_order(strLanguage) {
+	for (iLan in dict_language_order) {
+		if (dict_language_order[iLan] == strLanguage) {
+			return iLan;
+		}
+	}
+	return 1000;
+}
+
+function removeAllInlinDictItem() {
+	var count;
+	var xAllWord = gXmlBookDataInlineDict.getElementsByTagName("word");
+	count = xAllWord.length;
+	while (xAllWord.length) {
+		gXmlBookDataInlineDict.removeChild(xAllWord[0]);
+	}
+	g_DictWordList = new Array();
+	return count;
+}
+
+function editor_refresh_inline_dict(word) {
+	currMatchingDictNum = 0;
+	g_dictFindParentLevel = 0;
+	g_dictFindAllDone = false;
+
+	g_dict_search_one_dict_done = editor_dict_one_dict_done;
+	g_dict_search_all_done = editor_dict_all_done;
+	g_dict_search_one_pass_done = null;
+
+	dict_mark_word_list_done();
+	dict_push_word_to_download_list(word, 0);
+
+	var arrBuffer = dict_get_search_list();
+	if (arrBuffer.length > 0) {
+		g_CurrDictBuffer = JSON.stringify(arrBuffer);
+		dict_mark_word_list_done();
+		editor_dict_match();
+	} else {
+		document.getElementById("editor_doc_notify").innerHTML = "no new part";
+	}
+}
+
+function win_close(id) {
+	document.getElementById(id).style.display = "none";
+}
+
+/**
+ * 利用下拉菜单修改单词信息
+ * @param {string} inWordId 单词id
+ * @param {string} inField 要修改的字段名
+ * @param {string} inChangeTo 改为某个值
+ * @param {string} sParent 
+ */
+function fieldListChanged(inWordId, inField, inChangeTo, sParent = null) {
+	let xAllWord = gXmlBookDataBody.getElementsByTagName("word");
+	let wordIndex = getWordIndex(inWordId);
+	let arr_id_word = inWordId.split("-");
+	let book = arr_id_word[0].slice(1);
+	let paragraph = arr_id_word[1];
+
+	setNodeText(xAllWord[wordIndex], "status", "7");
+	setNodeAttr(xAllWord[wordIndex], inField, "status", "7");
+
+	if (inField == "om") {
+		/*拆分意思去掉开头的[a]*/
+		inChangeTo = inChangeTo.replace("[a]", "");
+	}
+	setNodeText(xAllWord[wordIndex], inField, inChangeTo);
+	if (sParent) {
+		setNodeText(xAllWord[wordIndex], "parent", sParent);
+	}
+
+	//提交用户逐词解析数据库
+	user_wbw_push_word(inWordId);
+	user_wbw_commit();
+
+	//新的拆分查字典
+	if(inField == "org"){
+		let parts = inChangeTo.split('+');
+		dictFetch(parts,function(){
+			render_word_menu(inWordId);
+		})
+	}
+
+	//准备消息数据
+	let d = new Date();
+	let msg_doc_id;
+	if (doc_info.sendmsg) {
+		if (doc_info.parent_id != "") {
+			msg_doc_id = doc_info.parent_id;
+		} else {
+			msg_doc_id = doc_info.doc_id;
+		}
+		let msg_data = new Object();
+		msg_data.id = inWordId;
+		msg_data[inField] = inChangeTo;
+		msg_data.status = 7;
+		msg_push(1, JSON.stringify(msg_data), msg_doc_id, d.getTime(), book, paragraph);
+	}
+	modifyWordDetailByWordIndex(wordIndex);
+
+	//modify other same word with auto-mark
+	var word = getNodeText(xAllWord[wordIndex], "real");
+	for (var i = wordIndex + 1; i < xAllWord.length; i++) {
+		let status = getNodeText(xAllWord[i], "status");
+		if (status != 7) {
+			if (getNodeText(xAllWord[i], "real") == word) {
+				setNodeText(xAllWord[i], inField, inChangeTo);
+				if (sParent) {
+					setNodeText(xAllWord[i], "parent", sParent);
+				}
+				setNodeText(xAllWord[i], "status", "5");
+				//准备消息数据
+				if (doc_info.sendmsg) {
+					let wordid = getNodeText(xAllWord[i], "id");
+					let msg_data = new Object();
+					msg_data.id = wordid;
+					msg_data[inField] = inChangeTo;
+					msg_data.status = 5;
+					msg_push(1, JSON.stringify(msg_data), msg_doc_id, d.getTime(), book, paragraph);
+				}
+				modifyWordDetailByWordIndex(i);
+			}
+		}
+	}
+}
+
+function editor_word_status_by_id(id, newStatus = null) {
+	var xAllWord = gXmlBookDataBody.getElementsByTagName("word");
+	return editor_word_status(xAllWord[getWordIndex(wordId)]), newStatus;
+}
+function editor_word_status(wElement, newStatus = null) {
+	if (newStatus == null) {
+		var wStatus = getNodeText(wElement, "status");
+		if (wStatus == "") {
+			var oldVerStauts = getNodeText(wElement, "bmc");
+			if (oldVerStauts == "") {
+				setNodeText(wElement, "status", "1"); //未处理
+				return 1;
+			} else if (oldVerStauts == "bmca") {
+				setNodeText(wElement, "status", "3"); //自己机器自动
+				return 3;
+			} else {
+				setNodeText(wElement, "status", "7"); //人工
+				return 7;
+			}
+		} else {
+			return wStatus;
+		}
+	} else {
+		setNodeText(wElement, "status", newStatus.toString());
+	}
+}
+
+//载入用户设置
+function editor_setup_load() {
+	$.post(
+		"./user_setup.php",
+		{
+			op: "load",
+		},
+		function (data, status) {
+			if (data.length > 0) {
+				gUserSetup = JSON.parse(data);
+			}
+		}
+	);
+}
+//修改用户设置
+function editor_setup_save(key, value) {
+	$.post(
+		"./user_setup.php",
+		{
+			op: "save",
+			key: key,
+			value: value,
+		},
+		function (data, status) {
+			if (data.length > 0) {
+				gUserSetup = JSON.parse(data);
+			}
+		}
+	);
+}
+
+function tran_sen_save_click(blockid, senBegin, senEnd, obj) {
+	let textareaid = "ta_" + blockid + "_" + senBegin + "_" + senEnd;
+	let newText = $("#" + textareaid).val();
+	tran_sen_save(blockid, senBegin, senEnd, newText);
+}
+function tran_sen_save(blockid, senBegin, senEnd, input) {
+	if (input.length > 0) {
+		//input=input.replace(/\n\n/g,"<br />");
+	}
+	input = term_edit_to_std_str(input);
+	setTranText(blockid, senEnd, input);
+	doc_tran("#" + blockid).text(senBegin, senEnd, "status", 7);
+}
+
+function tran_text_onchange(blockid, senBegin, senEnd, obj) {
+	let newText = obj.value;
+	tran_sen_save(blockid, senBegin, senEnd, newText);
+	//保存到数据库
+	sen_save(blockid, senBegin, senEnd, newText);
+}
+
+/*
+句子失去焦点
+退出编辑状态
+*/
+function tran_sent_div_blur(blockId, senBegin, senEnd, obj) {
+	obj.style.height = "28px";
+}
+function tran_sent_div_onfocus(blockId, senBegin, senEnd, obj) {
+	obj.style.height = "100px";
+}
+//鼠标移到逐句翻译上 编辑状态
+function tran_sent_div_mouseenter(blockId, wordSn) {
+	/*
+		$("#tran_sent_text_div_"+blockId+"_"+wordSn).show();
+		if(_tran_show_preview_on_edit==true){
+			$("#tran_pre_"+blockId+"_"+wordSn).show();
+		}
+		else{
+			$("#tran_pre_"+blockId+"_"+wordSn).hide();
+		}
+		*/
+}
+function set_tran_show_mode(set, obj) {
+	if (set == 1) {
+		_tran_show_preview_on_edit = obj.checked;
+	} else if (set == 2) {
+		_tran_show_textarea_esc_edit = obj.checked;
+		if (obj.checked) {
+			$(".tran_sen_textarea").show();
+		} else {
+			$(".tran_sen_textarea").hide();
+		}
+	}
+}
+
+//按自动查词典按钮
+var _para_list = new Array();
+
+function menu_dict_match1() {
+	let book;
+	let para = new Array();
+	xBlock = gXmlBookDataBody.getElementsByTagName("block");
+	for (const block of xBlock) {
+		xmlParInfo = block.getElementsByTagName("info")[0];
+		xmlParData = block.getElementsByTagName("data")[0];
+		book = getNodeText(xmlParInfo, "book");
+		paragraph = getNodeText(xmlParInfo, "paragraph");
+
+		para[book + "-" + paragraph] = { book: book, para: paragraph };		
+	}
+
+	_para_list = new Array();
+	for (var i in para) {
+		_para_list.push(para[i]);
+	}
+	if (_para_list.length > 0) {
+		auto_match_wbw(0);
+	}
+}
+
+//自动查词典
+function auto_match_wbw(para_index) {
+	$.get(
+		"./dict_find_auto.php",
+		{
+			book: _para_list[para_index].book,
+			para: _para_list[para_index].para,
+		},
+		function (data, status) {
+			if (data.length > 0) {
+				var dict_data = new Array();
+				try {
+					dict_data = JSON.parse(data);
+				} catch (error) {
+					ntf_show("Error:" + error + "<br>" + data);
+				}
+				var counter = 0;
+				var xAllWord = gXmlBookDataBody.getElementsByTagName("word");
+				for (var x = 0; x < xAllWord.length; x++) {
+					let wordStatus = getNodeText(xAllWord[x], "status");
+					if (parseInt(wordStatus) > 3) {
+						//忽略已经被用户修改的词
+						continue;
+					}
+					let wid = getNodeText(xAllWord[x], "id");
+					let aid = wid.split("-");
+					let book = aid[0].substr(1);
+					let para = aid[1];
+					let num = aid[2];
+					for (var i = 0; i < dict_data.length; i++) {
+						if (dict_data[i].book == book && dict_data[i].paragraph == para && dict_data[i].num == num) {
+							if (dict_data[i].type) {
+								setNodeText(xAllWord[x], "type", dict_data[i].type);
+							}
+							if (dict_data[i].gramma) {
+								setNodeText(xAllWord[x], "gramma", dict_data[i].gramma);
+							}
+							setNodeText(xAllWord[x], "case", dict_data[i].type + "#" + dict_data[i].gramma);
+							if (dict_data[i].mean) {
+								setNodeText(xAllWord[x], "mean", dict_data[i].mean);
+							}
+							if (dict_data[i].parent) {
+								setNodeText(xAllWord[x], "parent", dict_data[i].parent);
+							}
+							if (dict_data[i].parts) {
+								setNodeText(xAllWord[x], "org", dict_data[i].parts);
+							}
+							if (dict_data[i].partmean) {
+								setNodeText(xAllWord[x], "om", dict_data[i].partmean);
+							}
+							setNodeText(xAllWord[x], "status", "3");
+							counter++;
+							modifyWordDetailByWordId(wid);
+							user_wbw_push_word(wid);
+							break;
+						}
+					}
+				}
+				user_wbw_commit();
+			}
+			//计算查字典的进度
+			var precent = (para_index * 100) / (_para_list.length - 1);
+			ntf_show(
+				gLocal.gui.auto_fill +
+					_para_list[para_index].book +
+					"-" +
+					_para_list[para_index].para +
+					"-" +
+					precent.toFixed(1) +
+					"%" +
+					gLocal.gui.finished
+			);
+			para_index++;
+			if (para_index < _para_list.length) {
+				auto_match_wbw(para_index);
+			}
+		}
+	);
+}
+
+function isEmpty(val){
+	if(typeof val == "undefined" || val == null || val ==""){
+		return true;
+	}else{
+		return false;
+	}
+}
+/**
+ * 自动填充单词
+ * @param {string} word 需要自动填充的单词
+ */
+function FillAllWord(word=''){
+	let counter = 0;
+	let xAllWord = gXmlBookDataBody.getElementsByTagName("word");
+	for (let x = 0; x < xAllWord.length; x++) {
+		let wordStatus = getNodeText(xAllWord[x], "status");
+		if (parseInt(wordStatus) > 3) {
+			//忽略已经被用户修改的词
+			continue;
+		}
+		let wid = getNodeText(xAllWord[x], "id");
+		let real = getNodeText(xAllWord[x], "real");
+		if(word !== ''){
+			if(word !== real){
+				continue;
+			}
+		}
+		let aid = wid.split("-");
+		let book = aid[0].substr(1);
+		let para = aid[1];
+		let num = aid[2];
+		if (mDict.hasOwnProperty(real)) {
+			setNodeText(xAllWord[x], "parent", "");			
+			console.log('setNodeAttr',setNodeAttr(xAllWord[x], "type",'status',0)) ;
+			setNodeAttr(xAllWord[x], "gramma",'status',0);
+			setNodeAttr(xAllWord[x], "case",'status',0);
+			setNodeAttr(xAllWord[x], "parent",'status',0);
+			setNodeAttr(xAllWord[x], "mean",'status',0);
+			setNodeAttr(xAllWord[x], "org",'status',0);
+			setNodeAttr(xAllWord[x], "om",'status',0);
+
+			for (const iterator of mDict[real]) {
+				if (getNodeAttr(xAllWord[x], "type",'status') == '0' && !isEmpty(iterator.type)) {
+					setNodeText(xAllWord[x], "type", iterator.type);
+					setNodeAttr(xAllWord[x], "type",'status',3);
+					console.log('type:',iterator.type);
+
+					if (!isEmpty(iterator.grammar)) {
+						setNodeText(xAllWord[x], "gramma", iterator.grammar);
+						setNodeAttr(xAllWord[x], "gramma",'status',3);
+					}
+					setNodeText(xAllWord[x], "case", iterator.type + "#" + iterator.grammar);
+					setNodeAttr(xAllWord[x], "case",'status',3);
+					if (!isEmpty(iterator.parent)) {
+						setNodeText(xAllWord[x], "parent", iterator.parent);
+						setNodeAttr(xAllWord[x], "parent",'status',3);
+					}
+				}
+
+				if (getNodeAttr(xAllWord[x], "parent",'status') == '0' && !isEmpty(iterator.parent)) {
+					setNodeText(xAllWord[x], "parent", iterator.parent);
+					setNodeAttr(xAllWord[x], "parent",'status',3);
+					console.log('parent:',iterator.parent);
+
+				}
+
+				if (getNodeAttr(xAllWord[x], "mean",'status') == '0' && !isEmpty(iterator.mean)) {
+					setNodeText(xAllWord[x], "mean", iterator.mean);
+					setNodeAttr(xAllWord[x], "mean",'status',3);
+					console.log('mean:',iterator.mean);
+
+				}
+
+				if (getNodeAttr(xAllWord[x], "org",'status') == '0' && !isEmpty(iterator.factors)) {
+					setNodeText(xAllWord[x], "org", iterator.factors);
+					setNodeAttr(xAllWord[x], "org",'status',3);
+					console.log('org:',iterator.factors);
+				}
+				if (getNodeAttr(xAllWord[x], "om",'status') == '0' && !isEmpty(iterator.factormean)) {
+					setNodeText(xAllWord[x], "om", iterator.factormean);
+					setNodeAttr(xAllWord[x], "om",'status',3);
+				}
+				   counter++;
+			}
+			setNodeText(xAllWord[x], "status", "3");
+			//查看是否有没匹配上的项目
+			let parts = getNodeText(xAllWord[x], "org").split('+');
+			if(getNodeText(xAllWord[x], "type") == '.cp.'){
+				//复合词,猜测parent 和语法信息
+				if(parts.length>0){
+					let endOfParts = parts[parts.length-1];//末尾的一个单词
+					if(!isEmpty(endOfParts)){
+						if (mDict.hasOwnProperty(endOfParts) && mDict[endOfParts].length>0) {
+							setNodeText(xAllWord[x], "type", mDict[endOfParts][0].type);
+							setNodeText(xAllWord[x], "gramma", mDict[endOfParts][0].grammar);
+							setNodeText(xAllWord[x], "case", mDict[endOfParts][0].type + "#" + mDict[endOfParts][0].grammar);
+							setNodeAttr(xAllWord[x], "case",'status',3);
+							if(isEmpty(getNodeText(xAllWord[x], "parent"))){
+								inline_dict_auto_case(real);
+								for (const iterator of mDict[real]) {
+									if(iterator.type == mDict[endOfParts][0].type && 
+									   iterator.grammar == mDict[endOfParts][0].grammar){
+										setNodeText(xAllWord[x], "parent", iterator.parent);
+										setNodeAttr(xAllWord[x], "parent",'status',3);
+										break;
+									}
+								}
+							}	
+						}
+					}
+				}
+			}
+			let fm = "";
+			if(isEmpty(getNodeText(xAllWord[x], "om"))){
+				//根据拆分,自动给出拆分意思
+				fm = getAutoFactorMeaning(getNodeText(xAllWord[x], "org"));
+				setNodeText(xAllWord[x], "om", fm);
+				setNodeAttr(xAllWord[x], "om",'status',3);
+			}
+			if(isEmpty(getNodeText(xAllWord[x], "mean"))){
+				//先查parent
+				let parent = getNodeText(xAllWord[x], "parent");
+				if(!isEmpty(parent) && mDict.hasOwnProperty(parent)){
+					for (const iterator of mDict[parent]) {
+						if(!isEmpty(iterator.mean)){
+							setNodeText(xAllWord[x], "mean", iterator.mean);
+							setNodeAttr(xAllWord[x], "mean",'status',3);
+							break;
+						}
+					}
+				}
+			}
+			if(isEmpty(getNodeText(xAllWord[x], "mean"))){
+				//根据拆分,自动给出整体意思
+				console.log('meaning empty '+getNodeText(xAllWord[x], "mean"));
+				setNodeText(xAllWord[x], "mean", fm.replace(/\+/g,' '));
+				setNodeAttr(xAllWord[x], "mean",'status',3);
+			}
+			console.log('auto fill:'+real);
+			outputFilder('type:',getNodeText(xAllWord[x], "type"));
+			outputFilder('gramma:',getNodeText(xAllWord[x], "gramma"));
+			outputFilder('parent:',getNodeText(xAllWord[x], "parent"));
+			outputFilder('mean:',getNodeText(xAllWord[x], "mean"));
+			outputFilder('org:',getNodeText(xAllWord[x], "org"));
+			outputFilder('om:',getNodeText(xAllWord[x], "om"));
+
+			modifyWordDetailByWordId(wid);
+			user_wbw_push_word(wid);	
+		}
+	}
+}
+
+
+function outputFilder(filder,value){
+	if(isEmpty(value)){
+		console.log("%c"+filder+"empty" ,"color:red;");
+	}else{
+		console.log(filder,value);
+	}
+}
+
+//旧版本的xml解析
+function oldVerDataParse(oldXmlData) {
+	createXmlDoc();
+	newBlockString = "<root><block><info></info><data></data></block></root>";
+	if (window.DOMParser) {
+		parser = new DOMParser();
+		newXmlBlock = parser.parseFromString(newBlockString, "text/xml");
+	} else {
+		// Internet Explorer
+		newXmlBlock = new ActiveXObject("Microsoft.XMLDOM");
+		newXmlBlock.async = "false";
+		newXmlBlock.loadXML(newBlockString);
+	}
+
+	if (newXmlBlock == null) {
+		alert("error:can not load book index.");
+		return;
+	}
+
+	var titleBlockInfo = new Array();
+	var titleInfo = new Object();
+	titleInfo.language = "pali";
+	titleInfo.author = "author";
+	titleBlockInfo.push(titleInfo);
+	var titleInfo = new Object();
+	titleInfo.language = "en";
+	titleInfo.author = "author";
+	titleBlockInfo.push(titleInfo);
+	var titleInfo = new Object();
+	titleInfo.language = "zh";
+	titleInfo.author = "author";
+	titleBlockInfo.push(titleInfo);
+
+	var iPara = 1;
+	var BookId = com_guid();
+	var x = gXmlOldVerData.getElementsByTagName("sutta");
+	for (var i = 0; i < x.length; i++) {
+		//title begin
+		xTitle = x[i].getElementsByTagName("title");
+		/*if title node is */
+		if (xTitle.length > 0) {
+			/*text of title*/
+			var xTitleText = xTitle[0].getElementsByTagName("text");
+			if (xTitleText.length > 0) {
+				for (var iTitleText = 0; iTitleText < xTitleText.length; iTitleText++) {
+					cloneBlock = newXmlBlock.cloneNode(true);
+					newBlock = cloneBlock.getElementsByTagName("block")[0];
+					xmlNewInfo = newBlock.getElementsByTagName("info")[0];
+					xmlNewData = newBlock.getElementsByTagName("data")[0];
+
+					var titleLangauge = "en";
+					var titleAuthor = "unkow";
+					var xTitleTextInfo = xTitleText[iTitleText].getElementsByTagName("info");
+					if (xTitleTextInfo.length > 0) {
+						titleLangauge = getNodeText(xTitleTextInfo[0], "language");
+						titleAuthor = getNodeText(xTitleTextInfo[0], "tranAuthor");
+					}
+					var strTitle = getNodeText(xTitleText[iTitleText], "data");
+
+					setNodeText(xmlNewInfo, "type", "heading");
+					setNodeText(xmlNewInfo, "paragraph", iPara.toString());
+					setNodeText(xmlNewInfo, "book", BookId);
+					setNodeText(xmlNewInfo, "author", "kosalla");
+					setNodeText(xmlNewInfo, "language", titleLangauge);
+					setNodeText(xmlNewInfo, "edition", "0");
+					setNodeText(xmlNewInfo, "subedition", "0");
+					setNodeText(xmlNewInfo, "level", "1");
+					setNodeText(xmlNewInfo, "id", com_guid());
+					setNodeText(xmlNewData, "text", strTitle);
+					gXmlBookDataBody.appendChild(newBlock);
+				}
+			}
+			/*end of text of title*/
+		}
+		//end of title
+
+		xParagraph = x[i].getElementsByTagName("paragraph");
+		for (var j = 0; j < xParagraph.length; j++) {
+			//toc begin
+			if (j > 0) {
+				for (var iTran = 0; iTran < titleBlockInfo.length; iTran++) {
+					cloneBlock = newXmlBlock.cloneNode(true);
+					newBlock = cloneBlock.getElementsByTagName("block")[0];
+					xmlNewInfo = newBlock.getElementsByTagName("info")[0];
+					xmlNewData = newBlock.getElementsByTagName("data")[0];
+
+					titleLangauge = titleBlockInfo[iTran].language;
+					titleAuthor = titleBlockInfo[iTran].author;
+					var strTitle = "new title";
+
+					setNodeText(xmlNewInfo, "type", "heading");
+					setNodeText(xmlNewInfo, "paragraph", iPara.toString());
+					setNodeText(xmlNewInfo, "book", BookId);
+					setNodeText(xmlNewInfo, "author", titleAuthor);
+					setNodeText(xmlNewInfo, "language", titleLangauge);
+					setNodeText(xmlNewInfo, "edition", "0");
+					setNodeText(xmlNewInfo, "subedition", "0");
+					setNodeText(xmlNewInfo, "level", "0");
+					setNodeText(xmlNewInfo, "id", com_guid());
+					setNodeText(xmlNewData, "text", strTitle);
+					gXmlBookDataBody.appendChild(newBlock);
+				}
+			}
+			//toc end
+			//word by word paragraph begin
+			xPali = xParagraph[j].getElementsByTagName("palipar");
+			if (xPali.length > 0) {
+				cloneBlock = newXmlBlock.cloneNode(true);
+				newBlock = cloneBlock.getElementsByTagName("block")[0];
+				xmlNewInfo = newBlock.getElementsByTagName("info")[0];
+				xmlNewData = newBlock.getElementsByTagName("data")[0];
+				setNodeText(xmlNewInfo, "type", "wbw");
+				setNodeText(xmlNewInfo, "paragraph", iPara.toString());
+				setNodeText(xmlNewInfo, "book", BookId);
+				setNodeText(xmlNewInfo, "author", "kosalla");
+				setNodeText(xmlNewInfo, "edition", "0");
+				setNodeText(xmlNewInfo, "subedition", "0");
+				setNodeText(xmlNewInfo, "id", com_guid());
+				xWord = xPali[0].getElementsByTagName("word"); //如果只有一个palipar
+				/*遍历此段落中所有单词*/
+				var iSen = 0;
+				var strTranWords = "";
+				for (k = 0; k < xWord.length; k++) {
+					newWord = xWord[k].cloneNode(true);
+					xmlNewData.appendChild(newWord);
+				}
+				gXmlBookDataBody.appendChild(newBlock);
+			}
+			//word by word paragraph begin
+
+			/*翻译块开始*/
+			xTran = xParagraph[j].getElementsByTagName("translate");
+			if (xTran.length > 0) {
+				/*text of translate*/
+				var xTranText = xTran[0].getElementsByTagName("text");
+				if (xTranText.length > 0) {
+					for (iTranText = 0; iTranText < xTranText.length; iTranText++) {
+						cloneBlock = newXmlBlock.cloneNode(true);
+						newBlock = cloneBlock.getElementsByTagName("block")[0];
+						xmlNewInfo = newBlock.getElementsByTagName("info")[0];
+						xmlNewData = newBlock.getElementsByTagName("data")[0];
+
+						var tranLangauge = "";
+						var tranAuthor = "";
+						var xTranTextInfo = xTranText[iTranText].getElementsByTagName("info");
+						if (xTranTextInfo.length > 0) {
+							tranLangauge = getNodeText(xTranTextInfo[0], "language");
+							tranAuthor = getNodeText(xTranTextInfo[0], "author");
+						}
+						var strTran = getNodeText(xTranText[iTranText], "data");
+
+						setNodeText(xmlNewInfo, "type", "translate");
+						setNodeText(xmlNewInfo, "paragraph", iPara.toString());
+						setNodeText(xmlNewInfo, "book", BookId);
+						setNodeText(xmlNewInfo, "author", tranAuthor);
+						setNodeText(xmlNewInfo, "language", tranLangauge);
+						setNodeText(xmlNewInfo, "edition", "0");
+						setNodeText(xmlNewInfo, "subedition", "0");
+						setNodeText(xmlNewInfo, "id", com_guid());
+						newSen = newXmlBlock.createElement("sen");
+						setNodeText(newSen, "a", "");
+						setNodeText(newSen, "text", strTran);
+						xmlNewData.appendChild(newSen);
+						gXmlBookDataBody.appendChild(newBlock);
+					}
+				}
+				/*end of text of translate*/
+			}
+			/*翻译块结束*/
+
+			/*文件内note块开始*/
+			xTran = xParagraph[j].getElementsByTagName("comm");
+			if (xTran.length > 0) {
+				/*text of translate*/
+				var xTranText = xTran[0].getElementsByTagName("text");
+				if (xTranText.length > 0) {
+					for (iTranText = 0; iTranText < xTranText.length; iTranText++) {
+						cloneBlock = newXmlBlock.cloneNode(true);
+						newBlock = cloneBlock.getElementsByTagName("block")[0];
+						xmlNewInfo = newBlock.getElementsByTagName("info")[0];
+						xmlNewData = newBlock.getElementsByTagName("data")[0];
+
+						var tranLangauge = "";
+						var tranAuthor = "";
+						var xTranTextInfo = xTranText[iTranText].getElementsByTagName("info");
+						if (xTranTextInfo.length > 0) {
+							tranLangauge = getNodeText(xTranTextInfo[0], "language");
+							tranAuthor = getNodeText(xTranTextInfo[0], "author");
+						}
+						var strNote = getNodeText(xTranText[iTranText], "data");
+
+						setNodeText(xmlNewInfo, "type", "note");
+						setNodeText(xmlNewInfo, "paragraph", iPara.toString());
+						setNodeText(xmlNewInfo, "book", BookId);
+						setNodeText(xmlNewInfo, "author", tranAuthor);
+						setNodeText(xmlNewInfo, "language", titleLangauge);
+						setNodeText(xmlNewInfo, "edition", "0");
+						setNodeText(xmlNewInfo, "subedition", "0");
+						setNodeText(xmlNewInfo, "id", com_guid());
+						newSen = newXmlBlock.createElement("sen");
+						setNodeText(newSen, "a", "");
+						setNodeText(newSen, "text", strNote);
+						xmlNewData.appendChild(newSen);
+						gXmlBookDataBody.appendChild(newBlock);
+					}
+				}
+				/*end of text of translate*/
+			}
+			/*文件内翻译块结束*/
+
+			iPara++;
+		}
+	}
+	projectDataParse(gXmlBookData);
+	updataToc();
+	refreshResource();
+}
+
+function add_part(part) {
+	$("#input_org").val(part);
+}
+
+function edit_show_prt_prt(obj){
+	let o = obj.getElementsByTagName("svg");
+	if(document.getElementById("edit_detail_prt_prt").style.display=="none"){
+		document.getElementById("edit_detail_prt_prt").style.display="block";
+		o[0].style.transform="rotate(90deg)";
+	}
+	else{
+		document.getElementById("edit_detail_prt_prt").style.display="none";
+		o[0].style.transform="rotate(0deg)";
+	}
+}
+
+function edit_parent_grammar_changed(str){
+	document.getElementById("parent_grammar").innerHTML=getLocalGrammaStr(str);
+	document.getElementById("input_parent_grammar").value=str;
+	
+}

Alguns ficheiros não foram mostrados porque muitos ficheiros mudaram neste diff